IStreamProvider Schnittstelle
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Stellt eine Schnittstelle dar, die von Klassen implementiert werden kann, die Datenströme bereitstellen.
public interface class IStreamProvider
public interface IStreamProvider
type IStreamProvider = interface
Public Interface IStreamProvider
Hinweise
Beim Schreiben einer ausgehenden Nachricht, die einen gestreamten Textkörper in einen XML-Writer enthält, verwendet dies Message eine Abfolge von Aufrufen ähnlich wie in der OnWriteBodyContents(XmlDictionaryWriter) Implementierung:
Schreiben Sie alle erforderlichen Informationen vor dem Datenstrom (z. B. das öffnende XML-Tag).
Schreiben Sie den Stream.
Schreiben Sie alle Informationen nach dem Datenstrom (z. B. das schließende XML-Tag).
Dies funktioniert gut mit Codierungen, die der Text-XML-Codierung ähneln. Es gibt jedoch einige Codierungen, die keine XML-Infosetinformationen (z. B. Tags für das Starten und Beenden von XML-Elementen) zusammen mit den in Elementen enthaltenen Daten platzieren. Beispielsweise wird die Nachricht in der MTOM-Codierung in mehrere Teile aufgeteilt. Ein Teil enthält das XML-Infoset, das Verweise auf andere Teile für den tatsächlichen Elementinhalt enthalten kann. Da das XML-Infoset im Vergleich zum gestreamten Inhalt normalerweise klein ist, ist es sinnvoll, die Infomenge zu puffern, sie zu schreiben und dann den Inhalt auf gestreamte Weise zu schreiben. Dies bedeutet, dass wir zum Zeitpunkt, zu dem das schließende Elementtag geschrieben wurde, den Datenstrom noch nicht geschrieben haben sollten.
Zu diesem Zweck wird die IStreamProvider Schnittstelle verwendet. Die Schnittstelle verfügt über eine GetStream() Methode, die den zu schreibenden Datenstrom zurückgibt. Die richtige Methode zum Schreiben eines gestreamten Nachrichtentextkörpers in OnWriteBodyContents(XmlDictionaryWriter) gestaltet sich wie folgt:
Schreiben Sie alle erforderlichen Informationen vor dem Datenstrom (z. B. das öffnende XML-Tag)
Rufen Sie die
WriteValue-Überladung in XmlDictionaryWriter auf, die IStreamProvidermit einerIStreamProvider-Implementierung verwendet, die den zu schreibenden Stream zurückgibt.Schreiben Sie alle Informationen nach dem Datenstrom (z. B. das schließende XML-Tag)
Bei diesem Ansatz hat der XML-Writer die Wahl, wann er GetStream() aufruft und die gestreamten Daten ausschreibt. Beispielsweise rufen die Text- und binären XML-Autoren sie sofort auf und schreiben den gestreamten Inhalt zwischen den Start- und Endtags aus. Der MTOM-Writer ruft GetStream() möglicherweise erst dann auf, wenn er zum Schreiben des entsprechenden Nachrichtenteils bereit ist.
Methoden
| Name | Beschreibung |
|---|---|
| GetStream() |
Ruft einen Datenstrom ab. |
| ReleaseStream(Stream) |
Gibt einen Datenstrom für die Ausgabe frei. |