c# - 在 ASP.NET 3.5 网站中使用静态函数

标签 c# asp.net

我正在构建一个 ASP.NET Web 应用程序,其中使用多个包含静态函数的类来检索数据库值等(基于用户 session ,因此它们的结果是特定于 session 的,而不是应用程序范围内的)。

这些函数也可以从标记中调用,这使得我的 GUI 开发变得快速而简单。

现在我想知道:这是正确的做事方式,还是创建一个包含这些函数的类并在需要时创建该类的实例更好?

当这个网站有很多访问者时会发生什么?如果另一个 session 也调用该函数,则访问者是否必须等到该函数“准备就绪”?或者 IIS 会将工作负载分散到多个线程上吗?

或者这只是取决于个人喜好,应该测试哪种效果最好?

编辑和附加问题:

我正在使用这样的代码:

public class HandyAdminStuff
{
  public static string GetClientName(Guid clientId)
  {
    Client client = new ClientController().GetClientById(clientId);
    return client.Name;
  }
}

此函数完成后,Client 和 ClientController 类会被释放吗?垃圾收集器会处理它们吗?或者它们会继续“生存”并在每次调用函数时增加内存?


** 拜托,我不需要这样的答案:“衡量而不是询问”,我知道这一点。我想从人们那里得到反馈,他们可以根据他们的经验给出一个好的答案,也许还有一些优点或缺点。谢谢。

最佳答案

“如果该函数也被另一个 session 调用,访问者是否必须等到该函数‘准备好’?”

是的。如果您具有线程安全的函数体,或者您在锁定数据库的事务中执行某些数据库操作,则可能会发生这种情况。

看看这些线程:

http://forums.asp.net/t/1933971.aspx?THEORY%20High%20load%20on%20static%20methods%20How%20does%20net%20handle%20this%20situation%20

Does IIS give each connected user a thread?

关于c# - 在 ASP.NET 3.5 网站中使用静态函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23904822/

相关文章:

asp.net - 发送 AJAX 请求到 .aspx 页面并返回 JSON

c# - 使用EF中的复合键查询实体列表

c# - 具有超过 2000 个参数的 ADO.NET 批量插入

c# - C#中字段和属性之间的细微差别

c# - 绑定(bind)到数据表时如何设置gridview列宽

asp.net - 认证子目录访问

c# - 为什么 Excel Interop 会在处理文件后删除图像?

javascript - 在 C# 中创建一个 JavaScript 函数

c# - 是否有用于 C# 的不错的 MongoDB 框架?

c# - 如何将数据写入yaml文件