IStreamProvider Interface
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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
WriteValuesobrecarga no XmlDictionaryWriter que aceita um IStreamProvider, com umaIStreamProviderimplementaçã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. |