Langage

IStreamProvider Interface

Définition

Représente une interface qui peut être implémentée par des classes fournissant des flux.

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 diffusé en continu dans un enregistreur XML, il Message utilise une séquence d’appels similaires à ce qui suit dans son OnWriteBodyContents(XmlDictionaryWriter) implémentation :

  • Écrivez les informations nécessaires avant le flux (par exemple, la balise XML ouvrante).

  • Écrivez le flux de données.

  • Écrivez les informations suivantes dans le flux (par exemple, la balise XML fermante).

Cela fonctionne bien avec les encodages similaires à l’encodage XML textuel. Toutefois, certains encodages ne placent pas d’informations d’ensemble d’informations XML (par exemple, des balises pour les éléments XML de démarrage et de fin) avec les données contenues dans les éléments. Par exemple, dans l’encodage MTOM, le message est divisé en plusieurs parties. Une partie contient l’ensemble d’informations XML, qui peut contenir des références à d’autres parties pour le contenu réel de l’élément. Étant donné que le jeu d’informations XML sera normalement petit par rapport au contenu diffusé, il est judicieux de mettre en mémoire tampon l’ensemble d’informations, de l’écrire, puis d’écrire le contenu de manière diffusée. Cela signifie qu’au moment où la balise d’élément de fermeture est écrite, nous ne devrions pas encore avoir écrit le flux.

À cet effet, l’interface IStreamProvider est utilisée. L’interface a une GetStream() méthode qui retourne le flux à écrire. La bonne façon d’écrire un corps de message transmis en continu dans OnWriteBodyContents(XmlDictionaryWriter) est la suivante :

  • Écrivez les informations nécessaires avant le flux (par exemple, la balise XML ouvrante)

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

  • Écrivez toutes les informations suivantes le flux (par exemple, la balise XML fermante)

Avec cette approche, l'enregistreur XML peut choisir à quel moment appeler GetStream() et écrire les données avec diffusion en continu. Par exemple, les enregistreurs XML textuels et binaires l’appellent immédiatement et écrivent le contenu diffusé 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

Nom Description
GetStream()

Obtient un flux.

ReleaseStream(Stream)

Libère un flux de sortie.

S’applique à