IStreamProvider IStreamProvider IStreamProvider IStreamProvider Interface

정의

스트림을 제공하는 클래스에서 구현할 수 있는 인터페이스를 나타냅니다.Represents an interface that can be implemented by classes providing streams.

public interface class IStreamProvider
public interface IStreamProvider
type IStreamProvider = interface
Public Interface IStreamProvider

설명

XML 작성기에 스트리밍된 본문이 포함된 보내는 메시지를 쓸 때 MessageOnWriteBodyContents(XmlDictionaryWriter) 구현에서 다음과 유사한 호출의 시퀀스를 사용합니다.When writing an outgoing message containing a streamed body to an XML writer, the Message will use a sequence of calls similar to the following in its OnWriteBodyContents(XmlDictionaryWriter) implementation:

  • 스트림 앞에 필요한 정보를 씁니다(예: 여는 XML 태그).Write any necessary information preceding the stream (For example, the opening XML tag).

  • 스트림을 씁니다.Write the stream.

  • 스트림 뒤에 필요한 정보를 씁니다(예: 닫는 XML 태그).Write any information following the stream (For example, the closing XML tag).

이는 텍스트 XML 인코딩과 유사한 인코딩을 사용하여 작동합니다.This works well with encodings that are similar to the textual XML encoding. 그러나 XML infoset 정보(예: XML 요소의 시작 및 끝 태그)를 요소 내에 포함된 데이터와 함께 사용하지 않는 일부 인코딩이 있습니다.However, there are some encodings that do not place XML infoset information (For example, tags for starting and ending XML elements) together with the data contained within elements. 예를 들어 MTOM 인코딩에서 메시지는 여러 부분으로 나누어집니다.For example, in the MTOM encoding, the message is split into multiple parts. 하나의 부분에는 실제 요소 콘텐츠의 다른 부분에 대한 참조가 포함될 수 있는 XML infoset이 포함됩니다.One part contains the XML infoset, which may contain references to other parts for actual element contents. XML infoset이 일반적으로 스트리밍된 콘텐츠와 비교하여 작으므로 infoset을 버퍼링하고 쓴 다음 스트리밍된 방법으로 콘텐츠를 쓰는 것이 좋습니다.Since the XML infoset will normally be small compared to the streamed contents, it makes sense to buffer the infoset, write it out, and then write the contents in a streamed way. 즉, 이는 닫는 요소 태그가 작성될 때까지는 스트림을 쓰면 안 된다는 것을 의미합니다.This means that by the time the closing element tag is written, we should not have written out the stream yet.

이를 위해 IStreamProvider 인터페이스가 사용됩니다.For this purpose, the IStreamProvider interface is used. 인터페이스에는 작성할 스트림을 반환하는 GetStream() 메서드가 있습니다.The interface has a GetStream() method that returns the stream to be written. OnWriteBodyContents(XmlDictionaryWriter) 에서 스트리밍된 메시지 본문을 쓰는 올바른 방법은 다음과 같습니다.The correct way to write out a streamed message body in OnWriteBodyContents(XmlDictionaryWriter) is as follows:

  • 스트림 앞에 필요한 정보를 씁니다(예: 여는 XML 태그).Write any necessary information preceding the stream (For example, the opening XML tag)

  • 쓸 스트림을 반환하는 WriteValue 구현과 함께 XmlDictionaryWriter 를 사용하는 IStreamProvider에서 IStreamProvider 오버로드를 호출합니다.Call the WriteValue overload on the XmlDictionaryWriter that takes an IStreamProvider, with an IStreamProvider implementation that returns the stream to be written.

  • 스트림 뒤에 필요한 정보를 씁니다(예: 닫는 XML 태그).Write any information following the stream (For example, the closing XML tag)

이 방법을 사용하면 GetStream() 을 호출하고 스트리밍된 데이터를 작성할 때 XML 작성기를 선택할 수 있습니다.With this approach, the XML writer has a choice of when to call GetStream() and write out the streamed data. 예를 들어 텍스트 및 이진 XML 작성기는 이를 즉각 호출하고 시작 및 끝 태그 사이에서 스트리밍된 콘텐츠를 작성합니다.For example, the textual and binary XML writers will call it immediately and write out the streamed contents in between the start and end tags. MTOM 작성기는 메시지의 적절한 일부를 쓸 준비가 되면 나중에 GetStream() 을 호출할지 결정할 수 있습니다.The MTOM writer may decide to call GetStream() later, when it is ready to write the appropriate part of the message.

메서드

GetStream() GetStream() GetStream() GetStream()

스트림을 가져옵니다.Gets a stream.

ReleaseStream(Stream) ReleaseStream(Stream) ReleaseStream(Stream) ReleaseStream(Stream)

출력할 스트림을 해제합니다.Releases a stream to output.

적용 대상