Udostępnij za pośrednictwem


IStreamProvider Interfejs

Definicja

Reprezentuje interfejs, który można zaimplementować przez klasy dostarczające strumienie.

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

Uwagi

Podczas pisania komunikatu wychodzącego zawierającego treść strumieniową do modułu zapisywania Message XML użyje sekwencji wywołań podobnych do następujących w implementacji OnWriteBodyContents(XmlDictionaryWriter) :

  • Napisz wszelkie niezbędne informacje poprzedzające strumień (na przykład otwierający tag XML).

  • Zapisz strumień.

  • Zapisz wszelkie informacje po strumieniu (na przykład zamykający tag XML).

Dobrze sprawdza się w przypadku kodowania, które są podobne do kodowania tekstowego XML. Istnieją jednak pewne kodowania, które nie umieszczają informacji o zestawie informacji xml (na przykład tagów do uruchamiania i kończenia elementów XML) wraz z danymi zawartymi w elementach. Na przykład w kodowaniu MTOM komunikat jest podzielony na wiele części. Jedna część zawiera zestaw informacji XML, który może zawierać odwołania do innych części dla rzeczywistej zawartości elementu. Ponieważ zestaw informacji XML będzie zwykle mały w porównaniu z strumieniową zawartością, warto buforować zestaw informacji, zapisywać ją w sposób strumieniowy, a następnie zapisywać zawartość w strumieniowy sposób. Oznacza to, że przez czas zapisywania tagu elementu zamykającego nie powinniśmy jeszcze zapisywać strumienia.

W tym celu IStreamProvider jest używany interfejs. Interfejs ma metodę zwracającą GetStream() strumień do zapisania. Prawidłowym sposobem na zapisanie przesyłanej strumieniowo treści wiadomości w programie OnWriteBodyContents(XmlDictionaryWriter) jest następująca:

  • Napisz wszelkie niezbędne informacje poprzedzające strumień (na przykład otwierający tag XML)

  • Wywołaj WriteValue przeciążenie elementu XmlDictionaryWriter , które przyjmuje IStreamProviderelement z implementacją IStreamProvider , która zwraca strumień do zapisania.

  • Napisz wszelkie informacje po strumieniu (na przykład zamykający tag XML)

Dzięki temu podejściu składnik zapisywania XML może wybrać, kiedy wywołać GetStream() i zapisać przesyłane strumieniowo dane. Na przykład tekstowe i binarne zapisy XML będą wywoływać je natychmiast i zapisywać strumieniową zawartość między tagami początkowymi i końcowymi. Składnik zapisywania MTOM może zdecydować się na późniejsze wywołanie GetStream() , gdy będzie gotowy do zapisania odpowiedniej części wiadomości.

Metody

GetStream()

Pobiera strumień.

ReleaseStream(Stream)

Zwalnia strumień do danych wyjściowych.

Dotyczy