自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

WCF編碼機(jī)制幾種不同方式介紹

開發(fā) 開發(fā)工具
我們定義了三種不同的WCF編碼機(jī)制,其中包括Text、Binary和MTOM。我們將會(huì)在這里針對(duì)這一內(nèi)容做一個(gè)詳細(xì)的介紹。

我們今天會(huì)通過這篇文章介紹的內(nèi)容繼續(xù)為大家講解一些有關(guān)WCF中的重要內(nèi)容。主要就是針對(duì)WCF編碼機(jī)制的相關(guān)內(nèi)容進(jìn)行一個(gè)詳細(xì)的闡述,希望能給大家?guī)硪恍椭岣呔幊棠芰Α?t#

在客戶端,以方法調(diào)用形式體現(xiàn)的服務(wù)訪問通過ClientMessageFormatter生成請(qǐng)求消息。該請(qǐng)求消息最終通過綁定對(duì)象從服務(wù)模型層轉(zhuǎn)到信道層。我們說綁定是綁定元素的有序組合,對(duì)于所有類型的綁定來說,有兩個(gè)綁定類型是必不可少的:MessageEncodingBindingElement和TransportBindingElement。而消息的編碼由這兩個(gè)綁定元素共同完成。

3種WCF編碼機(jī)制方式:Text、Binary和MTOM;對(duì)應(yīng)3種不同的XmlDictionaryWriter/XmlDictionaryReader:XmlUTF8TextWriter/ XmlUTF8TextReader、XmlBinaryWriter/XmlBinaryReader和XmlMtomWriter/XmlMtomReader;3種XmlDictionaryWriter/XmlDictionaryReader又對(duì)應(yīng)著3種MessageEncoder:TextMessageEncoder、BinaryMessagEncoder和MtomMessageEncoder;這3種不同的MessageEncoder又具有它們各自的MessageEncoderFactory:TextMessageEncoderFactory、BinaryMessagEncoderFactory和MtomMessageEncoderFactory。最終這3種MessageEncoderFactory被3種相應(yīng)的MessageEncodingBindingElement用于進(jìn)行具體的編碼。MessageEncodingBindingElement通過CreateMessageEncoderFactory得到相應(yīng)的MessageEncoderFactory。

  1. public abstract class MessageEncodingBindingElement : BindingElement  
  2. {   
  3. //其他成員   
  4. public abstract MessageEncoderFactory CreateMessageEncoderFactory();  
  5.  public override T GetProperty<T>(BindingContext context) 
  6. where T: class; public abstract MessageVersion MessageVersion   
  7. {   
  8. get;   
  9. set;   
  10. }   


對(duì)應(yīng)著3種不同的MessageEncoderFactory,WCF定義了3種不同的MessageEncodingBindingElement,它們分別是:TextMessageEncodingBindingElement、BinaryMessageEncodingBindingElement和MtomMessageEncodingBindingElement。

在介紹綁定的時(shí)候,我們說BindingElement創(chuàng)建相應(yīng)的ChannelFactory/ChannelListener,而ChannelFactory/ChannelListener最終創(chuàng)建相應(yīng)的Channel進(jìn)行消息的處理。這種說法是不準(zhǔn)確的,并不是所有的BindingElement都會(huì)創(chuàng)建Channel,實(shí)際上沒有用于專門編碼的Channel,具體的編碼工作是TransportChannel完成的。

當(dāng)通過綁定對(duì)象創(chuàng)建信道棧的時(shí)候,MessageEncodingBindingElement的BuildChannelFactory/BuildChannelListener方法首先被調(diào)用,MessageEncodingBindingElement會(huì)創(chuàng)建相應(yīng)的MessageEncoderFactory對(duì)象,將其置于當(dāng)前的BindingContext中。然后TransportBindingElement的BuildChannelFactory/BuildChannelListener方法被調(diào)用,并創(chuàng)建TransportChannelFactory/TransportChannelListener對(duì)象,TransportChannelListener和TransportChannelFactory創(chuàng)建TransportChannel用于請(qǐng)求監(jiān)聽和消息發(fā)送,與此同時(shí)TransportChannel會(huì)將MessageEncoderFactory從BindingContext獲取下來用于WCF編碼機(jī)制的解碼和編碼。

責(zé)任編輯:曹凱 來源: CSDN
相關(guān)推薦

2010-03-01 15:21:57

WCF死鎖

2010-02-23 14:24:50

WCF狀態(tài)保存

2010-02-23 09:58:21

WCF客戶端驗(yàn)證

2010-07-16 13:41:08

SQL Serverl

2009-07-06 18:23:32

JSP文件下載

2010-02-04 10:33:40

C++異常傳遞

2009-11-09 17:55:13

WCF緩存

2009-12-22 15:55:10

WCF事務(wù)

2009-12-22 15:14:33

WCF調(diào)用

2010-02-22 14:18:34

WCF服務(wù)驗(yàn)證

2020-04-20 14:30:54

UbuntuLinux內(nèi)核

2020-04-24 16:09:57

UbuntuLinux內(nèi)核

2010-02-04 15:41:10

C++內(nèi)存管理

2010-03-02 16:09:53

WCF框架

2010-02-04 10:13:35

C++獲得系統(tǒng)時(shí)間

2010-02-23 13:46:37

WCF數(shù)據(jù)契約

2010-02-22 14:09:08

WCF Dispose

2010-03-01 14:08:53

WCF編碼器

2019-12-09 10:30:42

Windows 10帳戶Windows

2010-02-05 10:30:02

C++操作符重載
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)