IStreamProvider Interfejs
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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. |