2010-07-25 40 views
1

有一段時間我不知道在編寫Web(或WCF)服務時是否將單個數據存儲在單例中是一個好主意。目標是在服務的不同調用中重用此信息。 我不知道這些單身人士的生命週期是什麼,因爲例如當應用程序池被回收時,單身人士不在了。 下一個問題是單身人士的可用性。它是否真的在所有調用中可用,獨立於由IIS啓動的進程或線程?網絡或WCF服務中的單身人士

您認爲如何?

謝謝,羅茨科

回答

1

一個singleton的壽命相等或更低的(如果它是延遲加載)到應用程序的生命週期。當應用程序池回收時,應用程序停止,用於存儲單例的內存被操作系統回收。

單例將在應用程序的所有線程中可用,但由於它存儲在運行此應用程序的進程的內存空間中,所以它不會被其他進程使用。

至於回答你的問題是否在WCF中使用單例模式存儲數據是一個好主意,這完全取決於你的場景以及你想要存儲的內容以及你希望它在哪裏可用。 WCF提供了許多允許您避免靜態方法的擴展點。

單身人士的一個缺點是他們很難進行單元測試,因此如果可能的話我通常會盡量避免使用它們。