通道與通道棧

2021-06-06 15:55:09 字數 1772 閱讀 7986

在通道層,若干通道首尾相連組成乙個管道,我們將其稱為通道棧。wcf採用基於訊息的通訊手段,通道棧提供乙個訊息傳輸和處理的通道。關於通道棧處理訊息的方式,我們可以通過自來水廠的淨水流程做乙個模擬。

有乙個為居民提供飲用水的自來水廠,它的任務就是抽取自然水源,進行必要的淨化處理,最終輸送到居民區。淨化處理的流程可能是這樣的:天然水源被汲取到乙個蓄水池中先進行雜質的過濾(過濾池),被過濾後的水流到第二個池子中進行消毒處理(消毒池),被消毒處理的水流到第三個池子中進行水質軟化處理(軟化池),最終水通過自來水管道流到居民的家中。

wcf中通道棧就相當於乙個自來水廠,而構成通道棧的乙個個通道就相當於上面提到的過濾池、消毒池、軟化池,以及自來水管道。唯一不同的是,自來水廠處理的是水,而通道棧處理的是訊息(message)。

這樣設計的最大好處就是具有很強的可擴充套件性。水的淨化流程具有多個環節,對於訊息處理來說,不可能、也沒有必要設計出一種萬能通道完成所有的訊息處理任務。我們更希望的方式是讓乙個通道專注於單一功能的實現,最終通過對通道有序、合理的組合去完成訊息處理任務。

自來水廠旨在為居民提供飲用水,所以從水廠到居民住所之間的自來水管道是必需的,至於中間的過濾、消毒、軟化等環節在水質良好的情況下可能就顯得不那麼必要了。對於wcf的通道棧來說,也有兩種必需的通道,即傳輸通道(transport channel)和訊息編碼通道(message encoding channel)。因為通道棧的最終任務總是實現對訊息的網路傳輸,所以傳輸通道肯定是必需的;在傳輸之前需要對訊息進行編碼,而訊息編碼功能是通過訊息編碼通道實現的。所以最簡單的通道棧可以只由如圖3-1所示的傳輸通道和訊息編碼通道組成。

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

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

l 安全傳輸(transfer security):保證資料報或訊息的安全,避免被惡意篡改與窺視,同時解決客戶端和服務身份認證問題。

l 可靠傳輸(reliable messaging):在網路環境穩定的情況下保證資料報或訊息的可靠、有序傳輸。

這些特殊的功能也通過相應的通道來承載。說得專業一點,wcf是遵循ws-*標準的,ws-*通過一系列的協議制定了一套業界普遍遵循的web 服務標準,使得不同廠商、不同平台之間的互操作成為可能。wcf對最新的ws-*提供了支援,隨著ws-*的逐步完善,wcf也會與之保持同步。

對絕大部分ws-*協議的支援都是通過在通道棧中新增相應的通道實現的,所以我們把這樣的通道稱為協議通道(protocol channel)。必需的傳輸通道和訊息編碼通道,加上可選的協議通道,組成了乙個更加完整的、功能更加強勁的通道棧。如圖3-2所示,在傳輸通道和訊息編碼通道之上,基於ws-security的通道確保了訊息的傳輸安全;基於ws-rm(ws-reliable messaging)的通道實現了訊息的可靠傳輸;基於ws-at(ws-atomic transaction)的通道實現了分布式的事務支援。

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

本書詳細資訊:

通道控制方式,通道指令與通道程式

i o通道是dma的進一步發展,進一步減少cpu的干預,dma是每次對乙個資料塊進行操作,通道是一次對一組資料塊進行操作。通道實質是簡單的處理器。擁有命令暫存器,位址暫存器,有通道程式,指令單一,但是沒有專有的記憶體 cpu中 1.使用者程序提出i o請求,喚醒裝置驅動程序 參考 其他文章,我後續會...

golang chan 單項通道與多項通道

package main import fmt func main 雙項通道 var read test chan inte ce 單項通道 只支援 讀 var write test chan inte ce 單項通道 只支援 寫 read test xiao 會報錯。因為這個通道 只是單項通道只支...

603通道與通道容量

目錄 通道分類與模型 通道傳輸特性 通道容量 狹義通道 訊號傳輸介質 廣義通道 訊號傳輸介質和通訊系統的一些變換裝置 調製通道 訊號從調製器的輸出端傳輸到解調器的輸入端經過的部分 編碼通道 數碼訊號由編碼器輸出端傳輸到解碼器輸入端經過的部分 恆參通道 各種有線通道和部分無線通道,傳輸特性變化小 緩慢...