Konfigurieren des Datendiensts (WCF Data Services)
Mit WCF Data Services können Sie Datendienste erstellen, die Open Data Protocol (OData)-Feeds verfügbar machen. Die Daten dieser Feeds können aus einer Vielzahl von Datenquellen stammen. WCF Data Services macht diese Daten mithilfe von Datenanbietern als OData-Feed verfügbar. Zu diesen Anbietern zählen ein Entity Framework-Anbieter, ein Reflektionsanbieter und ein Schnittstellensatz für benutzerdefinierte Datendienstanbieter. Die Anbieterimplementierung definiert das Datenmodell für den Dienst. Weitere Informationen finden Sie unter Datendienstanbieter (WCF Data Services).
In WCF Data Services ist ein Datendienst eine Klasse, die von der DataService<T>-Klasse erbt. Dabei ist der Typ des Datendiensts der Entitätscontainer des Datenmodells. Dieser Entitätscontainer verfügt über mindestens eine Eigenschaft, die einen IQueryable<T> zurückgibt und die für den Zugriff auf Entitätenmengen im Datenmodell verwendet wird.
Das Verhalten des Datendiensts wird durch die Member der DataServiceConfiguration-Klasse definiert, und durch Member der DataServiceBehavior-Klasse, auf die von der DataServiceBehavior-Eigenschaft der DataServiceConfiguration-Klasse zugegriffen wird. Die DataServiceConfiguration-Klasse wird für die InitializeService-Methode angegeben, die vom Datendienst implementiert wird, wie im folgenden Northwind-Dienst, den Sie beim Ausführen des Schnellstarts erstellen:
Public Class Northwind
Inherits DataService(Of NorthwindEntities)
' This method is called only once to initialize service-wide policies.
Public Shared Sub InitializeService(ByVal config As DataServiceConfiguration)
' Grant only the rights needed to support the client application.
config.SetEntitySetAccessRule("Orders", EntitySetRights.AllRead _
Or EntitySetRights.WriteMerge _
Or EntitySetRights.WriteReplace)
config.SetEntitySetAccessRule("Order_Details", EntitySetRights.AllRead _
Or EntitySetRights.AllWrite)
config.SetEntitySetAccessRule("Customers", EntitySetRights.AllRead)
End Sub
End Class
public class Northwind : DataService<NorthwindEntities>
{
// This method is called only once to initialize service-wide policies.
public static void InitializeService(DataServiceConfiguration config)
{
// Grant only the rights needed to support the client application.
config.SetEntitySetAccessRule("Orders", EntitySetRights.AllRead
| EntitySetRights.WriteMerge
| EntitySetRights.WriteReplace);
config.SetEntitySetAccessRule("Order_Details", EntitySetRights.AllRead
| EntitySetRights.AllWrite);
config.SetEntitySetAccessRule("Customers", EntitySetRights.AllRead);
config.DataServiceBehavior.MaxProtocolVersion =
System.Data.Services.Common.DataServiceProtocolVersion.V3;
}
}
Konfigurationseinstellungen des Datendiensts
Mit der DataServiceConfiguration-Klasse können Sie das folgende Datendienstverhalten angeben:
Member |
Verhalten |
---|---|
Ermöglicht das Deaktivieren der Unterstützung für Abfragen, die die Operatoren any und all enthalten. |
|
Ermöglicht das Deaktivieren von Count-Anforderungen, die mit dem $count-Pfadsegment und der $inlinecount-Abfrageoption an den Datendienst gesendet werden. Weitere Informationen finden Sie unter OData: URI-Konventionen. |
|
Ermöglicht das Deaktivieren der Unterstützung der Datenprojektion in Anforderungen, die mit der $select-Abfrageoption an den Datendienst gesendet werden. Weitere Informationen finden Sie unter OData: URI-Konventionen. |
|
Ermöglicht das Deaktivieren der Unterstützung für die Angabe von räumlichen Literalwerten in einem Abfrage-URI. |
|
Ermöglicht das Anwenden von Vokabularen auf das Datenmodell mithilfe von Anmerkungen. Die AnnotationsBuilder-Eigenschaft gibt einen Delegaten zurück, mit dem Sie eine oder mehrere Modellanmerkungen als Auflistung von IEdmModel-Instanzen für das Datenmodell angeben können, das als IEdmModel-Instanz an den Delegaten übergeben wird. Weitere Informationen finden Sie im Beitrag Vokabulare in WCF Data Services. |
|
Ermöglicht das Deaktivieren der Validierung des Datenmodells, bevor der Dienst auf eine Anfrage an den $metadata-Endpunkt antwortet. |
|
Ermöglicht das Verfügbarmachen eines Datentyps in den Metadaten für einen dynamischen Metadatenanbieter, der mithilfe der IDataServiceMetadataProvider-Schnittstelle definiert wird. |
|
Ermöglicht es Ihnen anzugeben, ob die Datendienst-Runtime den in der Nutzlast enthaltenen Typ in den in der Anforderung angegebenen tatsächlichen Eigenschaftstyp konvertieren soll. |
|
Ermöglicht es anzugeben, ob Linkelemente, die speziell die Beziehung zwischen Entitäten adressieren, (auch als Zuordnungen bezeichnet) in der Antwort vom Datendienst enthalten sein sollen. Zuordnungen werden mit dem $links-Operator adressiert. Weitere Informationen finden Sie unter 3.2. Adressieren von Links zwischen Einträgen im OData-Protokoll. Der Datendienst gibt immer Linkelemente zurück, die verknüpfte Entitäten adressieren, selbst wenn IncludeAssociationLinksInResponse den Wert false besitzt. |
|
Ermöglicht es Ihnen anzugeben, ob registrierte Change-Interceptors für die verknüpften Entitäten aufgerufen werden, wenn ein Beziehungslink zwischen zwei Entitäten gelöscht wird. |
|
Ermöglicht es Ihnen, die Anzahl von Changesets und Abfragevorgängen einzuschränken, die in einem einzelnen Batch zulässig sind. Weitere Informationen finden Sie unter OData: Batch und Batchverarbeitungsvorgänge (WCF Data Services). |
|
Ermöglicht es, die in einem einzigen Änderungssatz zulässige Anzahl von Änderungen zu beschränken. Weitere Informationen finden Sie unter Gewusst wie Aktivieren von Paging für Datendienstergebnisse (WCF Data Services). |
|
Ermöglicht es, die Größe einer Antwort durch Beschränken der Anzahl verknüpfter Entitäten in einer einzelnen Anforderung mit dem $expand-Abfrageoperator einzuschränken. Weitere Informationen finden Sie unter finden Sie unter OData: URI-Konventionen und Laden von verzögertem Inhalt (WCF Data Services). |
|
Ermöglicht es Ihnen, die Größe einer Antwort durch das Beschränken der Diagrammtiefe verknüpfter Entitäten in einer einzelnen Anforderung mit dem $expand-Abfrageoperator einzuschränken. Weitere Informationen finden Sie unter finden Sie unter OData: URI-Konventionen und Laden von verzögertem Inhalt (WCF Data Services). |
|
Ermöglicht es Ihnen, die Anzahl einzufügender Entitäten einzuschränken, die in einer einzelnen POST-Anforderung enthalten sein können. |
|
Definiert die Version des Atom-Protokolls, das vom Datendienst verwendet wird. Wenn der Wert der MaxProtocolVersion auf einen Wert kleiner als der maximale Wert der DataServiceProtocolVersion festgelegt wird, sind die neuesten Funktionen von WCF Data Services nicht für Clients verfügbar, die auf den Datendienst zugreifen. Weitere Informationen finden Sie unter Datendienst-Versionskontrolle (WCF Data Services). |
|
Ermöglicht es Ihnen, die Größe einer Antwort einzuschränken, indem Sie die Anzahl von Entitäten in jeder Entitätenmenge einschränken, die als Datenfeed zurückgegeben wird. |
|
Fügt der Liste der vom Datendienst erkannten Typen einen Datentyp hinzu. |
|
Legt die Zugriffsrechte für Entitätenmengenressourcen fest, die im Datendienst verfügbar sind. Ein Sternchenwert (*) kann für den Namensparameter angegeben werden, um den Zugriff für alle verbleibenden Entitätenmengen auf die gleiche Ebene festzulegen. Es wird empfohlen, den Zugriff auf Entitätenmengen so festzulegen, dass der Zugriff auf die für Clientanwendungen erforderlichen Datendienstressourcen mit minimalen Rechten bereitgestellt wird. Weitere Informationen finden Sie unter Sichern von WCF Data Services. Beispiele für die minimalen Zugriffsrechte, die für eine bestimmte URI- und HTTP-Aktion erforderlich sind, finden Sie in der Tabelle im Abschnitt Minimum Resource Access Requirements. |
|
Legt die maximale Seitengröße für eine Entitätenmengenressource fest. Weitere Informationen finden Sie unter Gewusst wie Aktivieren von Paging für Datendienstergebnisse (WCF Data Services). |
|
Legt die Zugriffsrechte für Dienstaktionen fest, die für den Datendienst definiert sind. Weitere Informationen finden Sie unter Verwenden von OData-Aktionen zum Implementieren des serverseitigen Verhaltens. Ein Sternchenwert (*) kann für den name-Parameter angegeben werden, um den Zugriff für alle Dienstaktionen auf die gleiche Ebene festzulegen. Es wird empfohlen, den Zugriff auf Dienstaktionen so festzulegen, dass der Zugriff auf die für Clientanwendungen erforderlichen Datendienstressourcen mit minimalen Rechten bereitgestellt wird. Weitere Informationen finden Sie unter Sichern von WCF Data Services. |
|
Legt die Zugriffsrechte für Dienstvorgänge fest, die für den Datendienst definiert sind. Weitere Informationen finden Sie unter Dienstvorgänge (WCF Data Services). Ein Sternchenwert (*) kann für den name-Parameter angegeben werden, um den Zugriff für alle Dienstvorgänge auf die gleiche Ebene festzulegen. Es wird empfohlen, den Zugriff auf Dienstvorgänge so festzulegen, dass der Zugriff auf die für Clientanwendungen erforderlichen Datendienstressourcen mit minimalen Rechten bereitgestellt wird. Weitere Informationen finden Sie unter Sichern von WCF Data Services. |
|
Diese Konfigurationseigenschaft ermöglicht es Ihnen, die Problembehandlung in einem Datendienst zu vereinfachen, indem mehr Informationen in der Fehlerantwortnachricht zurückgegeben werden. Diese Option ist nicht für die Verwendung in einer Produktionsumgebung vorgesehen. Weitere Informationen finden Sie unter Entwickeln und Bereitstellen von WCF Data Services. |
Minimale Ressourcenzugriffsrechte
In der folgenden Tabelle sind die minimalen Rechte für Entitätenmengen aufgelistet, die gewährt werden müssen, um einen bestimmten Vorgang auszuführen. Pfadbeispiele basieren auf dem Northwind-Datendienst, der beim Ausführen desSchnellstarts erstellt wird. Da sowohl die EntitySetRights-Enumeration als auch die ServiceOperationRights-Enumeration mit dem FlagsAttribute definiert werden, können Sie mithilfe eines logischen OR-Operators mehrere Berechtigungen für eine Entitätenmenge oder einen Vorgang angeben. Weitere Informationen finden Sie unter Vorgehensweise: Aktivieren des Zugriffs auf den Datendienst (WCF Data Services).
URI-Pfad und Abfrageoption |
GET |
DELETE |
MERGE |
POST |
PUT |
---|---|---|---|---|---|
/Customers |
Nicht unterstützt |
Nicht unterstützt |
Nicht unterstützt |
||
/Customers('ALFKI') |
ReadSingle und WriteMerge |
nicht verfügbar |
|||
/Customers('ALFKI')/Orders |
Customers: ReadSingle – und – Orders: ReadMultiple |
Nicht unterstützt |
Nicht unterstützt |
Customers: ReadSingle und WriteMerge oder WriteReplace – und – Orders: und WriteAppend |
Nicht unterstützt |
/Customers('ALFKI')/Orders(10643) |
Customers: ReadSingle – und – Orders: ReadSingle |
Customers: ReadSingle – und – Orders: ReadSingle und WriteDelete |
Customers: ReadSingle – und – Orders: ReadSingle und WriteMerge |
Nicht unterstützt |
Customers: ReadSingle – und – Orders: ReadSingle und WriteReplace |
/Orders(10643)/Customer |
Customers: ReadSingle – und – Orders: ReadSingle |
Customers: ReadSingle und WriteDelete – und – Orders: ReadSingle |
Customers: ReadSingle und WriteMerge; – und – Orders: ReadSingle |
Customers: WriteAppend – und – Orders: WriteAppend und ReadSingle |
Nicht unterstützt |
/Customers('ALFKI')/$links/Orders |
Customers: ReadSingle – und – Orders: ReadMultiple |
Nicht unterstützt |
Nicht unterstützt |
Customers: ReadSingle und WriteMerge oder WriteReplace – und – Orders: ReadSingle |
Nicht unterstützt |
/Customers('ALFKI')/$links/Orders(10643) |
Customers: ReadSingle – und – Orders: ReadSingle |
Customers: ReadSingle und WriteMerge oder WriteReplace – und – Orders: ReadSingle |
Nicht unterstützt |
Nicht unterstützt |
Nicht unterstützt |
/Orders(10643)/$links/Customer |
Customers: ReadSingle – und – Orders: ReadSingle |
Orders: ReadSingle und WriteMerge oder WriteReplace |
Customers: ReadSingle – und – Orders: ReadSingle und WriteMerge |
Nicht unterstützt |
Customers: ReadSingle; - und - Orders: ReadSingle und WriteReplace |
/Customers/$count |
Nicht unterstützt |
Nicht unterstützt |
Nicht unterstützt |
Nicht unterstützt |
|
/Customers('ALFKI')/ContactName |
Nicht unterstützt |
Nicht unterstützt |
|||
/Customers('ALFKI')/Address/StreetAddress/$value1 |
Nicht unterstützt |
Nicht unterstützt |
Nicht unterstützt |
||
/Customers('ALFKI')/ContactName/$value |
Nicht unterstützt |
||||
/Customers('ALFKI')/$value2 |
Nicht unterstützt |
Nicht unterstützt |
Nicht unterstützt |
||
/Customers?$select=Orders/*&$expand=Orders |
Customers: ReadSingle - und - Orders: ReadMultiple |
Nicht unterstützt |
Nicht unterstützt |
Customers: WriteAppend |
Nicht unterstützt |
/Customers('ALFKI')?$select=Orders/*&$expand=Orders |
Customers: ReadSingle - und - Orders: ReadMultiple |
Nicht unterstützt |
Nicht unterstützt |
Nicht unterstützt |
Nicht unterstützt |
1 In diesem Beispiel stellt Address eine komplexe Typeigenschaft der Customers-Entität dar, die über eine Eigenschaft mit dem Namen StreetAddress verfügt. In dem für die Northwind-Datendienste verwendeten Modell ist dieser komplexe Typ nicht explizit definiert. Wenn das Datenmodell mit dem Entity Framework-Anbieter definiert wird, können Sie einen solchen komplexen Typ mithilfe der Entity Data Model-Tools definieren. Weitere Informationen finden Sie unter How to: Create and Modify Complex Types (Entity Data Model Tools).
2 Dieser URI wird unterstützt, wenn eine ein Binary Large Object (BLOB) zurückgebende Eigenschaft als Medienressource definiert wird, die zu einer Entität gehört, die ein Medienlinkeintrag ist (in diesem Fall Customers). Weitere Informationen finden Sie unter Streaminganbieter (WCF Data Services).
Versionsanforderungen
Für die folgenden Konfigurationsverhalten eines Datendiensts ist Version 3 des OData-Protokolls oder eine höhere Version erforderlich:
Unterstützung für den Einschluss von Beziehungslinkelementen in den Antwortfeed.
Unterstützung für die Abfrageoperatoren any und all.
Unterstützung für die Definition von Dienstaktionen und -funktionen.
Unterstützung für räumliche Datentypen.
Unterstützung für Vokabulare durch Definieren von Datenmodellanmerkungen.
Unterstützung für das Deaktivieren der Datenmodellvalidierung für eine $metadata-Endpunktanforderung.
Für die folgenden Konfigurationsverhalten eines Datendiensts ist Version 2 des OData-Protokolls oder eine höhere Version erforderlich:
Die Unterstützung für count-Anforderungen und Abfrageprojektion erfordert Version 2.0 oder höher des OData-Protokolls.
Die Unterstützung für die $select-Abfrageoption für Projektionen erfordert Version 2.0 oder höher des OData-Protokolls.
Weitere Informationen finden Sie unter Datendienst-Versionskontrolle (WCF Data Services).
Siehe auch
Konzepte
Hosten des Datendiensts (WCF Data Services)