在IIS中安全吗?

我有一个运行在IIS下的ASP.NET网页,它使用一个包含单例类的常见程序集。 我是否应该在单例上实现一个锁定机制以使其线程安全? 或者,与Web服务器的任何连接都使用单例的同一个实例吗?

希望我能一致地问这个问题。


.NET单例的通常模式为每个应用程序域创建一个实例。 在asp.net中通常的情况是你有多个线程在同一个应用程序域中运行。 这意味着你可以同时在单例中有多个线程运行代码。

如果它是线程安全的,你必须检查单身人士并确定(尽可能地利用你的能力koffreflectorkoff)。 如果它保留并修改共享资源,或者它封装了方法调用之间存储的某种状态,请注意。

您可能想要在使用锁的第二个单例中包装单例,然后将其调用委托给您无法控制的单例。 这样,您可以更好地控制锁定,而不是使用单个锁阻止对单例的每次调用。 它也会给你带来集中线程代码位置的好处......


如果它是一个静态单例...不,它不是线程安全的。 它是在所有线程中共享的,这些线程都会触及应用程序的实例(所以多重请求将会共享它)。

但是,你使用它的可能不需要线程安全。


在.NET中,可以在不使用锁的情况下实现线程安全Singleton。

链接地址: http://www.djcxy.com/p/42135.html

上一篇: safe in IIS?

下一篇: PHP crypt() function in .Net?