Condividi tramite


IStreamProvider Interfaccia

Definizione

Rappresenta un'interfaccia che può essere implementata da classi che forniscono flussi.

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

Commenti

Quando si scrive in un writer XML un messaggio in uscita che contiene un corpo inviato come flusso, Message utilizzerà una sequenza di chiamate simili alle seguenti nell'implementazione di OnWriteBodyContents(XmlDictionaryWriter):

  • Scrivere tutte le informazioni necessarie prima del flusso (ad esempio, il tag di apertura XML).

  • Scrivere il flusso.

  • Scrivere tutte le informazioni dopo il flusso (ad esempio, il tag di chiusura XML).

Questa procedura funziona bene con codifiche simili alla codifica XML testuale. Esistono, tuttavia, alcune codifiche che non inseriscono informazioni InfoSet XML (ad esempio, i tag di inizio e fine di elementi XML) insieme ai dati contenuti all'interno di elementi. Nella codifica MTOM, ad esempio, il messaggio è suddiviso in più parti. Una parte contiene l'InfoSet XML, che può contenere riferimenti ad altre parti per il contenuto effettivo degli elementi. Dato che, in genere, l'InfoSet XML è di piccole dimensioni rispetto al contenuto inviato nel flusso, è consigliabile memorizzarlo nel buffer, scriverlo e quindi scrivere il contenuto in un flusso. Ciò significa che quando viene scritto il tag dell'elemento di chiusura, il flusso non dovrebbe essere stato ancora scritto.

A tale fine, viene utilizzata l'interfaccia IStreamProvider . L'interfaccia ha un metodo GetStream() che restituisce il flusso da scrivere. La modalità corretta per scrivere il corpo di un messaggio inviato in un flusso in OnWriteBodyContents(XmlDictionaryWriter) è la seguente:

  • Scrivere tutte le informazioni necessarie prima del flusso (ad esempio, il tag XML di apertura)

  • Chiamare l'overload WriteValue in XmlDictionaryWriter che prende un IStreamProvider, con un'implementazione IStreamProvider che restituisce il flusso da scrivere.

  • Scrivere tutte le informazioni dopo il flusso (ad esempio, il tag di chiusura XML).

Con questo approccio, il writer XML può scegliere quando chiamare GetStream() e scrivere i dati inviati nel flusso. I writer XML binari e testuali, ad esempio, lo chiameranno immediatamente e scriveranno il contenuto nel flusso tra il tag di inizio e quello di fine. Il writer MTOM può decidere di chiamare GetStream() in un secondo momento, quando è pronto per scrivere la parte appropriata del messaggio.

Metodi

GetStream()

Ottiene un flusso.

ReleaseStream(Stream)

Rilascia un flusso da restituire come output.

Si applica a