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

Comentários

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

  • Escreva as informações necessárias antes do fluxo (por exemplo, a marca XML de abertura).

  • Escreva o fluxo.

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

Isso funciona bem com codificações semelhantes à codificação XML textual. No entanto, há algumas codificações que não colocam informações de conjunto de informações XML (por exemplo, marcas para elementos XML iniciais e finais) junto 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údo de elemento real. Como o conjunto de informações XML normalmente será pequeno em comparação com o conteúdo transmitido, faz sentido armazenar em buffer o conjunto de informações, gravá-lo e gravar o conteúdo de maneira transmitida. Isso significa que, quando a marca de elemento de fechamento for gravada, ainda não deveríamos ter gravado o fluxo.

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

  • Escreva as informações necessárias antes do fluxo (por exemplo, a marca XML de abertura)

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

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

Com essa abordagem, o gravador XML pode escolher quando chamar GetStream() e gravar os dados transmitidos. Por exemplo, os gravadores XML textuais e binários o chamarão imediatamente e gravarão o conteúdo transmitido entre as marcas inicial e final. O gravador MTOM pode decidir chamar GetStream() mais tarde, quando estiver pronto para gravar a parte apropriada da mensagem.

Métodos

Nome Description
GetStream()

Obtém um fluxo.

ReleaseStream(Stream)

Libera um fluxo para a saída.

Aplica-se a