2010-09-28 57 views
1

假設我有一個簡單的WCF應用程序,客戶端爲了獲得一個數字而調用它。其中沒有太多處理,服務合同被歸爲SessionMode = SessionMode.NotAllowed。引用WCF服務的生命週期是什麼?

什麼時候構造函數被調用?對象何時被破壞?是一個叫做每個請求的構造函數嗎?

是否有任何參考文獻或資源具有此信息?我似乎無法找到它。

回答

1

WCF由IIS託管,因此受其壽命規則約束。服務類本身可能會在應用程序中根據需要創建和銷燬;該類將在收到請求後調用,該方法被調用,並返回結果,之後對象將離開作用域並被處置/最終確定。

但是,包含您的服務的項目看起來像IIS的普通ActiveServer.NET Web應用程序(請檢查應該在其中的Global.asax文件;它包含一個類型爲HttpApplication的類,並且代表IIS可以用來控制它的應用程序),IIS將維護這些應用程序的「池」以處理來自多個客戶端的請求。只要請求不斷出現,並且IIS不會決定應用程序已經「陳舊」並刷新它或整個池,應用程序將繼續運行。因此,您聲明的任何靜態類(例如您的單例IoC容器)或添加到派生HttpApplication類(您用作子類型)的任何內容都將保留在內存中,直到應用程序被回收爲止。