官术网_书友最值得收藏!

3.1.1 信道(Channel)與信道棧(Channel Stack)

在信道層,若干信道逐個相連,成為一個信道棧。WCF采用基于消息的通信手段,信道棧提供一個消息傳輸和處理的通道。關于信道棧的作用,可以打個比方:比如有一個為居民提供飲用水的自來水廠,它的任務就是抽取自然水源,進行必要的凈化處理,最終輸送到居民區。凈化處理的流程可能是這樣的:天然水源被汲取到一個蓄水池中先進行雜質的過濾(我們稱這個池為過濾池);被過濾后的水流到第二個池子中進行消毒處理(我們稱這個池為消毒池);被消毒處理的水流到第三個池子中進行水質軟化處理(我們稱這個池為軟化池);最終水通過自來水管道流到居民的家中。

WCF中信道棧就相當于一個自來水廠,而構成信道棧的一個個信道就相當上面提到的過濾池、消毒池、軟化池,以及自來水管道。唯一不同的是,自來水廠處理的是水,而信道棧處理的是消息(Message)。這樣設計的最大好處就是具有很強的可擴展性,水的凈化須要進行多次處理,對于消息處理來說,不可能、也沒有必要設計出一種萬能信道完成所有的消息處理任務。我們更希望的方式是讓一個信道專注于某單一功能的實現,通過對信道有序、合理的組合去實現實際的消息處理功能。

進一步拿自來水廠舉例,因為水廠的目的旨在為居民提供飲用水,所以從水廠到居民住所之間的自來水管道是必須的,至于中間的環節,過濾、消毒、軟化、……在水質良好的情況下某些流程可能就顯得不那么必要了。與此類似,對于WCF的信道棧來說,有兩種信道是必須的:傳輸信道(Transport Channel)和消息編碼信道(Message Encoding Channel)。原因很簡單,信道棧的最終任務總是實現對消息的傳輸,傳輸信道肯定是必須的;在傳輸之前須要對消息進行編碼,消息編碼功能通過消息編碼信道實現。所以,最簡單的信道棧由傳輸信道和消息編碼信道組成,如圖3-1所示。

圖3-1 基于傳輸信道和消息編碼信道組成的信道棧

WCF采用完全基于消息的通信方式,所有功能,無論是與業務有關的,還是與業務無關的,都是通過消息交換來實現的。除了最基本的消息編碼和傳輸之外,其他的一些功能也需要通過在消息交換過程中添加一些相應的消息處理操作來實現,典型的功能包括:

事務流轉(Transaction Flowing):將從客戶端開始的事務流轉到服務端,從而將服務的執行納入該事務。

安全傳輸(Tranfer Security):保證數據包或消息的安全,避免被惡意篡改與窺視等。

● 可靠傳輸(Reliab Messaging):網絡環境不好的情況下保證數據包或消息的可靠、有序傳輸。

這些特殊的功能也通過相應的信道來承載。說得專業一點,WCF是遵循WS-*標準的,WS-*通過一系列的協議制定了一套業界普遍遵循的Web Service標準,使得不同廠商、不同平臺之間的互操作成為可能。WCF對最新的WS-*提供了支持,隨著WS-*的逐步完善,WCF也會與之保持同步。絕大部分WS-*協議的支持都是通過在信道棧中添加相應的信道實現的,所以我們把這樣的信道稱為協議信道(Protocol Channel)。必需的傳輸信道和消息編碼信道,加上可選的協議信道組成了一個更加完整的、功能更加強勁的信道棧。如圖3-2所示,在傳輸信道和消息編碼信道之上,WS-Security實現了消息層的安全;WS-RM (WS-Reliable Messaging)實現了可靠消息通信;WS-AT(WS-Atomic Transaction)實現了分布式的事務支持。

圖3-2 傳輸信道、消息編碼信道和協議信道組成的信道棧

主站蜘蛛池模板: 通州市| 西安市| 乌兰浩特市| 新民市| 察哈| 马关县| 安阳市| 湘潭县| 新竹县| 金乡县| 阳谷县| 合作市| 屯留县| 铜陵市| 疏附县| 东城区| 阜新| 龙里县| 岚皋县| 马尔康县| 易门县| 宁河县| 哈巴河县| 基隆市| 小金县| 灌南县| 铜梁县| 白山市| 庆云县| 青龙| 大足县| 醴陵市| 北海市| 南召县| 宽城| 白玉县| 涟水县| 河源市| 湘阴县| 六盘水市| 永清县|