首页 > 其他 > 详细

WCF编解码实现

时间:2017-02-15 18:41:15      阅读:166      评论:0      收藏:0      [点我收藏+]

深度剖析消息编码(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获取下来用于消息的解码和编码。

WCF编解码实现

原文:http://www.cnblogs.com/tranw/p/6402211.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!