2010-07-25 35 views
1

有一段时间我不知道在编写Web(或WCF)服务时是否将单个数据存储在单例中是一个好主意。目标是在服务的不同调用中重用此信息。 我不知道这些单身人士的生命周期是什么,因为例如当应用程序池被回收时,单身人士不在了。 下一个问题是单身人士的可用性。它是否真的在所有调用中可用,独立于由IIS启动的进程或线程?网络或WCF服务中的单身人士

您认为如何?

谢谢,罗茨科

回答

1

一个singleton的寿命相等或更低的(如果它是延迟加载)到应用程序的生命周期。当应用程序池回收时,应用程序停止,用于存储单例的内存被操作系统回收。

单例将在应用程序的所有线程中可用,但由于它存储在运行此应用程序的进程的内存空间中,所以它不会被其他进程使用。

至于回答你的问题是否在WCF中使用单例模式存储数据是一个好主意,这完全取决于你的场景以及你想要存储的内容以及你希望它在哪里可用。 WCF提供了许多允许您避免静态方法的扩展点。

单身人士的一个缺点是他们很难进行单元测试,因此如果可能的话我通常会尽量避免使用它们。