IStreamProvider Interface
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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
WriteValuesur le XmlDictionaryWriter qui accepte IStreamProvider, avec une implémentationIStreamProviderqui 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. |