2013-01-03 28 views
0

我在WCF很新。所以經常注意wcf代碼&文章。在查看了許多代碼後,我經常堅持非常基本的東西,對於下面的問題沒有詳細討論。所以這裏是我的幾個基本問​​題....並尋找與示例情況和示例代碼的詳細討論。關於WCF InstanceContextMode

是什麼InstanceContextMode?很多人使用InstanceContextMode Single或者PerCall或者PerSession?

我只需要深入瞭解的時候我應該去InstanceContextMode單或或PerCall或PerSession?它基本上做了什麼?

告訴我簡單當我打開竟被單上會發生什麼或PerCall或PerSession的情況下,會發生什麼?什麼是單或PerCall或PerSession

之間差異

什麼是默認InstanceContextMode?

回答

2

InstanceContextMode屬性指示WCF將如何創建服務類的實例,無論這些實例將跨請求被重用。

  • PerSession:(默認設置)服務的實例將爲每個WCF會話創建,用於支持會話(否則,行爲是一樣的PerCall)通道;如果您在服務類中保持狀態爲每個客戶端會話
  • PerCall這個值是有用的:服務類的新實例將爲每個WCF操作(方法調用)從客戶
  • 創建:在主機進程內只會創建一個服務實例,它將處理所有傳入的請求;除非服務的ConcurrencyMode行爲設置爲Multiple,否則所有呼叫都將被序列化到服務。

對於大容量的無狀態服務,利用SingleConcurrencyMode.Multiple可以減少分配服務實例的數量和垃圾收集器相關聯的壓力。 WCF不要求/假設你的服務是無狀態的,但是,這就是爲什麼PerSession是默認的。

您可以通過在服務的默認構造函數中設置斷點來驗證不同實例上下文模式的行爲。

+0

感謝您的回答。我不擅長wcf,只是學習它。所以請指導我如何調試wcf服務,以更好地理解InstanceContexMode。你可以寫簡單的代碼,我可以調試和了解InstanceContexMode調試的行爲一步一步。謝謝 – Thomas

+0

我有一個WCF擴展庫,有很多示例[這裏](https://github.com/bspell1/wcfex)。如果您拉下代碼,則會有一個進程內示例允許您在WCF服務中設置斷點。樣本位於Samples/InProc/ConsoleEcho/Client下。該服務位於MockOutput.cs中,您應該能夠添加ServiceBehavior屬性並設置一個斷點。 –

+0

您試圖說的InProc? – Thomas

相關問題