IStreamProvider Interface

Definição

Representa uma interface que pode ser implementada por classes que fornecem fluxos.

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

Observações

Ao escrever uma mensagem de saída contendo um corpo transmitido para um escritor XML, o Message utilizador utilizará uma sequência de chamadas semelhante à seguinte na sua OnWriteBodyContents(XmlDictionaryWriter) implementação:

  • Escreva qualquer informação necessária antes do fluxo (por exemplo, a etiqueta XML de abertura).

  • Escreva o fluxo.

  • Escreva qualquer informação após o fluxo (por exemplo, a etiqueta XML de encerramento).

Isso funciona bem com codificações que são semelhantes à codificação XML textual. No entanto, existem algumas codificações que não colocam a informação do conjunto de infoconjuntos XML (por exemplo, etiquetas para elementos iniciais e finais de XML) juntamente com os dados contidos nos elementos. Por exemplo, na codificação MTOM, a mensagem é dividida em várias partes. Uma parte contém o conjunto de informações XML, que pode conter referências a outras partes para conteúdos reais dos elementos. Como o conjunto de infos XML normalmente será pequeno comparado com o conteúdo transmitido, faz sentido armazenar o infoconjunto em buffer, escrevê-lo e depois escrever o conteúdo de forma streaming. Isto significa que, quando a etiqueta do elemento de fecho é escrita, ainda não deveríamos ter escrito o fluxo.

Para este efeito, a IStreamProvider interface é usada. A interface tem um GetStream() método que retorna o fluxo a ser gravado. A maneira correta de escrever um corpo de mensagem transmitida em OnWriteBodyContents(XmlDictionaryWriter) é a seguinte:

  • Escreva qualquer informação necessária antes do fluxo (por exemplo, a etiqueta XML de abertura)

  • Chame a WriteValue sobrecarga no XmlDictionaryWriter que aceita um IStreamProvider, com uma IStreamProvider implementação que retorna o stream a ser gravado.

  • Escreva qualquer informação após o fluxo (por exemplo, a etiqueta XML de encerramento)

Com esta abordagem, o escritor XML pode escolher quando chamar GetStream() e escrever os dados transmitidos. Por exemplo, os escritores de XML textual e binário chamam-na imediatamente e escrevem o conteúdo transmitido entre as etiquetas de início e fim. O gravador MTOM pode decidir chamar GetStream() mais tarde, quando estiver pronto para escrever a parte da mensagem apropriada.

Métodos

Name Description
GetStream()

Recebe um stream.

ReleaseStream(Stream)

Liberta um stream para a saída.

Aplica-se a