WCF编解码实现

深度剖析消息编码(Encoding)实现
http://www.cnblogs.com/artech/archive/2009/08/05/1539918.html

WCF三种编码典型的方式:Binary、Text和MTOM

Binary :二进制编码、仅适用于于.NET平台之间通信 
Text:无关平台、文本编码方式 
MTOM:基于WS-MTOM规范、改善大规模二进制数据在SOAP消息的传输性能、跨平台的编码方式

WCF实现编码的核心对象:XmlDictionary、XmlDictionaryReader和XmlDIctionaryWriter。

1、XmlDictionary:

2、XmlDictionaryWriter:编码
XmlUTF8TextWriter:提供基于文本的编码实现; XmlBinaryWriter:提供基于二进制的编码实现; XmlMtomWriter:提供基于MTOM(Message Transmission Optimized Mechanism)的编码实现
XmlDictionaryWriter对应的工厂方法分别为:CreateTextWriter、CreateBinaryWriter和CreateMtomWriter
3、XmlDictionaryReader:解码 

XmlUTF8TextReader:提供基于文本的解码码实现;
XmlBinaryReader:提供基于二进制的解码码实现;
XmlMtomReader:提供基于MTOM(Message Transmission Optimized Mechanism)的解码实现
XmlDictionaryReader对应的工厂方法分别为:CreateTextReader、CreateBinaryReader和CreateMtomReader

消息编码器:通过类型MessageEncoder表示,

MessageEncoder是定义在System.ServiceModel.Channels命名空间下的一个抽象类。
MessageEncoder的两种类型的操作:读消息ReaderMessage和写消息WriteMessage

对应关系:

3种MessageEncoder:

TextMessageEncoder、BinaryMessagEncoder和MtomMessageEncoder;

3种MessageEncoderFactory:

TextMessageEncoderFactory、BinaryMessagEncoderFactory和MtomMessageEncoderFactory。

3种MessageEncodingBindingElement:

TextMessageEncodingBindingElement、BinaryMessageEncodingBindingElement和MtomMessageEncodingBindingElement。

MessageEncodingBindingElement通过CreateMessageEncoderFactory得到相应的MessageEncoderFactory。

MessageEncodingBindingElement的BuildChannelFactory/BuildChannelListener方法首先被调用-->
MessageEncodingBindingElement-->
创建相应的MessageEncoderFactory对象-->将其置于当前的BindingContext中-->
TransportBindingElement的BuildChannelFactory/BuildChannelListener方法被调用-->
并创建TransportChannelFactory/TransportChannelListener对象-->
TransportChannelListener和TransportChannelFactory创建TransportChannel用于请求监听和消息发送-->
与此同时TransportChannel会将MessageEncoderFactory从BindingContext获取下来用于消息的解码和编码。

转载于:https://www.cnblogs.com/tranw/p/6402211.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值