圖解WCF通道網絡傳輸技術
本文主要講述WCF通道的相關問題,怎樣維護WCF通道等技術性的問題。這些內容都是一些門戶網站和技術論壇找到的,中間可能有不少錯誤是我沒有挑出的,歡迎大家指正。
可以使用中網絡帶寬較小的網絡環境中,當WCF在兩個實體間通訊的時候,便自動創建一個信息通道轉接通訊,這個消息包含數據請求和相應。WCF使用特殊的編碼器將請求和響應數據轉換成一系列的字節。#t#
我所帶的項目里遇到大文件分布式傳輸問題,經過分析考慮采用WCF通道壓縮技術來解決此問題。執行這樣的編碼是需要傳輸大文件(XML格式)由一臺機器到另一臺機器傳輸,而連接有速度限制。我不用寫一個特殊的函數邊壓縮和邊解壓,而是配置傳輸通道可以做到這一點,這種方式壓縮可重復使用的任何契約。我發現自己編寫的消息編碼器是最簡單的方式來實現功能,真正的問題是如何編寫信息編碼器,在MSDN上沒有找到任何關于此應用的實例。消息契約編碼器的想法是Hook連接兩端發送和接收信息的渠道。程序是采用Microsoft Visual Studio 2008 WCF設計。
發送方:代碼中加入方法,該方法及其參數的序列化成WCF通道,消息編碼序列化的信息將成為一個字節數組,字節數組發送傳輸層。接收方:傳輸層接收字節數組,消息編碼器并行化字節數組到一條消息,該方法及其參數并行化到一個WCF通道,方法是被監聽的。
當加入壓縮信息編碼器,該方法要求有一點改變,發送方:代碼中加入方法,該方法及其參數的序列化成WCF通道,消息契約編碼讓其內在的信息編碼序列的信息成為一個字節數組,消息契約編碼壓縮的字節數組第二個字節數組,字節數組發送傳輸層。接收方:傳輸層接收字節數組,消息契約編碼的字節數組解壓到第二字節數組,消息契約編碼讓其內在的信息編碼化的第二個字節數組消息,該方法及其參并行化到WCF通道,方法是被監聽的。