天天看點

WCF随筆3----消息編碼器

  我們都知道,message是wcf通信架構進行通信的最基本的機關,但是wcf開發人員其實根本不需要直接與message打交道,一樣能夠寫好wcf相關的程式.這是因為整個架構都為我們做好了一切,當用戶端建立了連接配接服務端的通道之後,通過用戶端的代理想服務端發送消息的時候,wcf基礎結構就開始忙着在背後建立,發送,接受處理message對象的工作.發送消息的時候其實是要經曆過幾次轉換的,從發送者角度來看包括:序列化和編碼,序列化是把message對象轉換為xml資料,編碼是将xml資料轉換為特定的資料格式,比如常見的二進制格式.從服務端的角度看正好相反是以,從今天晚上開始進入message對象的學習.

  在消息的序列化和編碼的過程有兩個重要的類型 XmlDictionaryReader,XmlDictionaryWriter,一個是讀,另一個是寫.先來說下XmlDictionaryWriter,它是用來序列化和編碼message類型的,使用時,首先要建立XmlDictionaryWriter對象,我們在建立對象的時候一般是調用XmlDictionaryWriter中的靜态函數,CreateTextWriter(),CreateBinaryWriter(),CreateDictionaryWriter(),CreateMtomWriter(),這個四個方法都會傳回一個XmlDictionaryWriter對象,每個方法都有重載,至于每個方法參數是什麼意思,呵呵,額也不是都知道,具體用的時候還是要去查msdn的..是以大家想進一步了解的話,還是自己查下吧...*_*,前面兩個靜态函數應該說使我們比較常用的.第一個的作用是為了産生基于文本編碼的xml.第二個的作用是了産生基于二進制編碼的xml.主要介紹這兩個.剛剛說了,XmlDictionaryWriter是負責編碼,将message編碼成指定格式的xml資料,那麼經過編碼之後的資料就可以發送到服務端了,這個時候就要用到XmlDictionaryReader這個對象來對經過編碼的資料進行解析了.它的使用基本上和XmlDictionaryWriter對象的用法一樣,也是通過靜态函數傳回對象,針對四種不同的編碼模式,它也有四種不同解析器.CreateTextReader(),CreateBinaryReader(),CreateDictionaryReader(),CreateMtomReader(),隻要根據用戶端的編碼規則,選擇相應的解碼器就可以了.先上代碼:

運作結果:

WCF随筆3----消息編碼器

在上面兩種編碼的模式中,我都使用了