2011-05-18 70 views
2

在本文(link)中,Juval Lowy聲明PerCall是默認值。但是,在當前文檔(link)中,默認設置爲PerSession。自WCF發佈以來,WCF的默認實例管理模式是否已從Per Call更改爲Per Session?

自WCF發佈以來,這是否發生了變化?如果是這樣,是否有人知道這個理由?

我已閱讀的有關WCF迄今爲止所有的文檔都說避免有狀態(PerSession)服務支持無狀態(PerCall)服務。

我只是看着這個錯誤嗎?

感謝您的任何照明!

更新:我實際上找到了我正在尋找的東西,並將其添加爲答案。謝謝!

回答

3

我居然發現我一直在尋找的答案:

看看這個link

我們在6月份的CTP中對此進行了更改。這裏的推理:

「隨着PerCall,誰需要在他們的ServiceContract會話會得到持續了一個呼叫的持續時間,除非他們改變了InstanceContextMode到PerSession會話

隨着用戶。 PerSession默認情況下,需要會話的用戶將獲得與會話通道生存期相關的實例生存期,如他們所期望的那樣,不需要合同中的會話的用戶仍將獲得類似PerCall的實例生存期。用戶可以獲得他們期望的實例生命週期,一旦他們設置了合同的會話要求,而無需調整InstanceContext模式。」

1

我認爲邏輯是,ServiceBehavior默認是perSession,但是ServiceContract的會話是NotAllowed使得每次調用都有效。

看看MSDN鏈接,你可以看到所有版本的框架的ServiceBehavior默認一直是perSession。

1

我可以向你保證,basicHttp通道的默認行爲是PerCall,只是因爲basicHttp綁定不支持PerSession實例化。我有一個使用該配置運行的服務。 見this blog