Freigeben über


IStreamProvider Schnittstelle

Definition

Stellt eine Schnittstelle, die von Klassen implementiert werden kann, die Streams bereitstellen.

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

Hinweise

Wenn eine ausgehende Nachricht, die einen in einem Stream befindlichen Hauptteil enthält, in einen XML-Writer geschrieben wird, verwendet Message eine Aufrufsequenz, die der folgenden Sequenz in ihrer OnWriteBodyContents(XmlDictionaryWriter)-Implementierung ähnlich ist:

  • Schreiben Sie alle notwendigen Informationen, die dem Stream vorausgehen (z. B. das öffnende XML-Tag).

  • Schreiben Sie den Stream.

  • Schreiben Sie alle Informationen, die nach dem Stream folgen (z. B. das schließende XML-Tag).

Dies funktioniert gut bei Codierungen, die der Text-XML-Codierung ähnlich sind. Es gibt jedoch einige Codierungen, bei denen XML-Infosetinformationen (z. B. Tags für startende und endende XML-Elemente) nicht zusammen mit den in den Elementen enthaltenen Daten platziert werden. Zum Beispiel wird bei der MTOM-Codierung die Nachricht in mehrere Teile aufgeteilt. Ein Teil enthält das XML-Infoset, das in Bezug auf tatsächlichen Elementinhalt Verweise auf andere Teile enthalten kann. Da das XML-Infoset für gewöhnlich kleiner ist als der im Stream befindliche Inhalt, bietet es sich an, das Infoset zu puffern, es auszuschreiben und dann den Inhalt gestreamt zu schreiben. Dies bedeutet, dass zu dem Zeitpunkt, zu dem das Tag für das schließende Element geschrieben wird, der Stream noch nicht ausgeschrieben sein sollte.

Zu diesem Zweck wird die IStreamProvider -Schnittstelle verwendet. Die Schnittstelle verfügt über eine GetStream() -Methode, die den zu schreibenden Stream zurückgibt. Die richtige Vorgehensweise, um einen in einem Stream befindlichen Nachrichtentext in OnWriteBodyContents(XmlDictionaryWriter) auszuschreiben, lautet wie folgt:

  • Schreiben Sie alle notwendigen Informationen, die dem Stream vorausgehen (z. B. das öffnende XML-Tag).

  • Rufen Sie die WriteValue -Überladung in XmlDictionaryWriter auf, die IStreamProvidermit einer IStreamProvider -Implementierung verwendet, die den zu schreibenden Stream zurückgibt.

  • Schreiben Sie alle Informationen, die nach dem Stream folgen (z. B. das schließende XML-Tag).

Auf diese Weise kann der XML-Writer bestimmen, wann GetStream() aufgerufen wird und die im Stream befindlichen Daten ausgeschrieben werden. So rufen die Text-XML-Writer und die binären XML-Writer die Daten zum Beispiel direkt auf und schreiben den im Stream befindlichen Inhalt zwischen die Start- und Endtags. Der MTOM-Writer ruft GetStream() möglicherweise erst dann auf, wenn er zum Schreiben des entsprechenden Nachrichtenteils bereit ist.

Methoden

GetStream()

Ruft einen Stream ab.

ReleaseStream(Stream)

Gibt einen Stream frei, der ausgegeben werden soll.

Gilt für