IStreamProvider Interface
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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çãoIStreamProvider
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. |