可靠會話最佳實務

來源:互聯網
上載者:User
可靠會話最佳實務1.設定MaxTransferWindowSize

WCF中的可靠會話使用傳輸視窗儲存用戶端和服務上的訊息。可配置屬性MaxTransfer
WindowSize指示傳輸視窗可以儲存多少條訊息。

在發送方,指示在等待確認訊息時傳輸視窗可以儲存多少條訊息,在接收方,則指示為服務緩衝多少條訊息。

選擇合適的大小可影響使用網路的效率及運行服務的最佳容量。下面將詳細介紹選擇此屬性的值時要考慮的事宜及值的影響。

預設傳輸視窗大小是8條訊息。

2.有效使用網路

此處的“網路”一詞對應於在用戶端(發送方)和服務(接收方)之間用做通訊基礎的任何事物。包括傳輸串連及中間的任何中介或者橋接器,包括SOAP路由器或HTTP代理/防火牆。

有效使用網路可確保充分利用網路容量。每秒通過網路傳輸的資料量(稱為“資料速率”)及從發送方到接收方傳輸資料所用的時間(稱為“延遲”)都會影響利用網路的有效性。

在發送方,屬性MaxTransferWindowSize指示在等待確認訊息時,其傳輸視窗可以儲存多少條訊息。因此,如果網路延遲時間很長,為確保及時響應寄件者和對網路的有效利用,應增加傳輸視窗大小。

例如,即使發送方滿足資料速率,如果發送方和接收方之間存在多個中介或者中介或網路存在損失,則延遲時間會很長。因此,在發送方接收要在網路上發送的新訊息之前,必須在其傳輸視窗中等待訊息的確認資訊。具有高延遲的緩衝區越小,網路利用率就越低。另一方面,傳輸視窗大小過高可能會影響服務,原因是服務可能需要滿足用戶端的高發送速率。

3.滿負荷運行服務

為最大程度地有效使用網路,理想情況是服務也按最佳容量運行。接收方的傳輸視窗大小屬性指示接收方可以緩衝多少條訊息。此訊息緩衝不僅協助網路進行流量控制,還可讓服務滿負荷運行。例如,如果緩衝區是1,而且訊息到達的速度超過了服務可以處理的速度,則網路可能會丟棄一些訊息,並可能浪費或閑置網路容量。

使用緩衝區可提高服務的可用性,因為服務可以在處理以前接收到的訊息的同時並發接收和緩衝訊息。

建議在發送方和接收方使用相同的 MaxTransferWindowSize。

4.啟用流量控制

流量控制是確保發送方和接收方保持步調一致的機制,也就是說,使用和處理訊息的速度與產生訊息的速度一樣快。用戶端和服務端的傳輸視窗大小可確保發送方和接收方在一個合理的同步視窗中。

當在WCF用戶端和WCF服務之間使用可靠會話時,強烈建議將FlowControlEnabled屬性設定True。

5.設定MaxPendingChannels

當編寫一個允許從不同的用戶端啟用可靠會話通訊的服務時,可能會有許多用戶端同時建立與該服務的可靠會話。在這些情況下,服務的響應取決於MaxPendingChannels屬性。

當發送方建立到接收方的可靠會話通道時,發送方和接收方之間的握手將建立可靠會話。建立可靠會話之後,該通道會放入到掛起的通道隊列中以供服務端接收。此MaxPendingChannels屬性指示有多少個通道可以處於此狀態。

服務端有可能會處於一種無法接收更多通道的狀態。如果隊列已滿,則會拒絕建立可靠會話的嘗試,用戶端必須重試。

隊列中掛起的通道也可能會在隊列中保持很長時間。此外,可能會出現可靠會話的非活動逾時,從而導致通道轉換到錯誤狀態。

因此,在編寫同時服務於多個用戶端的服務時,應設定一個適合需要的值。為MaxPendingChannels屬性設定過高的值會影響工作集。

MaxPendingChannels的預設值為4。

6.可靠會話和宿主

在為使用可靠會話服務提供Web宿主時,應該記住下面的重要注意事項。

可靠會話是有狀態的,而狀態在AppDomain中進行維護。這意味著屬於可靠會話的一部分的所有訊息必須在同一個AppDomain中進行處理。其大小超過1的網路場和網路園無法保證滿足此約束。

使用雙工HTTP通道(例如使用WsDualHttpBinding)的可靠會話會要求多於預設的每個用戶端2個HTTP串連的串連數。這意味著雙工可靠會話會在每個方向上要求2個串連,因為並發應用程式和協議訊息可能會在任意給定時間在每個方向上進行傳輸。這意味著,在某些特定的條件下,根據訊息交換服務模式的不同,使用雙工HTTP和可靠會話的Web承載服務可能會出現死結。若要增加每個用戶端允許的HTTP串連數,請將下列代碼添加到相關設定檔中(例如,相關服務的
web.config)。其中的“XX”是需要的串連數。

l  <configuration>

   <system.net>

      <connectionManagement>

         <add name ="*" maxconnection = "XX" />

      </connectionManagement>

   </system.net>

</configuration>

 

 

本文節選自《WCF全面解析(上下冊)》一書

蔣金楠 著

圖書詳細資料:http://blog.csdn.net/broadview2006/article/details/7580907

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.