Konfigurieren des Datendiensts (WCF Data Services)
Mit WCF Data Services können Sie Datendienste erstellen, die Open Data Protocol (OData) -Feeds verfügbar machen. Daten in diesen Feeds können aus verschiedensten Datenquellen stammen. WCF Data Services verwendet Datenanbieter, um diese Daten als OData -Feed verfügbar zu machen. 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 Datendiensteanbieter (WCF Data Services).
In WCF Data Services ist ein Datendienst eine Klasse, die von der DataService-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 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 wie in der folgenden Implementierung eines Northwind-Datendiensts für die InitializeService-Methode angegeben, die vom Datendienst implementiert wird:
' This method is called only once to initialize service-wide policies.
Public Shared Sub InitializeService(ByVal config As DataServiceConfiguration)
' Set the access rules of feeds exposed by the data service, which is
' based on the requirements of client applications.
config.SetEntitySetAccessRule("Customers", EntitySetRights.ReadSingle)
config.SetEntitySetAccessRule("Employees", EntitySetRights.ReadSingle)
config.SetEntitySetAccessRule("Orders", EntitySetRights.AllRead _
And EntitySetRights.WriteAppend _
And EntitySetRights.WriteMerge)
config.SetEntitySetAccessRule("Order_Details", EntitySetRights.All)
config.SetEntitySetAccessRule("Products", EntitySetRights.ReadMultiple)
' Set page size defaults for the data service.
config.SetEntitySetPageSize("Orders", 20)
config.SetEntitySetPageSize("Order_Details", 50)
config.SetEntitySetPageSize("Products", 50)
' Paging requires v2 of the OData protocol.
config.DataServiceBehavior.MaxProtocolVersion = _
System.Data.Services.Common.DataServiceProtocolVersion.V2
End Sub
// This method is called only once to initialize service-wide policies.
public static void InitializeService(DataServiceConfiguration config)
{
// Set the access rules of feeds exposed by the data service, which is
// based on the requirements of client applications.
config.SetEntitySetAccessRule("Customers", EntitySetRights.ReadSingle);
config.SetEntitySetAccessRule("Employees", EntitySetRights.ReadSingle);
config.SetEntitySetAccessRule("Orders", EntitySetRights.AllRead
& EntitySetRights.WriteAppend
& EntitySetRights.WriteMerge);
config.SetEntitySetAccessRule("Order_Details", EntitySetRights.All);
config.SetEntitySetAccessRule("Products", EntitySetRights.ReadMultiple);
// Set page size defaults for the data service.
config.SetEntitySetPageSize("Orders", 20);
config.SetEntitySetPageSize("Order_Details", 50);
config.SetEntitySetPageSize("Products", 50);
// Paging requires v2 of the OData protocol.
config.DataServiceBehavior.MaxProtocolVersion =
System.Data.Services.Common.DataServiceProtocolVersion.V2;
}
Konfigurationseinstellungen des Datendiensts
Mit der DataServiceConfiguration-Klasse können Sie das folgende Datendienstverhalten angeben:
Member | Verhalten |
---|---|
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 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 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 Ihnen, die Größe einer Antwort einzuschränken, indem Sie die in einer einzelnen Anforderung zulässige Anzahl von verknüpften Entitäten mit dem $expand-Abfrageoperator einschränken. Weitere Informationen finden Sie unter unter OData: URI-Konventionen und Laden von verzögertem Inhalt (WCF Data Services). |
|
Ermöglicht es Ihnen, die Größe einer Antwort einzuschränken, indem Sie die in einer einzelnen Anforderung zulässige Diagrammtiefe von verknüpften Entitäten mit dem $expand-Abfrageoperator einschränken. Weitere Informationen finden Sie unter 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 unter Verwenden mehrerer Versionen von 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 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 Namensparameter 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 Gewusst wie: Aktivieren des Zugriffs auf den Datendienst (WCF Data Services).
Pfad/Aktion | GET | DELETE | MERGE | POST | PUT |
---|---|---|---|---|---|
|
Nicht unterstützt |
Nicht unterstützt |
Nicht unterstützt |
||
|
ReadSingle und WriteDelete |
ReadSingle und WriteMerge |
n/v |
ReadSingle und WriteReplace |
|
|
- und -
|
Nicht unterstützt |
Nicht unterstützt |
- und -
|
Nicht unterstützt |
|
- und -
|
- und -
|
- und -
|
Nicht unterstützt |
- und -
|
|
- und -
|
- und -
|
- und -
|
- und -
|
Nicht unterstützt |
|
- und -
|
Nicht unterstützt |
Nicht unterstützt |
- und -
|
Nicht unterstützt |
|
- und -
|
- und -
|
Nicht unterstützt |
Nicht unterstützt |
Nicht unterstützt |
|
- und -
|
|
- und -
|
Nicht unterstützt |
- und -
|
|
ReadMultiple |
Nicht unterstützt |
Nicht unterstützt |
Nicht unterstützt |
Nicht unterstützt |
|
ReadSingle |
Nicht unterstützt |
WriteMerge |
Nicht unterstützt |
WriteReplace |
|
ReadSingle |
WriteDelete |
Nicht unterstützt |
Nicht unterstützt |
Nicht unterstützt |
|
ReadSingle |
ReadSingle und WriteDelete |
WriteMerge |
Nicht unterstützt |
WriteReplace |
|
ReadSingle |
Nicht unterstützt |
Nicht unterstützt |
Nicht unterstützt |
WriteReplace |
|
- und -
|
Nicht unterstützt |
Nicht unterstützt |
|
Nicht unterstützt |
|
- und -
|
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 2 des OData -Protokolls oder eine höhere Version erforderlich:
Unterstützung von Count-Anforderungen
Unterstützung der $select-Abfrageoption für die Projektion
Weitere Informationen finden Sie unter Verwenden mehrerer Versionen von WCF Data Services.
Siehe auch
Konzepte
Hosten des Datendiensts (WCF Data Services)