技术开发 频道

使用定制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
相关文章