Übersicht über WCF Data Services

WCF Data Services ermöglicht mithilfe des Open Data Protocol (OData) das Erstellen und Verwenden von Datendiensten für das Internet oder ein Intranet. Mit OData können Sie Daten als Ressourcen verfügbar machen, die mit URIs adressierbar sind. Dies ermöglicht es Ihnen, mit der REST-Semantik (Representational State Transfer) und insbesondere mit den standardmäßigen HTTP-Verben GET, PUT, POST und DELETE auf Daten zuzugreifen und Daten zu ändern. Dieses Thema bietet eine Übersicht über die in OData definierten Muster und Methoden und die von WCF Data Services bereitgestellten Funktionen, mit denen OData in .NET Framework-basierten Anwendungen verwendet werden kann.

Adressieren von Daten als Ressourcen

OData macht Daten als Ressourcen verfügbar, die anhand von URIs adressiert werden können. Die Ressourcenpfade werden basierend auf den Entitätsbeziehungskonventionen des Entity Data Model erstellt. In diesem Modell stellen Entitäten Operationseinheiten von Daten in einer Anwendungsdomäne dar, z. B. Kunden, Bestellungen, Artikel und Produkte. Weitere Informationen finden Sie unter Entity Data Model.

In OData werden Entitätsressourcen als Entitätenmenge adressiert, der Instanzen von Entitätstypen enthält. So gibt beispielsweise der URI http://services.odata.org/Northwind/Northwind.svc/Customers('ALFKI')/Orders alle Bestellungen des Northwind-Datendiensts zurück, die mit dem Kunden mit dem CustomerID-Wert ALFKI. verknüpft sind.

Mit Abfrageausdrücken können Sie herkömmliche Abfragevorgänge für Ressourcen ausführen, z. B. Filtern, Sortieren und Paging. Der URI http://services.odata.org/Northwind/Northwind.svc/Customers('ALFKI')/Orders?$filter=Freight gt 50 filtert z. B. die Ressourcen, um nur die Bestellungen mit Frachtkosten von über 50 Dollar zurückzugeben. Weitere Informationen finden Sie unter Zugreifen auf einen OData-Dienst (WCF Data Services).

Interoperabler Datenzugriff

OData beruht auf Standardinternetprotokollen, um die Interaktion von Datendiensten mit Anwendungen, die .NET Framework nicht verwenden, zu ermöglichen. Da Sie Daten mithilfe von Standard-URIs adressieren können, kann die Anwendung mit der REST-Semantik ( Representational State Transfer), speziell mit den Standard-HTTP-Verben GET, PUT, POST und DELETE, auf Daten zugreifen und diese ändern. Dies ermöglicht Ihnen den Zugriff auf diese Dienste von jedem Client, der über Standard-HTTP-Protokolle übertragene Daten analysieren und darauf zugreifen kann.

OData definiert einen Satz von Erweiterungen für das Atom Publishing Protocol (AtomPub). HTTP-Anforderungen und -Antworten werden in mehreren Datenformaten unterstützt, um verschiedene Clientanwendungen und -plattformen zu unterstützen. Ein OData-Feed kann Daten in Atom, JavaScript Object Notation (JSON) und als einfaches XML darstellen. Atom ist zwar das Standardformat, das Format des Feeds wird jedoch im Header der HTTP-Anforderung angegeben. Weitere Informationen finden Sie unter OData: Atom-Format und OData: JSON-Format.

Beim Veröffentlichen von Daten als OData-Feed erfordert WCF Data Services für Vorgänge wie das Zwischenspeichern und die Authentifizierung weitere vorhandene Internetfunktionen. Zu diesem Zweck wird WCF Data Services in vorhandene Hostinganwendungen und Dienste wie ASP.NET, WCF (Windows Communication Foundation) und IIS (Internetinformationsdienste) integriert. Das Serialisieren und Deserialisieren von OData-Nachrichten wird von der OData-Bibliothek ausgeführt. Wenn die webbasierte Anwendung oder der Dienst bereits HTTP-Nachrichtenfunktionen besitzt, können Sie die OData-Bibliothek direkt verwenden, um OData-kompatible Nachrichten einfach zu serialisieren und zu deserialisieren. Weitere Informationen finden Sie unter OData-Bibliothek.

Speicherunabhängigkeit

Obwohl Ressourcen auf Grundlage eines Entitätsbeziehungsmodells adressiert werden, macht WCF Data Services OData-Feeds unabhängig von der zugrunde liegenden Datenquelle verfügbar. Nachdem WCF Data Services eine HTTP-Anforderung für eine von einem URI identifizierte Ressource akzeptiert hat, wird die Anforderung deserialisiert, und eine Darstellung dieser Anforderung wird an einen WCF Data Services-Anbieter übergeben. Dieser Anbieter übersetzt die Anforderung in ein datenquellenspezifisches Format und führt die Anforderung für die zugrunde liegende Datenquelle aus. WCF Data Services erreicht Speicherunabhängigkeit, indem das konzeptionelle Modell, das von OData vorgeschriebene Ressourcen adressiert, vom spezifischen Schema der zugrunde liegenden Datenquelle getrennt wird.

WCF Data Services ist in ADO.NET Entity Framework integriert, sodass Sie Datendienste erstellen können, die relationale Daten verfügbar machen. Sie können die Entity Data Model-Tools verwenden, um ein Datenmodell zu erstellen, das adressierbare Ressourcen als Entitäten enthält, und gleichzeitig die Zuordnung zwischen diesem Modell und den Tabellen in der zugrunde liegenden Datenbank definieren. Weitere Informationen finden Sie unter Entity Framework-Anbieter (WCF Data Services).

WCF Data Services ermöglicht außerdem das Erstellen von Datendiensten, die alle Datenstrukturen verfügbar machen, die eine Implementierung der IQueryable<T>-Schnittstelle zurückgeben. Dies ermöglicht das Erstellen von Datendiensten, die Daten aus .NET Framework-Typen verfügbar machen. Erstellungs-, Aktualisierungs- und Löschvorgänge werden unterstützt, wenn Sie außerdem die IUpdatable-Schnittstelle implementieren. Weitere Informationen finden Sie unter Reflektionsanbieter (WCF Data Services). Durch Implementieren einer Reihe von benutzerdefinierten Datendienstanbieter-Schnittstellen können Sie WCF Data Services zum Veröffentlichen von Daten aus beliebigen Quellen verwenden, sogar wenn das Datenmodell nur zur Laufzeit bekannt ist. Weitere Informationen finden Sie unter Benutzerdefinierte Datendienstanbieter (WCF Data Services).

Ein Beispiel für die Integration von WCF Data Services in diesen Datenanbietern finden Sie im Architekturdiagramm weiter unten in diesem Thema.

Benutzerdefinierte Geschäftslogik

WCF Data Services vereinfacht das Hinzufügen benutzerdefinierter Geschäftslogik zu einem Datendienst mithilfe von Dienstvorgängen und Interceptors. Dienstvorgänge sind auf dem Server definierte Methoden, die genau wie Datenressourcen über URIs adressierbar sind. Für Dienstvorgänge kann auch Abfrageausdruckssyntax zum Filtern, Sortieren und Paging der von einem Vorgang zurückgegebenen Daten verwendet werden. Der URI https://localhost:12345/Northwind.svc/GetOrdersByCity?city='London'&$orderby=OrderDate&$top=10&$skip=10 stellt z. B. einen Aufruf des Dienstvorgangs mit dem Namen GetOrdersByCity im Northwind-Datendienst dar, der Aufträge für Kunden aus London mit nach OrderDate sortierten Seitenergebnissen zurückgibt. Weitere Informationen finden Sie unter Dienstvorgänge (WCF Data Services).

Dienstaktionen stellen eine besondere Art von Vorgang dar, der an Datendienstressourcen gebunden werden kann und sich auf das System auswirken kann. Weitere Informationen finden Sie unter Verwenden von OData-Aktionen zum Implementieren des serverseitigen Verhaltens.

Mit Interceptoren können Sie eine benutzerdefinierte Anwendungslogik in die Verarbeitung von Anforderungs- oder Antwortnachrichten durch einen Datendienst integrieren. Interceptoren werden aufgerufen, wenn für die angegebene Entitätenmenge ein Abfrage-, Einfüge-, Aktualisierungs- oder Löschvorgang durchgeführt wird. Dadurch kann ein Interceptor die Daten ändern, eine Autorisierungsrichtlinie erzwingen oder sogar den Vorgang beenden. Interceptormethoden müssen für eine gegebene Entitätenmenge, die von einem Datendienst zur Verfügung gestellt wird, explizit registriert werden. Weitere Informationen finden Sie unter Interceptoren (WCF Data Services).

Clientbibliotheken

OData definiert eine Reihe einheitlicher Muster zum Interagieren mit Datendiensten. Dies ermöglicht das Erstellen wiederverwendbarer Komponenten auf Grundlage dieser Dienste, z. B. clientseitiger Bibliotheken, die die Verwendung dieser Datendienste erleichtern.

WCF Data Services enthält Clientbibliotheken sowohl für .NET Framework-basierte als auch für Silverlight-basierte Clientanwendungen. Diese Clientbibliotheken ermöglichen die Interaktion mit Datendiensten mithilfe von .NET Framework-Objekten. Zudem werden objektbasierte Abfragen und LINQ-Abfragen, das Laden verknüpfter Objekte, die Änderungsnachverfolgung und die Identitätsauflösung unterstützt. Weitere Informationen finden Sie unter Datenclient (WCF Data Services).

Neben den in .NET Framework und Silverlight enthaltenen OData-Clientbibliotheken sind weitere Clientbibliotheken verfügbar, mit denen Sie einen OData-Feed in Clientanwendungen nutzen können, z. B. PHP-, Java- und iOS-Anwendungen. Entwickler von Javascript-Anwendungen sind ggf. an der datajs-Bibliothek interessiert, die die Nutzung von OData ermöglicht.

Architekturübersicht

Das folgende Diagramm veranschaulicht die WCF Data Services-Architektur zum Verfügbarmachen von OData-Feeds und zur Verwendung dieser Feeds in OData-fähigen Clientbibliotheken:

WCF Data Services-Architekturdiagramm

Siehe auch

Andere Ressourcen

WCF Data Services

Erste Schritte mit WCF Data Services

Datendienst (WCF Data Services)

Accessing a Data Service (WCF Data Services)

Datenclient (WCF Data Services)

Representational State Transfer (REST)