IStreamProvider 介面

定義

表示可由類別提供資料流實作的介面。

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

備註

將含有經過資料流處理之本文的傳出訊息寫入至 XML 寫入器時,Message 將會在其 OnWriteBodyContents(XmlDictionaryWriter) 實作中使用類似下面一連串的呼叫:

  • 在資料流前面寫入任何必要的資訊,例如,開頭 XML 標記。

  • 寫入資料流。

  • 在資料流後面寫入任何資訊,例如,結束 XML 標記。

這很適合用在類似文字 XML 編碼方式的編碼。 不過,有些編碼並不會將 XML InfoSet 資訊 (例如,XML 項目的開頭及結束標記) 與包含在項目內的資料放在一起。 例如,在 MTOM 編碼中,訊息會分割為多個部分。 其中一個部分會包含 XML InfoSet,而這其中可能會包含實際項目內容之其他部分的參考。 由於 XML InfoSet 通常會比資料流處理後的內容還要小,因此合理的做法是先緩衝處理 InfoSet,再將它寫出,然後以資料流的處理方式寫入內容。 這意味著,在寫入項目結束標記以前,我們應該還沒有寫出資料流。

為此,這時會使用 IStreamProvider 介面。 這個介面具有可以傳回要寫入之資料流的 GetStream() 方法。 寫出 OnWriteBodyContents(XmlDictionaryWriter) 中已由資料流處理之訊息本文的正確方式如下所示:

  • 在資料流前面寫入任何必要的資訊,例如,開頭 XML 標記。

  • 配合傳回要寫入之資料流的 WriteValue 實作,在接受 XmlDictionaryWriterIStreamProvider上呼叫 IStreamProvider 多載。

  • 在資料流後面寫入任何資訊,例如,結束 XML 標記。

透過這種方式,XML 寫入器就可以選擇呼叫 GetStream() 以及寫出經過資料流處理之資料的時機。 例如,文字及二進位 XML 寫入器將立即呼叫此方法,並寫出開頭與結束標記之間的資料流處理內容。 MTOM 寫入器則可能會決定於稍後準備好要寫入訊息的適當部分時,再呼叫 GetStream()

方法

GetStream()

取得資料流。

ReleaseStream(Stream)

釋放要輸出的資料流。

適用於