2009-12-04 78 views
1

在我的代碼中,我檢查一個文件是否存在並將其存儲在asp.net中的Application對象中。在WCF中模擬應用程序

後來我訪問這個布爾值來在我的web服務中執行某些操作。

現在我想在wcf中重寫我的web服務,這裏的情況有所不同。應用程序對象不存在。

執行此任務的最佳方法是什麼: 在網站應用程序啓動時記錄一個布爾值。 它傳遞給我的WCF所以它知道它時,它調用一個函數(不帶布爾是方法參數的一部分)

回答

1

最後的後here提供了一個選項用於調用之間共享狀態:

靜態類總是存在於應用程序的生命週期中。它們是 在WCF中用於​​維護狀態 ,因爲每次進行呼叫或建立新的WCF連接時,它們都不會重新生成 。

+1

應禁止所有編程語言的靜態狀態。 – 2009-12-04 18:25:43

+1

拿了點。像所有錘子一樣,通過靜態功能,您可以建造房屋或粉碎拇指。 – 2009-12-04 18:59:10

1

很多人沒有意識到,WCF支持依賴注入(DI)模式,如構造器注入沒有太多的麻煩。

定義一個封裝你想知道的知識(布爾值)的類,並將該類的一個實例注入到WCF服務中,並詢問它的值(以及其他任何你想知道的)。

如果您將注入的類作爲長壽命對象(通常稱爲Singleton,但不要與Singleton設計模式混淆),您可以繼續詢問有關該值的信息,每次都有同樣的答案。

在許多其他事情中,this post描述瞭如何在沒有默認構造函數時將依賴注入到WCF服務實現中。

1

ASP.NET中的Application對象主要用於向後兼容傳統的ASP應用程序。

它實質上是一個靜態的Dictionary<string, object>與鎖定語義,與傳統的ASP兼容。

您可以輕鬆地將您的應用程序範圍的狀態存儲在任何合適的靜態字段中,以便在需要時提供自己的鎖定。那麼,如果您正在以ASP.NET應用程序,WCF應用程序或其他方式運行,則無需擔心。