Streaminganbieter (WCF Data Services)

Ein Datendienst kann große BLOB-Daten (Binary Large Object) verfügbar machen. Diese Binärdaten können Video- und Audiostreams, Bilder, Dokumentdateien oder andere Typen binärer Medien darstellen. Wenn eine Entität im Datenmodell eine oder mehrere binäre Eigenschaften enthält, gibt der Datendienst diese als Base-64-codierte Binärdaten im Eintrag im Antwortfeed zurück. Da das Laden und das Serialisieren von umfangreichen Binärdaten auf diese Weise die Leistung beeinträchtigen können, definiert Open Data Protocol (OData) einen Mechanismus zum Abrufen von Binärdaten unabhängig von der Entität, zu der sie gehören. Dies wird erreicht, indem die Binärdaten und die Entität in einen oder mehrere Datenströme getrennt werden.

Das OData-Protokoll unterstützt die folgenden beiden Mechanismen zum Verfügbarmachen von Binärdaten als Datenströme, die einer Entität zugeordnet sind:

  • Medienressource/Medienlinkeintrag

    Das Atom Publishing Protocol (AtomPub) definiert einen Mechanismus, um Binärdaten als Medienressource einem Eintrag in einem Datenfeed zuzuordnen, der als Medienlinkeintrag bezeichnet wird. Es kann für einen angegebenen Medienlinkeintrag nur eine definierte Medienressource geben. Eine Medienressource kann als Standarddatenstrom für eine Entität in Betracht gezogen werden. OData übernimmt dieses Streamingverhalten von AtomPub.

  • Benannter Ressourcenstream

    Ab Version 3 von OData kann eine Entität über mehrere zugehörige Ressourcendatenströme verfügen, auf die per Name zugegriffen wird. Dieser Mechanismus hängt nicht von AtomPub ab, deshalb ist es möglich, dass eine Entität über benannte Ressourcendatenströme verfügt und kein Medienlinkeintrag ist. Ein Medienlinkeintrag kann auch über benannte Datenströme verfügen. Weitere Informationen finden Sie unter zum Beitrag Benannte Ressourcenstreams.

Mit WCF Data Services definieren Sie binäre Ressourcenstreams durch das Implementieren von Streamingdatenanbietern. Die Implementierungen des Streaminganbieters stellen dem Datendienst die einer bestimmten Entität zugeordneten Streams als Stream-Objekte zur Verfügung.

Folgende Schritte sind erforderlich, um einen Datendienst zu konfigurieren, der das Streaming von Binärdaten unterstützt:

  1. Ordnen Sie die Entität im Datenmodell zu, das über zugehörige Ressourcenstreams verfügt. Jeder Datenanbieter hat eigene Anforderungen, und jede Art von binärem Ressourcenstream wird im Datenmodell von einem anderen Mechanismus definiert.

  2. Implementieren Sie die folgenden Streamanbieterschnittstellen:

  3. Definieren Sie einen Datendienst, der die IServiceProvider-Schnittstelle implementiert. Der Datendienst verwendet die GetService-Implementierung, um auf die Implementierung des Streamingdatenanbieters zuzugreifen. Diese Methode gibt die entsprechende Streaminganbieterimplementierung zurück.

  4. Aktivieren Sie große Nachrichtendatenströme in der Konfiguration der Webanwendung.

  5. Aktivieren Sie den Zugriff auf binäre Ressourcen auf dem Server oder in einer Datenquelle.

Die Beispiele in diesem Thema basieren auf einem Beispiel für einen Streamingfotodienst, das ausführlich im Beitrag Data Services Streaming Provider Series: Implementing a Streaming Provider (Part 1) erläutert wird. Der Quellcode für diesen Beispieldienst ist auf der Seite Streaming Photo Data Service Sample in der MSDN Code Gallery verfügbar.

Definieren von Ressourcenstreams im Datenmodell

Die Methode, mit der ein binärer Ressourcenstream im Datenmodell definiert wird, hängt davon ab, ob der Datenstrom eine Medienressource oder ein benannter Ressourcenstream ist und welcher Datenquellenanbieter verwendet wird. Im folgenden Beispiel wird die Definition einer Medienressource in den durch den Datendienst zurückgegebenen Metadaten veranschaulicht, wobei PhotoInfo ein Medienlinkeintrag ist, der auch über einen definierten benannten Ressourcenstream (Thumbnail) verfügt:

<EntityType Name="PhotoInfo" m:HasStream="true">
  <Key>
    <PropertyRef Name="PhotoId" />
  </Key>
  <Property Name="PhotoId" Type="Edm.Int32" Nullable="false" 
            p9:StoreGeneratedPattern="Identity" 
            xmlns:p9="https://schemas.microsoft.com/ado/2009/02/edm/annotation" />
  <Property Name="FileName" Type="Edm.String" Nullable="false" />
  <Property Name="FileSize" Type="Edm.Int32" Nullable="true" />
  <Property Name="DateTaken" Type="Edm.DateTime" Nullable="true" />
  <Property Name="TakenBy" Type="Edm.String" Nullable="true" />
  <Property Name="DateAdded" Type="Edm.DateTime" Nullable="false" />
  <Property Name="Exposure" Type="PhotoData.Exposure" Nullable="false" />
  <Property Name="Dimensions" Type="PhotoData.Dimensions" Nullable="false" />
  <Property Name="DateModified" Type="Edm.DateTime" Nullable="false" />
  <Property Name="Comments" Type="Edm.String" Nullable="true" MaxLength="Max" 
            Unicode="true" FixedLength="false" />
  <Property Name="ContentType" Type="Edm.String" Nullable="true" MaxLength="50" 
            Unicode="true" FixedLength="false" />
  <Property Name="Thumbnail" Type="Edm.Stream" Nullable="false" />
</EntityType>

Entity Framework-Anbieter

Wenn Sie den Entity Framework-Anbieter verwenden, definieren Sie abhängig von der Art des Datenstroms mit einer der folgenden Methoden einen binären Ressourcenstream im Datenmodell:

  • Medienressourcenstream:

    Um anzugeben, dass eine Entität ein Medienlinkeintrag ist, der über eine zugehörige Medienressource verfügt, fügen Sie der Entitätstypdefinition das HasStream-Attribut im konzeptionellen Modell hinzu. Sie müssen auch einen Verweis zum Namespace xmlns:m=https://schemas.microsoft.com/ado/2007/08/dataservices/metadata entweder zum Medienlinkeintrag oder einem seiner übergeordneten Elemente im Datenmodell hinzufügen.

  • Benannter Ressourcenstream:

    Ein benannter Stream, der zu einem Medienlinkeintrag gehört, wird als Eigenschaft des Typs Stream im konzeptionellen Modell definiert.

    Wichtig

    Der Stream-Datentyp wird vom Entity Data Model (EDM) ab Version 2.2 unterstützt.Im .NET Framework 4 unterstützt der Entity Framework diese Version von EDM nicht.Um das Problem zu umgehen, können Sie stattdessen einen benannten Ressourcenstream im Datenmodell definieren, indem Sie das NamedStreamAttribute auf die Klasse in der Datenmodellobjektebene anwenden, die die Entität darstellt.In diesem Attribut ist der name-Parameter der Name des Streams.Es empfiehlt sich, dass Sie der Entitätsklasse dieses Attribut hinzufügen, indem Sie eine Definition einer partiellen Klasse erstellen, die in einer separaten Codedatei beibehalten wird; andernfalls wird diese Anpassung überschrieben, wenn die Entitätsdatenklassen vom Entity Framework erneut generiert werden.Wie beim Reflektionsanbieter generiert der Datendienst eine Eigenschaft des angegebenen name-Typs Stream im Datenmodell.

Ein Beispiel zu zum Verfügbarmachen einer Medienressource durch Verwenden des Entity Framework-Anbieters finden Sie im Beitrag Data Services Streaming Provider Series: Implementing a Streaming Provider (Part 1).

Reflektionsanbieter

Wenn Sie den Reflektionsanbieter verwenden, bestimmen Sie, dass ein binärer Ressourcenstream zu einem Entitätstyp gehört, indem Sie Attribute auf einem der folgenden Wege auf die Klasse anwenden, die der Entitätstyp ist, abhängig von der Art des Streams:

  • Medienressourcenstream:

    Übernehmen Sie das HasStreamAttribute, um einen (standardmäßigen) Medienressourcenstream zu definieren, der zu dem Typ gehört, der ein Medienlinkeintrag ist.

  • Benannter Ressourcenstream:

    Übernehmen Sie das NamedStreamAttribute, um einen benannten Ressourcenstream zu definieren, der zu dem Entitätstyp gehört, bei dem der angegebene name-Parameter der Name des Streams ist.

Benutzerdefinierter Datendienstanbieter

Wenn Sie benutzerdefinierte Dienstanbieter verwenden, implementieren Sie die IDataServiceMetadataProvider-Schnittstelle, um die Metadaten für den Datendienst zu definieren. Weitere Informationen finden Sie unter Benutzerdefinierte Datendienstanbieter (WCF Data Services). Sie geben in einer der folgenden Methoden an, dass ein binärer Ressourcenstream zu einem ResourceType gehört:

Implementieren der Streamanbieterschnittstellen

Um einen Datendienst zu erstellen, der binäre Datenströme unterstützt, müssen Sie mindestens die IDataServiceStreamProvider-Schnittstelle implementieren. Diese Implementierung ermöglicht dem Datendienst, Binärdaten als Datenstrom an den Client zurückzugeben und Binärdaten als einen vom Client gesendeten Datenstrom zu nutzen. Um benannte Datenströme zu unterstützen, müssen Sie auch die IDataServiceStreamProvider2-Schnittstelle implementieren. Der Datendienst erstellt immer dann eine Instanz der entsprechenden Schnittstelle, wenn er auf Binärdaten als Datenstrom zugreifen muss.

IDataServiceStreamProvider

Die IDataServiceStreamProvider-Schnittstelle legt die folgenden Member fest:

Elementname

Beschreibung

DeleteStream

Diese Methode wird vom Datendienst aufgerufen, um die entsprechende Medienressource und benannte Datenströme zu löschen, wenn ihr Medienlinkeintrag gelöscht wird. Wenn Sie IDataServiceStreamProvider implementieren, enthält diese Methode den Code, mit dem die dem angegebenen Medienlinkeintrag zugeordneten gesendeten Binärdaten gelöscht werden.

GetReadStream

Diese Methode wird vom Datendienst aufgerufen, um eine Medienressource als Datenstrom zurückzugeben. Wenn Sie IDataServiceStreamProvider implementieren, enthält diese Methode den Code, der einen Datenstrom bereitstellt, der vom Datendienst zum Zurückgeben der dem bereitgestellten Medienlinkeintrag zugeordneten Medienressource verwendet wird.

GetReadStreamUri

Diese Methode wird vom Datendienst aufgerufen, um den URI zurückzugeben, der zum Anfordern der Medienressource für den Medienlinkeintrag verwendet wird. Dieser Wert wird verwendet, um das src-Attribut im Inhaltselement des Medienlinkeintrags zu erstellen. Dieses wird verwendet, um den Datenstrom anzufordern. Wenn diese Methode null zurückgibt, bestimmt der Datendienst den URI automatisch. Verwenden Sie diese Methode, wenn Sie Clients mit direktem Zugriff auf binäre Daten ohne Verwendung des Streamanbieters bereitstellen müssen.

GetStreamContentType

Diese Methode wird vom Datendienst aufgerufen, um den Content-Type-Wert der Medienressource zurückzugeben, die dem angegebenen Medienlinkeintrag zugeordnet ist.

GetStreamETag

Diese Methode wird vom Datendienst aufgerufen, um das eTag des Datenstroms zurückzugeben, das der angegebenen Entität zugeordnet ist. Diese Methode wird verwendet, wenn Sie Parallelität für die Binärdaten verwalten. Wenn diese Methode NULL zurückgibt, überwacht der Datendienst die Parallelität nicht.

GetWriteStream

Diese Methode wird vom Datendienst aufgerufen, um den Datenstrom abzurufen, der beim Empfangen des vom Client gesendeten Datenstroms verwendet wird. Wenn Sie IDataServiceStreamProvider implementieren, müssen Sie einen überschreibbaren Datenstrom zurückgeben, in den der Datendienst empfangene Datenstromdaten schreibt.

ResolveType

Gibt einen mit einem Namespace qualifizierten Typnamen zurück, der den Typ darstellt, den die Datendienstlaufzeit für den Medienlinkeintrag erstellen muss, der dem Datenstrom für die Medienressource zugeordnet ist, die eingefügt wird.

IDataServiceStreamProvider2

Die IDataServiceStreamProvider2-Schnittstelle gibt die folgenden Member an, die Überladungs-Member von IDataServiceStreamProvider sind, um einen ResourceProperty-Parameter zu übernehmen, der ein benannter Ressourcenstream ist:

Elementname

Beschreibung

GetReadStream(Object, ResourceProperty, String, Nullable<Boolean>, DataServiceOperationContext)

Diese Methode wird vom Datendienst aufgerufen, um einen benannten Datenstrom zurückzugeben. Wenn Sie IDataServiceStreamProvider2 implementieren, enthält diese Methode den Code, der einen Datenstrom bereitstellt, der vom Datendienst zum Zurückgeben des dem bereitgestellten Medienlinkeintrag zugeordneten angeforderten benannten Datenstroms verwendet wird.

GetReadStreamUri(Object, ResourceProperty, DataServiceOperationContext)

Diese Methode wird vom Datendienst aufgerufen, um den URI zurückzugeben, der zum Anfordern eines bestimmten benannten Datenstroms für den Medienlinkeintrag verwendet wird. Dieser Wert wird verwendet, um das atom:link-Element zu erstellen, das verwendet wird, um den benannten Datenstrom anzufordern. Wenn diese Methode null zurückgibt, bestimmt der Datendienst den URI automatisch. Verwenden Sie diese Methode, wenn Sie Clients mit direktem Zugriff auf binäre Daten ohne Verwendung des Streamanbieters bereitstellen müssen.

GetStreamContentType(Object, ResourceProperty, DataServiceOperationContext)

Diese Methode wird vom Datendienst aufgerufen, um den Content-Type-Wert eines bestimmten benannten Datenstroms zurückzugeben, der dem angegebenen Medienlinkeintrag zugeordnet ist.

GetStreamETag(Object, ResourceProperty, DataServiceOperationContext)

Diese Methode wird vom Datendienst aufgerufen, um das eTag eines bestimmten benannten Datenstroms zurückzugeben, das der angegebenen Entität zugeordnet ist. Diese Methode wird verwendet, wenn Sie Parallelität für die Binärdaten verwalten. Wenn diese Methode NULL zurückgibt, überwacht der Datendienst die Parallelität nicht.

GetWriteStream(Object, ResourceProperty, String, Nullable<Boolean>, DataServiceOperationContext)

Diese Methode wird vom Datendienst aufgerufen, um den Datenstrom abzurufen, der beim Empfangen eines vom Client gesendeten benannten Datenstroms verwendet wird. Wenn Sie IDataServiceStreamProvider2 implementieren, müssen Sie einen überschreibbaren Datenstrom zurückgeben, in den der Datendienst empfangene Datenstromdaten schreibt.

Erstellen des Streamingdatendiensts

Damit die WCF Data Services-Laufzeit auf die IDataServiceStreamProvider-Implementierung und die IDataServiceStreamProvider2-Implementierung zugreifen kann, muss der Datendienst, den Sie erstellen, auch die IServiceProvider-Schnittstelle implementieren. Im folgenden Beispiel wird gezeigt, wie die GetService-Methode implementiert wird, um eine Instanz der PhotoServiceStreamProvider-Klasse zurückzugeben, die IDataServiceStreamProvider und IDataServiceStreamProvider2 implementiert.

Partial Public Class PhotoData
    Inherits DataService(Of PhotoDataContainer)
    Implements IServiceProvider

    ' This method is called only once to initialize service-wide policies.
    Public Shared Sub InitializeService(ByVal config As DataServiceConfiguration)
        config.SetEntitySetAccessRule("PhotoInfo", _
            EntitySetRights.ReadMultiple Or _
            EntitySetRights.ReadSingle Or _
            EntitySetRights.AllWrite)

        ' Named streams require version 3 of the OData protocol.
        config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V3
    End Sub
#Region "IServiceProvider Members"
    Public Function GetService(ByVal serviceType As Type) As Object _
    Implements IServiceProvider.GetService
        If serviceType Is GetType(IDataServiceStreamProvider) _
            Or serviceType Is GetType(IDataServiceStreamProvider2) Then
            Return New PhotoServiceStreamProvider(Me.CurrentDataSource)
        End If
        Return Nothing
    End Function
#End Region
End Class
public partial class PhotoData : DataService<PhotoDataContainer>, IServiceProvider
{
    // This method is called only once to initialize service-wide policies.
    public static void InitializeService(DataServiceConfiguration config)
    {
        config.SetEntitySetAccessRule("PhotoInfo",
            EntitySetRights.ReadMultiple |
            EntitySetRights.ReadSingle |
            EntitySetRights.AllWrite);

        // Named resource streams require version 3 of the OData protocol.
        config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V3;
    }
    public object GetService(Type serviceType)
    {
        if (serviceType == typeof(IDataServiceStreamProvider2))
        {
            // Return the stream provider to the data service.
            return new PhotoServiceStreamProvider(this.CurrentDataSource);
        }

        return null;
    }
}

Allgemeine Informationen zum Erstellen eines Datendiensts finden Sie unter Konfigurieren des Datendiensts (WCF Data Services).

Aktivieren von großen binären Datenströmen in der Hostumgebung

Wenn Sie einen Datendienst in einer ASP.NET-Webanwendung erstellen, wird Windows Communication Foundation (WCF) verwendet, um die HTTP-Protokollimplementierung bereitzustellen. Standardmäßig schränkt WCF die Größe von HTTP-Nachrichten auf nur 65 KB ein. Damit umfangreiche Binärdaten als Datenstrom zum und vom Datendienst gesendet werden können, müssen Sie auch die Webanwendung für die Verwendung großer Binärdateien und den Einsatz von Datenströmen für die Übertragung konfigurieren. Fügen Sie dazu Folgendes im <configuration />-Element der Datei Web.config der Anwendung hinzu:

   <system.serviceModel>
        <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
        <services>
            <!-- The name of the service -->
            <service name="PhotoService.PhotoData">
                <!--you can leave the address blank or specify your end point URI-->
                <endpoint binding="webHttpBinding" bindingConfiguration="higherMessageSize" 
                  contract="System.Data.Services.IRequestHandler"></endpoint>
            </service>
        </services>
        <bindings>
            <webHttpBinding>
                <!-- configure the maxReceivedMessageSize value to suit the max size of 
   the request (in bytes) you want the service to receive-->
                <binding name="higherMessageSize" transferMode="Streamed"  
                 maxReceivedMessageSize="2147483647"/>
            </webHttpBinding>
        </bindings>
    </system.serviceModel>

Hinweis

Sie müssen einen TransferMode.Streamed-Übertragungsmodus verwenden, damit sichergestellt ist, dass die binären Daten in Anforderungs- und Antwortnachrichten gestreamt und nicht von WCF zwischengespeichert werden.

Weitere Informationen finden Sie unter Streaming Message Transfer und Transport Quotas.

Darüber hinaus wird die Größe von Anforderungen von Internetinformationsdienste (IIS) standardmäßig auf 4 MB begrenzt. Damit Datenströme mit mehr als 4 MB bei der Ausführung in IIS vom Datendienst empfangen werden können, müssen Sie auch das maxRequestLength-Attribut des httpRuntime Element im Konfigurationsabschnitt <system.web /> festlegen, wie im folgenden Beispiel veranschaulicht:

 <system.web>
        <!-- maxRequestLength (in KB): default=4000 (4MB); max size=2048MB. -->
        <httpRuntime maxRequestLength="2000000"/>
  </system.web>

Verwenden von Datenströmen in einer Clientanwendung

Sie können mit einem der folgenden URIs direkt auf einen binären Datenstream zugreifen:

  • Medienressourcenstream:

    https://localhost/PhotoService/PhotoData.svc/PhotoInfo(1)/$value
    
  • Benannter Ressourcenstream:

    https://localhost/PhotoService/PhotoData.svc/PhotoInfo(1)/Thumbnail
    

Mithilfe der WCF Data Services-Clientbibliothek können Sie diese verfügbar gemachten Ressourcen als binäre Datenströme auf dem Client abrufen und aktualisieren. Weitere Informationen finden Sie unter Arbeiten mit Binärdaten (WCF Data Services).

Überlegungen zum Arbeiten mit einem Streaminganbieter

Folgende Aspekte sollten bei der Implementierung eines Streaminganbieters und beim Zugriff auf Medienressourcen von einem Datendienst aus berücksichtigt werden.

  • Für die Unterstützung der Medienressource oder benannten Ressourcenstreams müssen Sie die IDataServiceStreamProvider-Schnittstelle implementieren. Um benannte Ressourcenstreams zu unterstützen, müssen Sie auch die IDataServiceStreamProvider2-Schnittstelle implementieren.

  • Wenn Sie einen benannten Ressourcenstream definieren, der zu einem Medienlinkeintrag gehört, sollte die im Datenmodell definierte Entität keine Eigenschaft mit dem gleichen Namen wie der Datenstrom enthalten.

  • MERGE-Anforderungen werden für Medienressourcen nicht unterstützt. Verwenden Sie eine PUT-Anforderung, um die Medienressource einer vorhandenen Entität zu ändern.

  • Eine POST-Anforderung kann nicht verwendet werden, um einen neuen Medienlinkeintrag zu erstellen. Stattdessen müssen Sie eine POST-Anforderung absetzen, um eine neue Medienressource zu erstellen, und der Datendienst erstellt einen neuen Medienlinkeintrag mit Standardwerten. Diese neue Entität kann durch eine nachfolgende MERGE- oder PUT-Anforderung aktualisiert werden. Sie sollten außerdem in Betracht ziehen, die Entität zwischenzuspeichern und Aktualisierungen in der Funktion zum Entfernen vorzunehmen, z. B. das Festlegen des Eigenschaftswerts auf den Wert des Headers des Platzhalterfelds in der POST-Anforderung.

  • Wenn eine POST-Anforderung empfangen wird, ruft der Datendienst GetWriteStream auf, um die Medienressource zu erstellen, bevor er SaveChanges aufruft, um den Medienlinkeintrag zu erstellen.

  • Eine Implementierung von GetWriteStream sollte kein MemoryStream-Objekt zurückgeben. Bei der Verwendung solcher Datenströme treten Speicherressourcenprobleme auf, wenn der Dienst sehr große Datenströme empfängt.

  • Folgende Aspekte müssen berücksichtigt werden, wenn Medienressourcen in einer Datenbank gespeichert werden:

    • Eine binäre Eigenschaft, die eine Medienressource ist, sollte nicht im Datenmodell enthalten sein. Alle in einem Datenmodell zur Verfügung gestellten Eigenschaften werden im Eintrag in einem Antwortfeed zurückgegeben.

    • Um die Leistung bei einem großen binären Datenstrom zu verbessern, empfiehlt es sich, eine benutzerdefinierte Datenstromklasse zu erstellen, um Binärdaten in der Datenbank zu speichern. Diese Klasse wird von der GetWriteStream-Implementierung zurückgegeben und sendet die Binärdaten in Blöcken an die Datenbank. Für eine SQL Server-Datenbank empfiehlt es sich, Daten mithilfe eines FILESTREAM in die Datenbank zu übertragen, wenn die Binärdaten größer als 1 MB sind.

    • Stellen Sie sicher, dass die Datenbank zum Speichern großer binärer Datenströme entworfen wurde, die vom Datendienst empfangen werden sollen.

    • Wenn ein Client eine POST-Anforderung sendet, um einen Medienlinkeintrag mit einer Medienressource in einer einzelnen Anforderung einzufügen, wird GetWriteStream aufgerufen, um den Datenstrom abzurufen, bevor der Datendienst die neue Entität in die Datenbank einfügt. Eine Streaminganbieterimplementierung muss in der Lage sein, mit diesem Verhalten des Datendiensts umzugehen. Sie können die Binärdaten mithilfe einer separaten Datentabelle speichern oder den Datenstrom in einer Datei speichern, bis die Entität in die Datenbank eingefügt wurde.

  • Wenn Sie die Methode DeleteStream, GetReadStream oder GetWriteStream implementieren, müssen Sie die eTag- und Content-Type-Werte verwenden, die als Methodenparameter angegeben werden. Legen Sie keine eTag- oder Content-Type-Header in der IDataServiceStreamProvider-Anbieterimplementierung fest.

  • Standardmäßig sendet der Client große binäre Datenströme mithilfe einer segmentierten HTTP-Übertragungscodierung. Da ASP.NET Development Server diese Art von Codierung nicht unterstützt, können Sie diesen Webserver zum Hosten eines Streamingdatendiensts nicht verwenden, der große binäre Datenströme annehmen muss. Weitere Informationen zu ASP.NET Development Server finden Sie unter Web Servers in Visual Web Developer.

Versionsanforderungen

Der Streaminganbieter hat die folgenden Anforderungen an die OData-Protokollversion:

  • Der Streaminganbieter erfordert, dass der Datendienst Version 2.0 des OData-Protokolls und höhere Versionen unterstützt.

  • Die Unterstützung für benannte Datenströme erfordert, dass der Client und der Datendienst Version 3.0 des OData-Protokolls und höhere Versionen unterstützt.

Weitere Informationen finden Sie unter Datendienst-Versionskontrolle (WCF Data Services).

Siehe auch

Konzepte

Datendienstanbieter (WCF Data Services)

Benutzerdefinierte Datendienstanbieter (WCF Data Services)

Arbeiten mit Binärdaten (WCF Data Services)