我正在构建一个 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 调用,访问者是否必须等到该函数‘准备好’?”
是的。如果您具有线程安全的函数体,或者您在锁定数据库的事务中执行某些数据库操作,则可能会发生这种情况。
看看这些线程:
关于c# - 在 ASP.NET 3.5 网站中使用静态函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23904822/