IStreamProvider 接口

定义

表示一个可以由提供流的类来实现的接口。

public interface class IStreamProvider
public interface IStreamProvider
type IStreamProvider = interface
Public Interface IStreamProvider

注解

将包含经过流处理的正文的传出消息写入 XML 编写器时,Message 将在其 OnWriteBodyContents(XmlDictionaryWriter) 实现中使用类似于下面的一系列调用:

  • 写入流前面的任何必要信息(例如 XML 开始标记)。

  • 写入流。

  • 写入流后面的任何信息(例如 XML 结束标记)。

这对于类似于文本 XML 编码的编码可以正常工作。 但是,有一些编码不将 XML 信息集信息(例如,开始和结束 XML 元素的标记)和元素中包含的数据放在一起。 例如,在 MTOM 编码中,消息拆分为多个部分。 一部分包含 XML 信息集,其中可能包含对实际元素内容的其他部分的引用。 由于 XML 信息集通常比流处理的内容小,因此有必要缓冲信息集,将其写出,然后以流处理方式写入内容。 这意味着在写入结束元素标记时,应当尚未写出流。

为此,应使用 IStreamProvider 接口。 该接口具有一个可返回要写入的流的 GetStream() 方法。 写出 OnWriteBodyContents(XmlDictionaryWriter) 中经过流处理的消息正文的正确方式如下:

  • 写入流前面的任何必要信息(例如 XML 开始标记)

  • 对采用 WriteValue 、具有 XmlDictionaryWriter 实现(该实现可返回要写入的流)的 IStreamProvider调用 IStreamProvider 重载。

  • 写入流后面的任何信息(例如 XML 结束标记)

使用此方法时,XML 编写器可以选择何时调用 GetStream() 和写出经过流处理的数据。 例如,文本和二进制 XML 编写器将立即调用此方法并写出开始标记和结束标记之间的经过流处理的内容。 MTOM 编写器准备写入消息的相应部分时,它可以决定以后调用 GetStream()

方法

GetStream()

获取流。

ReleaseStream(Stream)

将流释放到输出。

适用于