使用定制WCF MessageEncoder进行编码
五、所需要的类
象WCF中通道和其它的类一样,当我们建立一个MessageEncoder的同时,还需要建立另外两个类实例:MessageEncodingBindingElement 和MessageEncoderFactor。还有,当使用其它的WCF类时,MessageEncodingBindingElement用于处理配置,而MessageEncoderFactory用于处理创建MessageEncoder类实例。下面是TestEncoderFactory类的声明:
public class TestEncoderFactory : MessageEncoderFactory { ... }
下面是TestEncoderBinding类的声明:
public class TestEncoderBindingElement :
MessageEncodingBindingElement
{ ... }
在前面的部分已经讲过,一般情况下,MessageEncoder一般用于传输通道中。而本文的例子岩石了如何在binding中合并一个MessageEncoder,并在一个传输通道中使用一个MessageEncoder。一般MessageEncoder对象实例由以下代码创建:
TestEncoderBindingElement elm = new TestEncoderBindingElement();
TestEncoderFactory factory = new TestEncoderFactory(elm);
RunProgram prog = new RunProgram();
..
prog.Run(factory.Encoder);
MessageEncoder是所有继承MessageEncoder的类的基类。因此,MessageEncoder包含了很多可以覆盖的方法,如ReadMessage和WriteMessage方法。它们的功能依赖于我们希望建立的信息类型。我们可以从本文的后面部分了解到如何实现一个新的ReadMessage和WriteMessage方法。
还有一些非常重要的可覆盖的属性和方法,用于处理"body"或Message类的数据部分,如ContentType、MediaType以及MessageVersion,它们都是关键的属性。其它的重要功能将依赖于类的具体实现。
0
相关文章