IStreamProvider Interfaccia

Definizione

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

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

Commenti

Quando si scrive un messaggio in uscita contenente un corpo trasmesso a un writer XML, Message verrà utilizzata una sequenza di chiamate simile alla seguente nell'implementazione OnWriteBodyContents(XmlDictionaryWriter) :

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

  • Scrivi il flusso.

  • Scrivere tutte le informazioni seguenti al flusso , ad esempio il tag XML di chiusura.

Ciò funziona bene con le codifiche simili alla codifica XML testuale. Esistono tuttavia alcune codifiche che non inseriscono informazioni sull'infoset XML (ad esempio, tag per gli elementi XML iniziali e finali) insieme ai dati contenuti all'interno degli elementi. Ad esempio, nella codifica MTOM, il messaggio viene suddiviso in più parti. Una parte contiene l'infoset XML, che può contenere riferimenti ad altre parti per il contenuto effettivo degli elementi. Poiché l'infoset XML in genere sarà di piccole dimensioni rispetto al contenuto trasmesso, è opportuno memorizzare nel buffer l'infoset, scriverlo e quindi scrivere il contenuto in un flusso. Ciò significa che quando il tag dell'elemento di chiusura viene scritto, non è stato ancora scritto il flusso.

A questo scopo, viene usata l'interfaccia IStreamProvider . L'interfaccia dispone di un GetStream() metodo che restituisce il flusso da scrivere. Il modo corretto per scrivere un corpo del messaggio trasmesso in OnWriteBodyContents(XmlDictionaryWriter) è il seguente:

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

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

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

Con questo approccio, il writer XML ha la possibilità di scegliere quando chiamare GetStream() e scrivere i dati trasmessi. Ad esempio, i writer XML testuali e binari lo chiameranno immediatamente e scriveranno il contenuto trasmesso tra i tag iniziale e finale. Lo scrittore MTOM può decidere di chiamare GetStream() in un secondo momento, quando è pronto per scrivere la parte appropriata del messaggio.

Metodi

Nome Descrizione
GetStream()

Ottiene un flusso.

ReleaseStream(Stream)

Rilascia un flusso per l'output.

Si applica a