Compartilhar via


IStreamProvider Interface

Definição

Representa uma interface que pode ser implementada pelas 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 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