IStreamProvider インターフェイス

定義

ストリームを提供するクラスによって実装できるインターフェイスを表します。Represents an interface that can be implemented by classes providing streams.

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

注釈

ストリーミングされた本文を含む送信メッセージを XML ライターに書き込むときに、MessageOnWriteBodyContents(XmlDictionaryWriter) 実装で次のような一連の呼び出しを使用します。When writing an outgoing message containing a streamed body to an XML writer, the Message will use a sequence of calls similar to the following in its OnWriteBodyContents(XmlDictionaryWriter) implementation:

  • ストリームの前に必要な情報 (XML 開始タグなど) を書き込みます。Write any necessary information preceding the stream (For example, the opening XML tag).

  • ストリームを書き込みます。Write the stream.

  • ストリームの後に情報 (XML 終了タグなど) を書き込みます。Write any information following the stream (For example, the closing XML tag).

これは、テキスト XML エンコーディングに類似するエンコードで有効に機能します。This works well with encodings that are similar to the textual XML encoding. ただし、要素内に含まれるデータと共に、XML Infoset 情報 (XML 要素を開始および終了するためのタグなど) を配置しないエンコードもあります。However, there are some encodings that do not place XML infoset information (For example, tags for starting and ending XML elements) together with the data contained within elements. たとえば、MTOM エンコーディングでは、メッセージは複数の部分に分割されます。For example, in the MTOM encoding, the message is split into multiple parts. ある部分に XML Infoset が含まれ、要素の実際のコンテンツについては他の部分への参照が含まれている場合があります。One part contains the XML infoset, which may contain references to other parts for actual element contents. 通常、XML Infoset は、ストリーミングされたコンテンツと比べるとサイズが小さいため、Infoset をバッファーに格納し、これを書き込んでから、ストリーミング方式でコンテンツを書き込むことには意味があります。Since the XML infoset will normally be small compared to the streamed contents, it makes sense to buffer the infoset, write it out, and then write the contents in a streamed way. これは、終了要素タグが書き込まれるまでは、ストリームを書き込むことができないことを意味します。This means that by the time the closing element tag is written, we should not have written out the stream yet.

このために、 IStreamProvider インターフェイスが使用されます。For this purpose, the IStreamProvider interface is used. このインターフェイスには、書き込むストリームを返す GetStream() メソッドがあります。The interface has a GetStream() method that returns the stream to be written. OnWriteBodyContents(XmlDictionaryWriter) でストリーミングされたメッセージ本文を書き込む適切な方法は次のとおりです。The correct way to write out a streamed message body in OnWriteBodyContents(XmlDictionaryWriter) is as follows:

  • ストリームの前に必要な情報 (XML 開始タグなど) を書き込みます。Write any necessary information preceding the stream (For example, the opening XML tag)

  • 書き込むストリームを返す WriteValue 実装で、 XmlDictionaryWriter を受け取る IStreamProviderに対して IStreamProvider オーバーロードを呼び出します。Call the WriteValue overload on the XmlDictionaryWriter that takes an IStreamProvider, with an IStreamProvider implementation that returns the stream to be written.

  • ストリームの後に情報 (XML 終了タグなど) を書き込みます。Write any information following the stream (For example, the closing XML tag)

この方法を使用すると、XML ライターは GetStream() を呼び出し、ストリーミングされたデータを書き込む時期を選択できます。With this approach, the XML writer has a choice of when to call GetStream() and write out the streamed data. たとえば、テキスト XML ライターやバイナリ XML ライターは、このメソッドをすぐに呼び出し、開始タグと終了タグの間にストリーミングされたコンテンツを書き込むことができます。For example, the textual and binary XML writers will call it immediately and write out the streamed contents in between the start and end tags. MTOM ライターは、メッセージの適切な部分を書き込む準備ができたときに、後で GetStream() を呼び出すことができます。The MTOM writer may decide to call GetStream() later, when it is ready to write the appropriate part of the message.

メソッド

GetStream()

ストリームを取得します。Gets a stream.

ReleaseStream(Stream)

出力するストリームを解放します。Releases a stream to output.

適用対象