Sdílet prostřednictvím


REST-Dienste und -Semantik (ADO.NET Data Services-Framework)

REST-Dienste (Representational State Transfer) bestehen hauptsächlich aus zwei Anforderungen:

  • Einem Adressierungsschema für die Suche von vernetzten Ressourcen.

  • Einer Methodik zum Zurückgeben von Darstellungen dieser Ressourcen.

Das ADO.NET Data Services-Framework unterstützt beide REST-Anforderungen. Das ADO.NET Data Services-Framework implementiert ein Datenadressierungsschema, das mithilfe von URIs über HTTP-Header vereinbarte Daten sucht. Die Daten werden in JavaScript Object Notation (JSON) oder Atom Publishing Protocol (AtomPub) übertragen.

ADO.NET Data Services können Datenentitäten und Beziehungen zwischen Entitäten auf Grundlage eines Bereichs von Datenspeicherimplementierungen bereitstellen. Das System kann jeden Anbieter, der IQueryable implementiert, bereitstellen. Der Anbieter muss IUpdatable implementieren, um Updates zu unterstützen.

Das ADO.NET Data Services-Framework verwendet außerdem bewährte Infrastrukturen für die HTTP-Zwischenspeicherung und Standardauthentifizierungsschemas, wie z. B. Microsoft ASP.NET, um den Zugriff auf Datendienste zu steuern.

Datenadressierungschema

Das ADO.NET Data Services-Datenadressierungschema zeigt mithilfe von URIs auf Daten, die über HTTP-Header vereinbart wurden. In den folgenden Beispielen werden gültige URIs für die Identifizierung von Datendienstressourcen dargestellt:

Alle Customers: http://host/service.svc/Customers

Alle Orders, nach Lieferdatum sortiert: http://host/service.svc/SalesOrders?$orderby=ShippedDate

Die Customer-Entität mit dem Schlüssel "ALFKI": http://host/service.svc/Customers('ALFKI')

Die Orders-Entitäten für den Kunden mit dem Schlüssel "ALFKI": http://host/service.svc/Customers('ALFKI')/SalesOrders

Weitere Syntaxbeispiele finden Sie unter Einfaches Adressierungsschema für Daten mit URIs (ADO.NET Data Services-Framework).

Datendefinitionsmodell

ADO.NET Data Service definiert die dargestellten Daten mit Conceptual Schema Definition Language (CSDL). Ein CSDL-Schema ist ein XML-Dokument auf Grundlage eines Entity Data Model (EDM). Weitere Informationen zum EDM finden Sie unter ADO.NET Entity Framework.

Mit einem klar definierten Mechanismus für die Datenbeschreibung können zur Entwurfszeit verwendete Tools erstellt werden, mit denen Metadaten aus Diensten extrahiert und Benutzeroberflächen erstellt werden. Weiterhin können zur Entwurfszeit verwendete Metadatenrepositorys erstellt werden, mit denen die Datenverarbeitung ermöglicht wird.

Folgendes CSDL-Beispiel definiert zwei EntityType-Datenstrukturen, Customer und SalesOrder. Beide Datenstrukturen verfügen über verschiedene Eigenschaften und eine NavigationProperty, die eine Überquerung der Beziehung zwischen Customer- und Order-Entitäten ermöglicht. Im Beispiel beruht die NavigationProperty auf einer 1:n-Association, die zwischen Customer- und Order-Entitäten definiert ist.

<?xml version="1.0" encoding="utf-8"?>
 <Schema Namespace="NorthwindModel" Alias="Self"
 xmlns="https://schemas.microsoft.com/ado/2006/04/edm">
  <EntityType Name="Customer">
    <Key>
      <PropertyRef Name="CustomerID" />
    </Key>
    <Property Name="CustomerID" Type="String" Nullable="false" />
    <Property Name="CompanyName" Type="String" Nullable="false" />
    <Property Name="ContactName" Type="String" Nullable="true" />
    <Property Name="City" Type="String" Nullable="true" />
    <Property Name="Country" Type="String" Nullable="true" />
    <NavigationProperty Name="SalesOrders"
            Relationship="Self.Customer_Order" FromRole="Customer"
            ToRole="SalesOrder" />
  </EntityType>

  <EntityType Name="SalesOrder">
    <Key>
      <PropertyRef Name="OrderID" />
    </Key>
    <Property Name="OrderID" Type="Int32" Nullable="false" />
    <Property Name="OrderDate" Type="DateTime" Nullable="true" />
    <Property Name="ShipCity" Type="String" Nullable="true" />
    <Property Name="ShipCountry" Type="String" Nullable="true" />
    <NavigationProperty Name="Customer"
       Relationship="Self.Customer_Order"
       FromRole="SalesOrder" ToRole="Customer" />
  </EntityType>

  <Association Name="Customer_Order">
    <End Role="Customer" Type="Self.Customer" Multiplicity="1" />
    <End Role="SalesOrder" Type="Self.SalesOrder" Multiplicity="*" />
  </Association>

  <EntityContainer Name="NorthwindEntities">
    <EntitySet Name="Categories" EntityType="Self.Category" />
    <EntitySet Name="Products" EntityType="Self.Product" />
    <EntitySet Name="Customers" EntityType="Self.Customer" />
    <EntitySet Name="SalesOrders" EntityType="Self.SalesOrder" />
    <AssociationSet Name="CustomerOrders"
                  Association="Self.Customer_Order">
      <End Role="Customer" EntitySet="Customers" />
      <End Role="SalesOrder" EntitySet="SalesOrders" />
    </AssociationSet>
  </EntityContainer>

</Schema>

Siehe auch

Konzepte

Übersicht über das ADO.NET Data Services-Framework
Erstellen von ADO.NET Data Services
Clientanwendungen von ADO.NET Data Services
ADO.NET Data Service-Spezifikationen
Datenübertragungsformat (ADO.NET Data Services-Framework)

Weitere Ressourcen

Entity Data Model