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