《WCF的綁定模型》博文係列匯總[共6篇]
從整個基礎構架的層次結構上講,WCF可以分成兩個部分:服務模型層(Service Mode Layer)和信道層(Channel Layer)。服務模型層建立在信道層之上,提供了一個統一的、可擴展的編程模型。信道層則通過綁定(Binding)建創的信道棧為消息通信提供了一個傳輸、處理的通道。
[第1篇] Binding模型簡介
對於一個分布式應用的開發與設計來說,通信問題是不得不考慮,同時也是最為複雜、最難實現的問題。在過去的若幹年中, 微軟先後推出了一係列廣受歡迎的通信技術, 比如DCOM、Enterprise Service、.NET Remoting、XML Web Service、MSMQ等等。這些技術提供了各自的編程模型,是開發人員從繁瑣的完全基於通信的編程中解脫出來,使之僅僅需要關注具體的業務邏輯。 WCF是所有的這些通信技術集大成者,它充分地整合了所有這些使用於不同領域、不同場景的通信技術,提供了一個統一的編程模型。
無論從功能上講,還是從WCF的整個基礎構架的層次結構上講,WCF可以分成兩個不部分:編程模型和通信實現。編程模型通過WCF服務模型層(service mode layer)提供,而信道層 (channel layer) 則提供了具體的通信的實現。服務模型層建立在信道層之上,對於一般的WCF開發人員來講,他們僅僅會接觸到服務模型層,信道層則是被屏蔽掉的。而綁定是整個信道層的締造者。
[第2篇] 信道與信道棧(Channel and Channel Stack)
WCF采用基於消息交換的通信方式,而綁定則實現了所有的通信細節。綁定通過創建信道棧實現了消息的編碼與傳輸,以及對WS-*協議的實現。WCF綁定模型涉及多種類型的組件,比如信道、信道監聽器、信道工廠等等。從功能上講,這些對象都是為通信服務的,我們可以把它們稱為通信對象(Communication Object)。對於這些通信對象來說,在通信不同的階段,它們往往具有不同的狀態;從整個通信的生命周期來看,在不同階段過渡的過程中,它們具有一些相似的狀態轉換方式……
[第3篇] 信道監聽器(Channel Listener)
信道管理器是信道的創建者,一般來說信道棧的中每個信道對應著一個信道管理器。基於不同的消息處理的功能,將我們需要將相應的信道按照一定的順序能組織起來構成一個信道棧,由於信道本身是由信道管理器創建的,所以信道對應的信道管理器也構成一個信道管理器棧,棧中信道管理器的順序決定由它所創建信道的順序。
對於WCF的信道層來說,信道管理器在服務端和客戶端扮演著不同的角色,服務端的信道管理器在於監聽來自客戶端的請求,而客戶端的信道僅僅是單純的創建用於消息發送的信道。因此,客戶端的消息管理器又稱為信道監聽器(Channel Listener),客戶端的信道管理器則成為信道工廠(channel factory)。 在WCF中,所有的信道管理器,不管是位於服務端的信道監聽器還是客戶端的信道工廠,都繼承自一個基類:.ChannelManagerBase。
其實我們完全可以把一個WCF應用開成是一個普通的基於監聽-請求模式的網絡應用,服務端將監聽器綁定到一個或一組URI上進行網絡監聽,一旦成功監聽到來自客戶端的請求,則接收、處理該請求,如需回複則發送回複回客戶端。在整個過程中,監聽器處於核心的地位,而WCF中的信道監聽器就起著這樣的作用。
[第4篇] 信道工廠(Channel Factory)
由於信道管理器在客戶端和服務端所起的不同作用,分為信道監聽器和信道工廠。和服務端的信道監聽其相比,處於客戶端的信道工廠顯得簡單。從名稱就可以看得出來,信道工廠的作用就是單純的創建用於消息發送的信道。
[第5篇] 綁定元素(Binding Element)
在上麵的內容中,先後介紹了信道、信道管理器、信道監聽器和信道工廠。從對象的創建來講,信道管理器是信道的創建者。說的再具體點,客戶端的信道通過信道工廠創建,服務端的信道通過信道監聽器創建。但是信道工廠和信道監聽器又是如果被創建出來的呢?
我們在一開始就已經說過,作為終結點三要素的綁定對象實現了所有的通信細節,並且通過創建信道棧實現了消息的傳遞。從這一點來說,綁定對象無疑是信道層所有通信對象的最終締造者,所以信道工廠和信道監聽器最終的創建都是靠綁定對象實現的。關於這個創建過程又和另一個重要的對象密切相關,那就是綁定元素。
綁定元素,顧名思義就是構成一個綁定對象的元素。綁定對象最根本的目的就是創建信道棧,借此實現對消息的傳輸、編碼和基於消息交換的其他功能,比如安全、可靠傳輸、事務流轉等等。組成信道棧的單個信道對象基於對某項單一功能的實現,在不同環境中,我們需要根據具體的需要創建相應的信道,並根據一定的順序把這些信道組成一個完整的信道棧。對於綁定對象來說,如何實現這種靈活、自由的信道常創建方式,這得益於基於綁定元素的設計模式。
[第6篇] 從綁定元素認識係統預定義綁定
由於綁定對象由一係列有序的綁定元素組成,綁定元素最終決定著信道棧中信道的組成,而信道的組成最終又決定了信道棧對消息進行處理的方式和能力,所有要確定綁定的特性和能力,我們可以通過查看其綁定元素的構成來一窺究竟。
微信公眾賬號:大內老A
微博:www.weibo.com/artech
如果你想及時得到個人撰寫文章以及著作的消息推送,或者想看看個人推薦的技術資料,可以掃描左邊二維碼(或者長按識別二維碼)關注個人公眾號(原來公眾帳號蔣金楠的自媒體將會停用)。
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁麵明顯位置給出原文連接,否則保留追究法律責任的權利。
最後更新:2017-10-30 11:04:46