IStreamProvider Interface

Définition

Représente une interface qui peut être implémentée par les classes qui fournissent des flux de données.

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

Remarques

Lors de l'écriture d'un message sortant contenant un corps transféré en continu vers un writer XML, le Message utilise une séquence d'appels similaire à la suivante dans son implémentation OnWriteBodyContents(XmlDictionaryWriter) :

  • Écrire toutes les informations nécessaires précédant le flux (par exemple, l’étiquette XML de début).

  • Écrire le flux.

  • Écrire toutes les informations suivant le flux (par exemple, l’étiquette XML de fin).

Cela fonctionne correctement avec des encodages similaires à l'encodage XML textuel. Toutefois, certains encodages ne placent pas d’ensembles d’informations XML (par exemple, les étiquettes encadrant des éléments XML) avec les données contenues dans des éléments. Avec l'encodage MTOM par exemple, le message est fractionné en plusieurs parties. Une partie contient l'ensemble d'informations XML, qui peut contenir des références à d'autres parties pour le contenu d'éléments réels. Puisque la taille de l'ensemble d'informations XML est normalement réduite par rapport à celle du contenu transféré en continu, il est logique de mettre cet ensemble en mémoire tampon, de l'écrire, puis d'écrire le contenu en continu. Cela signifie que lorsque l’étiquette de l’élément fermant est écrite, le flux ne doit pas encore avoir été écrit.

L'interface IStreamProvider est utilisée à cette fin. Elle dispose d'une méthode GetStream() qui retourne le flux à écrire. Pour écrire un corps de message avec diffusion en continu dans OnWriteBodyContents(XmlDictionaryWriter) , procédez comme suit :

  • Écrire toutes les informations nécessaires précédant le flux (par exemple, l’étiquette XML de début).

  • Appelez la surcharge WriteValue sur le XmlDictionaryWriter qui accepte IStreamProvider, avec une implémentation IStreamProvider qui retourne le flux à écrire.

  • Écrire toutes les informations suivant le flux (par exemple, la balise XML de fin).

Avec cette approche, l'enregistreur XML peut choisir à quel moment appeler GetStream() et écrire les données avec diffusion en continu. Par exemple, les writers XML textuels et binaires l'appellent immédiatement et écrivent le contenu transféré en continu entre les balises de début et de fin. L'enregistreur MTOM peut décider d'appeler GetStream() ultérieurement, lorsqu'il est prêt à écrire la partie appropriée du message.

Méthodes

GetStream()

Obtient un flux de données.

ReleaseStream(Stream)

Libère un flux de données dans lequel générer.

S’applique à