我有一個ServiceBehavior(InstanceContextMode = InstanceContextMode.Single,ConcurrencyMode = ConcurrencyMode.Multiple)的WCF服務。我想使用ThreadStatic變量來存儲數據。當併發模式=多個時,兩個並行WCF請求可以被同一個線程處理
我開始擔心是否有可能爲相同或不同的operationContracts的兩個並行請求獲得相同的線程服務器端處理,因爲如果發生這種情況,我的ThreadStatic變量將被覆蓋(即線程在HttpHandlers和HttpModules之間切換在ASP.NET中)
我使用相同的ServiceBehaviour和maxConcurrentCalls =「2」創建了一個尖峯服務。之後,一個wcf客戶端用50個並行請求調用服務,我的擔心沒有發生。然而,這不是100%的證據。
提前致謝!
您好,感謝您的快速回復。我在ThreadStatic變量周圍有一個處理包裝器(例如,我使用的是環境設計模式),所以在線程重用期間我沒有任何問題。另外根據定義MSDN說:'服務實例是多線程的。沒有同步保證。因爲其他線程可以隨時更改您的服務對象,所以您必須始終處理同步和狀態一致性。'所以它不是那麼明顯:) –
+1喬,很好的回答! –