簡體   English   中英

WCF客戶端會話是什么意思?

[英]What does WCF Client Session mean?

我在IIS中以InstanceMode = PerSessionConcurrencyMode = Single托管了WCF WebService。 我正在從Java Servlet調用此wcf服務,並按順序發送請求(到目前為止很好)。

現在,當我通過IE / Chrome / Firefox等訪問此文件時,它應該只為我打開的一個客戶端窗口在WCF服務的實例上創建,但是IIS正在為其創建多個實例,這需要花很長時間才能實例化,因為我的服務是內部連接到舊版系統。

還是我完全誤解了客戶會話? WCF客戶端會話是什么意思? 誰定義了邊界,我可以從Web應用程序代碼中指定邊界嗎?

WCF中的會話由客戶端通過打開通道啟動,並在該通道因故障而關閉時關閉。 因此,如果您在服務上看到多個實例(但是,不確定如何確認有多個實例),那是因為有多個連接/通道為服務打開了。

這是MSDN文章,可能會有所幫助。 粘貼相關摘錄, http://msdn.microsoft.com/en-us/library/ms733040.aspx

WCF會話具有以下主要概念功能:•它們由調用應用程序(WCF客戶端)顯式發起和終止。

•在會話期間傳遞的消息將按照接收的順序進行處理。

•會話將一組消息關聯到對話中。 不同類型的相關性是可能的。 例如,一個基於會話的信道可以基於共享的網絡連接來關聯消息,而另一個基於會話的信道可以基於消息主體中的一個共享標簽來關聯消息。 可以從會話中派生的功能取決於相關性的性質。

•沒有與WCF會話關聯的常規數據存儲。

HTH,阿米特·巴蒂亞(Amit Bhatia)

您可能會發現關於此問題的有關代碼項目的文章在這里

會話對我們所有人來說都是一個很好理解的術語,根據我們的共同理解,會話在各個實體之間相互識別的時間是(或多或少)。 我們中有些人可能也在ASP.NET中玩過它。 盡管技術和用法略有不同,但在WCF中該概念幾乎相似。

在WCF中,總是有一個服務類實例來處理傳入的服務請求。 這些實例可能已經存在(請求到達時在服務器上),或者可以根據需要創建。 在WCF中,會話的概念主要是管理這些服務實例,以便可以優化方式利用服務器。 在服務器上,有一個名為InstanceContext的特殊類,用於創建/加載服務類實例並向其分配請求。 可以將相關性視為:

您可以在這里看到東西如何參與。 當一些請求到達時,它通過實例上下文被路由到服務實例。 假設有數千個請求,那么服務將不得不創建數千個實例上下文(反過來將創建數千個服務實例)來處理這些請求。 如果以這種方式處理請求,則該服務稱為PERCALL服務,因為每個請求均由新的實例上下文和服務實例對象(以后稱為服務對象)提供服務。 考慮有一個客戶端發出了100個請求。 如果服務標識此客戶端並始終由專用服務對象為其提供服務,則該類型的服務將被稱為PERSESSION服務,因為它可以識別客戶端並由單個服務對象實例為其提供服務。 另一方面,如果所有請求(與客戶端無關)均由服務對象的單個實例提供服務,則該服務將稱為SINGLETON服務。 下圖概述了該概念:上面的鏈接將提供更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM