Ler em inglês

Partilhar via


IStreamProvider Interface

Definição

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

C#
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 o conjunto de informações em buffer, 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 um corpo OnWriteBodyContents(XmlDictionaryWriter) de mensagem transmitido é a seguinte:

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

  • Chame a WriteValue sobrecarga no XmlDictionaryWriter que leva uma IStreamProviderimplementaçã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 tem a opção de quando chamar GetStream() e gravar os dados transmitidos. Por exemplo, os gravadores XML textuais e binários o chamarão imediatamente e escreverão o conteúdo transmitido entre as marcas inicial e final. O gravador MTOM pode decidir ligar GetStream() mais tarde, quando estiver pronto para gravar a parte apropriada da mensagem.

Métodos

GetStream()

Obtém um fluxo.

ReleaseStream(Stream)

Libera um fluxo para a saída.

Aplica-se a

Produto Versões
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 2.0, 2.1