天天看点

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----消息编码器

在上面两种编码的模式中,我都使用了