IStreamProvider Rozhraní

Definice

Představuje rozhraní, které lze implementovat pomocí tříd poskytujících datové proudy.

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

Poznámky

Při zápisu odchozí zprávy obsahující streamované tělo do zapisovače Message XML se použije posloupnost volání podobná následující v jeho OnWriteBodyContents(XmlDictionaryWriter) implementaci:

  • Zapište všechny potřebné informace před datový proud (například levou značku XML).

  • Napište datový proud.

  • Za datový proud zapište všechny informace (například uzavírací značka XML).

To funguje dobře s kódováními, které se podobají textovému kódování XML. Existují však některá kódování, která neumisťují informace o informační sadě XML (například značky pro počáteční a koncové elementy XML) společně s daty obsaženými v elementech. Například v kódování MTOM je zpráva rozdělena na více částí. Jedna část obsahuje informační sadu XML, která může obsahovat odkazy na jiné části pro skutečný obsah elementu. Vzhledem k tomu, že informační sada XML bude obvykle malá v porovnání se streamovaným obsahem, má smysl ukládat informace do vyrovnávací paměti, zapisovat ji a pak obsah zapsat streamovaným způsobem. To znamená, že v době, kdy je značka uzavírací prvek napsána, jsme ještě neměli zapsat stream.

K tomuto účelu se IStreamProvider používá rozhraní. Rozhraní má metodu GetStream() , která vrací datový proud k zápisu. Správný způsob zápisu streamovaného textu zprávy je OnWriteBodyContents(XmlDictionaryWriter) následující:

  • Zapište všechny potřebné informace před datový proud (například levá značka XML).

  • WriteValue Volání přetížení na XmlDictionaryWriter , který přebírá IStreamProvider, s implementacíIStreamProvider, která vrací datový proud k zápisu.

  • Zapište všechny informace za streamem (například uzavírací značka XML).

Díky tomuto přístupu má zapisovač XML možnost volat GetStream() a zapsat streamovaná data. Například textový a binární zapisovač XML zavolá okamžitě a zapíše streamovaný obsah mezi počáteční a koncové značky. Zapisovač MTOM se může rozhodnout, GetStream() že zavolá později, až bude připraven napsat příslušnou část zprávy.

Metody

GetStream()

Získá datový proud.

ReleaseStream(Stream)

Uvolní datový proud na výstup.

Platí pro