Export (0) Print
Expand All
This topic has not yet been rated - Rate this topic

IStreamProvider Interface

Represents an interface that can be implemented by classes providing streams.

Namespace:  System.Xml
Assembly:  System.Runtime.Serialization (in System.Runtime.Serialization.dll)
public interface class IStreamProvider

The IStreamProvider type exposes the following members.

Public methodGetStreamGets a stream.
Public methodReleaseStreamReleases a stream to output.

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:

  • Write any necessary information preceding the stream (For example, the opening XML tag).

  • Write the stream.

  • Write any information following the stream (For example, the closing XML tag).

This works well with encodings that are similar to the textual XML encoding. 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. For example, in the MTOM encoding, the message is split into multiple parts. One part contains the XML infoset, which may contain references to other parts for actual element contents. 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.

For this purpose, the IStreamProvider interface is used. The interface has a GetStream() method that returns the stream to be written. The correct way to write out a streamed message body in OnWriteBodyContents(XmlDictionaryWriter) is as follows:

  • Write any necessary information preceding the stream (For example, the opening XML tag)

  • Call the WriteValue overload on the XmlDictionaryWriter that takes an IStreamProvider, with an IStreamProvider implementation that returns the stream to be written.

  • Write any information following the stream (For example, the closing XML tag)

With this approach, the XML writer has a choice of when to call GetStream() and write out the streamed data. 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. The MTOM writer may decide to call GetStream() later, when it is ready to write the appropriate part of the message.

.NET Framework

Supported in: 4.5.1, 4.5, 4, 3.5, 3.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Did you find this helpful?
(1500 characters remaining)
Thank you for your feedback
© 2014 Microsoft. All rights reserved.