WCF作为一个功能强大的.NET Framework 3.5重要组成部件,承担者包括通信在内容的多项功能的实现。其中,WCF消息编码器通过类型MessageEncoder表示,MessageEncoder是定义在System.ServiceModel.Channels命名空间下的一个抽象类。
从下面的定义中可以看出,MessageEncoder主要包含两种类型的操作:读消息和写消息,分别通过ReaderMessage和WriteMessage方法实现。此外,两个额外的方法,GetProperty<T>用于获取MessageEncoder相关的一些属性,IsContentTypeSupported用于判断MessageEncoder是否支持某种类型的MIME类型。
public abstract class MessageEncoder
{
//其他成员
public virtual T GetProperty<T>() where T : class;
public virtual bool IsContentTypeSupported(string contentType);
public Message ReadMessage(ArraySegment<byte> buffer,
BufferManager bufferManager);
public Message ReadMessage(Stream stream, int maxSizeOfHeaders);
public abstract Message ReadMessage(ArraySegment<byte> buffer,
BufferManager bufferManager, string contentType);
public abstract Message ReadMessage(Stream stream,
int maxSizeOfHeaders, string contentType);
public abstract void WriteMessage(Message message, Stream stream);
public ArraySegment<byte> WriteMessage(Message message,
int maxMessageSize, BufferManager bufferManager);
public abstract ArraySegment<byte> WriteMessage(Message message,
int maxMessageSize, BufferManager bufferManager, int messageOffset);
public abstract string ContentType { get; }
public abstract string MediaType { get; }
public abstract MessageVersion MessageVersion { get; }
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
与上面介绍的3种类型的XmlDictionaryWriter/XmlDictionaryReader相对应,WCF消息编码器同样定义了MessageEncoder:TextMessageEncoder、BinaryMessageEncoder和MtomMessageEncoder三种MessageEncoder,它们分别封装了XmlUTF8TextWriter/XmlUTF8TextReader、XmlBinaryWriter/XmlBinaryReader和XmlMtomWriter/XmlMtomReader。
WCF定义了3个相应的工厂类:TextMessageEncoderFactory、BinaryMessageEncoderFactory和MtomMessageEncoderFactory用于创建相应的MessageEncoder。它们共同继承一个抽象类:System.ServiceModel.Channels.MessageEncoderFactory。通过只读属性Encoder得到相应的MessageEncoder。
public abstract class MessageEncoderFactory
{
//其他成员
public abstract MessageEncoder Encoder { get; }
}
- 1.
- 2.
- 3.
- 4.
- 5.
以上就是我们为大家介绍的WCF消息编码器相关内容。
【编辑推荐】