静态方法在Web开发中是否安全?

时间:2014-01-09 20:47:51

标签: c# asp.net

我使用过静态“帮助”方法&看到其他人使用它们。但它们在像网站这样的多线程环境中是否安全?静态方法是否总是容易受到多个线程同时进入并导致问题的影响?

你什么时候使用它们?

3 个答案:

答案 0 :(得分:7)

是的,它们非常安全。 ASP.NET中有很多例子都有静态方法。 System.Web.HttpUtility是一个完整的类,它只包含静态方法(除了它从System.Object继承的方法)。

要查找的最大红旗是修改共享资源(例如静态属性和/或字段)的静态代码。您可以执行此类更新并安全地对其进行编码,但每当您看到修改共享资源的代码时,它都会导致您暂停并验证它是否已正确完成。

答案 1 :(得分:4)

是的,他们可以安全。

没有副作用的“纯功能”就是一个例子。

答案 2 :(得分:4)

我用:

  • Global.asax.cs中的Application_StartApplication_End方法调用的静态启动和关闭方法:
    • 这些方法比静态构造函数更安全(单线程),用于构造静态数据
    • 但要注意Global的其他静态方法,例如Session_StartApplication_Error,这些方法可能无法序列化。
  • 用于定义扩展方法的静态类
  • 没有副作用的静态方法(处理输入参数并返回结果,不修改全局/静态数据)
  • 显式线程安全的静态函数,例如因为他们在实施中使用lock