Hosten des Datendiensts (WCF Data Services)
Mit WCF Data Services können Sie einen Dienst erstellen, der Daten als Open Data Protocol (OData)-Feed verfügbar macht. Dieser Datendienst wird als Klasse definiert, die von DataService<T> erbt. Diese Klasse stellt die Funktionalität bereit, die erforderlich ist, um Anforderungsnachrichten zu verarbeiten, Updates für die Datenquelle auszuführen und Antwortnachrichten zu generieren, wie von OData gefordert. Ein Datendienst kann jedoch Netzwerksockets für eingehende HTTP-Anforderungen weder binden noch diese überwachen. Für diese erforderliche Funktion benötigt der Datendienst eine Hostingkomponente.
Der Datendiensthost führt die folgenden Aufgaben im Namen des Datendiensts aus:
Lauscht auf Anforderungen und leitet diese an den Datendienst weiter.
Erstellt für jede Anforderung eine Instanz des Datendiensts.
Fordert an, dass der Datendienst die eingehende Anforderung verarbeitet.
Sendet die Antwort im Namen des Datendiensts.
Um das Hosten eines Datendiensts zu vereinfachen, wurde WCF Data Services so entworfen, dass eine Integration in Windows Communication Foundation (WCF) möglich ist. Der Datendienst stellt eine WCF-Standardimplementierung bereit, die in einer ASP.NET-Anwendung als Datendiensthost fungiert. Daher können Sie einen Datendienst in einer der folgenden Methoden hosten:
In einer ASP.NET-Anwendung.
In einer verwalteten Anwendung, die selbst gehostete WCF-Dienste unterstützt.
In einem anderen benutzerdefinierten Datendiensthost.
Hosten eines Datendiensts in einer ASP.NET-Anwendung
Wenn Sie das Dialogfeld Neues Element hinzufügen in Visual Studio verwenden, um einen Datendienst in einer ASP.NET-Anwendung zu definieren, generiert das Tool im Projekt zwei neue Dateien. Die erste Datei verfügt über die .svc-Erweiterung und weist die WCF-Laufzeit an, wie der Datendienst instanziiert werden soll. Im Folgenden finden Sie ein Beispiel für diese Datei für den Northwind-Beispieldatendienst, der beim Abschluss des Schnellstarts erstellt wird:
<%@ ServiceHost Language="C#"
Factory="System.Data.Services.DataServiceHostFactory,
System.Data.Services, Version=4.0.0.0,
Culture=neutral, PublicKeyToken=b77a5c561934e089"
Service="NorthwindService.Northwind" %>
Diese Direktive weist die Anwendung an, den Diensthost für die benannte Datendienstklasse mithilfe der DataServiceHostFactory-Klasse zu erstellen.
Die CodeBehind-Seite für die .svc-Datei enthält die Klasse, bei der es sich um die Implementierung des Datendiensts selbst handelt und die für den Northwind-Beispieldatendienst folgendermaßen definiert wird:
Public Class Northwind
Inherits DataService(Of NorthwindEntities)
public class Northwind : DataService<NorthwindEntities>
Da sich ein Datendienst wie ein WCF-Dienst verhält, wird der Datendienst in ASP.NET integriert und folgt dem WCF-Webprogrammiermodell. Weitere Informationen finden Sie unter WCF Services and ASP.NET und Web Programming Model.
Selbst gehostete WCF-Dienste
Da WCF Data Services eine WCF-Implementierung beinhaltet, werden selbsthostende Datendienste als WCF-Dienste unterstützt. Ein Dienst kann in allen .NET Framework-Anwendungen selbst gehostet werden, z. B. in einer Konsolenanwendung. Die DataServiceHost-Klasse, die von WebServiceHost erbt, wird verwendet, um den Datendienst bei einer bestimmten Adresse zu instanziieren.
Selbsthosting kann für die Entwicklung und für Tests verwendet werden, da die Bereitstellung und Problembehandlung vereinfacht wird. Diese Art von Hosting stellt jedoch nicht die erweiterten Hosting- und Verwaltungsfunktionen von ASP.NET oder der Internetinformationsdienste (IIS) bereit. Weitere Informationen finden Sie unter Hosting in a Managed Application.
Definieren eines benutzerdefinierten Datendiensthosts
Wenn die WCF-Hostimplementierung zu restriktiv ist, können Sie für einen Datendienst auch einen benutzerdefinierten Host definieren. Alle Klassen, die eine IDataServiceHost-Schnittstelle implementieren, können für einen Datendienst als Netzwerkhost verwendet werden. Ein benutzerdefinierter Host muss die IDataServiceHost-Schnittstelle implementieren und in der Lage sein, die folgenden grundlegenden Aufgaben des Datendiensthosts zu übernehmen:
Bereitstellen des Dienststammpfads für den Datendienst
Verarbeiten der Anforderungs- und Antwortheaderinformationen für die entsprechende IDataServiceHost-Memberimplementierung
Behandeln der vom Datendienst ausgelösten Ausnahmen
Überprüfen der Parameter in der Abfragezeichenfolge
Siehe auch
Konzepte
Verfügbarmachen der Daten als OData-Dienst (WCF Data Services)
Konfigurieren des Datendiensts (WCF Data Services)