序列化 VS 编码

DataContract序列化机制,将CLR类型转换成符合标准的XML,在客户端与服务之间进行传输。然而有许多情况下DataContract序列化机制不足以完成工作。

WCF并没有遵循序列化的标准定义,而是将序列化定义为将对乡土转化为XML信息集(XML Infoset) 的过程。XML Infoset 是一个数据模型,WCF用它在内部表示一个消息。

System.ServiceModel.Chnnels.Message是代表XML Infoset的类。

XML Infoset 是用来表示XML文档的数据类型,也是XML的基本抽象定义。

XML与XML Infoset之间的关键区别:XML Infoset未指定一种特定的格式,所以,尽管XML标准使用的是文本格式,XML Infoset却没有任何限制。

XML Infoset 与 XML相比的优势:只要消息是基于XML Infoset的,WCF就可以用不同的格式来表示它,其中包括了XML1.1规范制定的文本格式,也可以是其他格式如二进制。也可以使用XML,同时可以根据互通性和性能要求选择合适的消息格式。

XML Infoset

编码描述将WCF消息转化成字节数组的过程,这样消息才能通过传输协议进行发送。

WCF提供5种编码方式:二进制、文本、消息传输优化机制(MTOM)、JSON、XML。

如果想在.NET 应用程序之间获得最佳性能,应选用BiaryMessageEncoder;

如果要基于WS-*的Web Service, 则应选用TextMessageEncoder和MtomMessageEncoder;

如果要基于Ajax应用通信,则应选用JsonMessageEncoder;

如果已有的编码器不能满足要求,则可以扩展WCF来支持新的编码器;

 

posted @ 2011-10-22 11:45  JerryShi  阅读(318)  评论(0编辑  收藏  举报