IStreamProvider IStreamProvider IStreamProvider IStreamProvider Interface

Definición

Representa una interfaz que se puede implementar mediante clases que proporcionan secuencias.Represents an interface that can be implemented by classes providing streams.

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

Comentarios

Al escribir un mensaje saliente que contiene un cuerpo transmitido a un sistema de escritura XML, Message utilizará una secuencia de llamadas similar a la siguiente en su implementación OnWriteBodyContents(XmlDictionaryWriter):When writing an outgoing message containing a streamed body to an XML writer, the Message will use a sequence of calls similar to the following in its OnWriteBodyContents(XmlDictionaryWriter) implementation:

  • Escriba cualquier información necesaria que preceda a la secuencia (por ejemplo, la etiqueta de apertura XML).Write any necessary information preceding the stream (For example, the opening XML tag).

  • Escriba la secuencia.Write the stream.

  • Escriba cualquier información que siga a la secuencia (por ejemplo, la etiqueta de cierre XML).Write any information following the stream (For example, the closing XML tag).

Esto funciona bien con codificaciones similares a la codificación XML textual.This works well with encodings that are similar to the textual XML encoding. Sin embargo, hay algunas codificaciones que no proporcionan información del conjunto de información (por ejemplo, etiquetas para iniciar y finalizar elementos XML) de XML junto con los datos contenidos en los elementos.However, there are some encodings that do not place XML infoset information (For example, tags for starting and ending XML elements) together with the data contained within elements. Por ejemplo, para la codificación MTOM, la codificación del mensaje se divide en varias partes.For example, in the MTOM encoding, the message is split into multiple parts. Una parte contiene el conjunto de información XML, que puede contener referencias a otras partes de contenidos de elementos reales.One part contains the XML infoset, which may contain references to other parts for actual element contents. Puesto que el conjunto de información XML será normalmente pequeño en comparación con el contenido transmitido, tiene sentido almacenar en búfer el conjunto de información, escribirlo y, a continuación, escribir el contenido de una manera transmitida.Since the XML infoset will normally be small compared to the streamed contents, it makes sense to buffer the infoset, write it out, and then write the contents in a streamed way. Esto significa que cuando se escribe la etiqueta de elemento de cierre, no deberíamos haber escrito todavía la secuencia.This means that by the time the closing element tag is written, we should not have written out the stream yet.

Para este propósito, se utiliza la interfaz IStreamProvider .For this purpose, the IStreamProvider interface is used. La interfaz tiene un método GetStream() que devuelve la secuencia que se va a escribir.The interface has a GetStream() method that returns the stream to be written. La manera correcta de escribir un cuerpo de mensaje transmitido OnWriteBodyContents(XmlDictionaryWriter) es la siguiente:The correct way to write out a streamed message body in OnWriteBodyContents(XmlDictionaryWriter) is as follows:

  • Escriba cualquier información necesaria que preceda a la secuencia (por ejemplo, la etiqueta de apertura XML)Write any necessary information preceding the stream (For example, the opening XML tag)

  • Llame a la sobrecarga WriteValue en el XmlDictionaryWriter que toma IStreamProvider, con una implementación IStreamProvider que devuelve la secuencia que se va a escribir.Call the WriteValue overload on the XmlDictionaryWriter that takes an IStreamProvider, with an IStreamProvider implementation that returns the stream to be written.

  • Escriba cualquier información que siga a la secuencia (por ejemplo, la etiqueta de cierre XML)Write any information following the stream (For example, the closing XML tag)

Con este enfoque, el sistema de escritura XML puede escoger cuándo llamar GetStream() y escribir los datos transmitidos por secuencias.With this approach, the XML writer has a choice of when to call GetStream() and write out the streamed data. Por ejemplo, los sistemas de escritura XML textual y binario lo llamarán inmediatamente y escribirán el contenido transmitido entre las etiquetas de cierre e inicio.For example, the textual and binary XML writers will call it immediately and write out the streamed contents in between the start and end tags. El sistema de escritura de MTOM puede decidir llamar GetStream() posteriormente, cuando esté listo para escribir la parte adecuada del mensaje.The MTOM writer may decide to call GetStream() later, when it is ready to write the appropriate part of the message.

Métodos

GetStream() GetStream() GetStream() GetStream()

Obtiene una secuencia.Gets a stream.

ReleaseStream(Stream) ReleaseStream(Stream) ReleaseStream(Stream) ReleaseStream(Stream)

Libera una secuencia para la salida.Releases a stream to output.

Se aplica a