閱讀89 返回首頁    go 技術社區[雲棲]


使命必達: 深入剖析WCF的可靠會話[共8篇]

作為一個通信基礎平台,WCF必須保證通信的可靠性。由於消息交換是WCF采用的通信手段,通信可靠性的保障體現在確保消息的可靠傳輸。WCF本質上是一個消息處理框架,作為整個消息交換係統的兩個終端,即發送端和接收端。換句話說,WCF僅僅負責對消息的發送和接收,一旦消息通過WCF的信道層進入了網絡,就脫離了WCF的控製範圍。但是,由於網絡環境的限製,網絡層不能百分之百地確保對消息的有效交付。如何克服中間環節的製約,確保從一端發送的消息能夠被有效地交付給另一端,這就是可靠消息傳輸(Reliable Messaging)需要解決的問題。WCF通過可靠會話(Reliable Sessions)實現了種種端到端(End to End)的可靠消息傳輸。

為了讓讀者對可靠會話的作用現有一個直觀的認識,我們先來做一個很有意思的實例演示。這也是早年微軟推廣WCF技術頻繁使用的案例:圖片傳輸。在客戶端,我們選擇一張圖片,並對它進行切片,最後通過調用WCF服務將每一個切片依次傳輸到服務端。服務端則按照切片被接收到的順序重新組裝成一張完整的圖片。如果中間有任何一張切片丟失,服務端最終組裝圖片將不會完整;如果服務端切片接收的次序和發送順序不一致,將會造成組裝後的圖片並不能還原其發送前的模樣。在這裏,我們充分利用了WCF中的可靠會話提供了可靠而有序的消息交付… 閱讀全文

WCF的可靠會話這涉及到WS中一個重要的概念——可靠消息傳輸(RM:Reliable Messaging)。如果想對可靠會話有一個深入的認識,對可靠消息傳輸的了解是必須的。我們可以將一個通過WCF構建的分布式應用劃分為兩個部分,即客戶端應用和服務端應用,它們之間的交互方式即采用某種MEP的消息交換。在這裏,我們需要通過可靠消息傳輸機製確保從客戶端應用(或者服務端應用)發送的消息能夠成功地被服務端應用(或者客戶端應用)接收。也就是說,可靠消息傳輸提供的是一種端到端的消息傳輸確保機製,而不管兩個終端之間是否具有相應的中間結點(Intermediary),比如路由器、防火牆和代理之類… 閱讀全文

在WS-*大家庭中,WS-RM為可靠消息傳輸提供了一個一個規範,使互操作成為可能。在《協議篇》中,我們側重對WS-RM的介紹。WS- RM,為WS-Reliable Messaging的簡稱,是WS-*大家庭的一個重要成員。和前麵介紹的WS-Coordination和WS-AT一樣,WS-RM的製定者是結構化信息標準促進組織(OASIS)。製定WS-RM的一個主要目的就是創建一個模塊化的實現可靠詳細傳輸(Reliable Messaging)的機製。WS-RM定義了一種消息傳輸協議(Messaging Protocol),以實現在可靠消息傳輸過程中對消息的識別、追蹤和管理。並在此基礎上,定義了SOAP綁定實現了互操作。到目前為止,WS-RM先後出了兩個官方版本,即WS-RM 1.0和WS-RM 1.1… 閱讀全文

在《上篇》中,我們認識了從序列創建到終止過程中消息交換的大致流程。下篇將關注點聚焦到單個消息上,看看在整個基於序列的上下文中進行的,不同類型的消息具有怎樣的結構… 閱讀全文

在《實例篇》給出的例子中,我們實際上是通過對終結點的綁定進行相應的配置讓整個消息的交換過程在一個可靠會話中進行,進而實現可靠消息傳輸的目的。由於整個可靠會話的機製是完全在信道層實現的,而整個信道層的最終締造者就是綁定,所以可靠會話編程是圍繞著綁定進行的。本篇文章主要為你講述基於綁定的可靠會話編程… 閱讀全文

整個可靠會話的機製是完全在信道層實現的,而整個信道層的最終締造者就是綁定,所以可靠會話編程是圍繞著綁定進行的。《上篇》對實現可靠會話的綁定元素已經如何使用係統綁定實現可靠會話進行了介紹,下篇將和你探討WCF可靠會話編程模型餘下兩個主題:自定義綁定和對消息傳遞的強製約束… 閱讀全文

可靠會話的編程僅僅圍繞著一個對象,那就是綁定。綁定在整個WCF架構模型具有重要的地位。WCF整個架構模型由兩部分構成,即服務模型(Service Model)層和信道(Channel)層,而綁定是信道層的締造者,同時也是連接兩個層次的紐帶。對可靠會話的實現,是完全在信道層實現的。 綁定是由一係列綁定元素的有序組合,不同的保定元素具有各自的目的,而實現可靠會話的是一個叫做ReliableSessionBindingElement的綁定元素… 閱讀全文

上麵一部分我們站在信道層的角度剖析了WCF為了實現可靠會話在信道層進行的一係列消息交換,或者說客戶端和服務端的RS信道為了實現可靠消息傳輸所進行一輪又一輪的握手。這一切都是基於這樣一個假設:兩個RS信道均可以在適當的時機向對方發送消息,或者說兩個RS信道之間是一個雙工的通道。 如果我們站在傳輸層看待這個問題,該假設對於TCP傳輸是成立的,但是對於HTTP來說就有點問題了。HTTP本身就是一個基於請求|回複消息交換模式的應用層網絡協議,並不能對雙工通信提供支持。而WCF通過WSDualHttpBinding實現的雙工通信機製和NetTcpBinding支持的雙工通信具有本質的區別。 NetTcpBinding創建的傳輸通道就是一個雙工的TCP連接,而WSDualHttpBinding創建的所謂的雙工通道實際上是兩個方向相反的HTTP連接。接下來我們主要討論當我們采用基於HTTP綁定——WSHttpBinding(或者是 WS2007HttpBinding)和WSDualHttpBinding)時,實現可靠會話所進行的通信方式… 閱讀全文


作者:蔣金楠
微信公眾賬號:大內老A
微博:www.weibo.com/artech
如果你想及時得到個人撰寫文章以及著作的消息推送,或者想看看個人推薦的技術資料,可以掃描左邊二維碼(或者長按識別二維碼)關注個人公眾號(原來公眾帳號蔣金楠的自媒體將會停用)。
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁麵明顯位置給出原文連接,否則保留追究法律責任的權利。
原文鏈接

最後更新:2017-10-27 14:34:34

  上一篇:go  使命必達: 深入剖析WCF的可靠會話[原理揭秘篇](下)
  下一篇:go  [轉自MSDN]可靠會話(Reliable Session)的最佳實踐