Services et sémantique REST (ADO.NET Data Services Framework)

Les services REST (Representational State Transfer) sont basés sur deux spécifications :

  • un modèle d'adressage utilisé pour déterminer l'emplacement des ressources réseau ;

  • une méthodologie pour le retour des représentations de ces ressources.

L'ADO.NET Data Services Framework prend en charge ces deux spécifications REST. L'ADO.NET Data Services Framework implémente un modèle d'adressage de données qui utilise des URI pour rechercher les données négociées par le biais d'en-têtes HTTP. Les données sont transportées par le biais de JSON (JavaScript Object Notation) ou AtomPub (Atom Publishing Protocol).

ADO.NET Data Services peut déployer des entités de données et des relations entre entités sur la base d'une gamme d'implémentations de stockage de données. Le système peut déployer tout fournisseur qui implémente IQueryable. Pour prendre en charge les mises à jour, le fournisseur doit implémenter IUpdatable.

L'ADO.NET Data Services Framework utilise également une infrastructure de mise en cache HTTP bien établie et des modèles d'authentification standard, tels que Microsoft ASP.NET, pour contrôler l'accès aux services de données.

Modèle d'adressage de données

Le modèle d'adressage de données ADO.NET Data Services utilise des URI pour pointer vers les données négociées par le biais d'en-têtes HTTP. Voici quelques exemples d'URI valides qui déterminent l'emplacement de ressources de service de données :

Tous les Customers : http://host/service.svc/Customers

Tous les Orders, triés par date d'expédition : http://host/service.svc/SalesOrders?$orderby=ShippedDate

L'entité Customer avec la clé 'ALFKI' : http://host/service.svc/Customers('ALFKI')

Les entités Orders pour le client ayant la clé 'ALFKI' : http://host/service.svc/Customers('ALFKI')/SalesOrders

Pour obtenir davantage d'exemples de syntaxe, consultez Modèle d'adressage simple pour les données avec des URI uniformes (ADO.NET Data Services Framework).

Modèle de définition de données

Un service ADO.NET Data Services utilise le langage CSDL (Conceptual Schema Definition Language) pour définir les données qu'il représente. Un schéma CSDL est un document XML basé sur le modèle EDM (Entity Data Model). Pour plus d'informations sur le modèle EDM, consultez ADO.NET Entity Framework.

Un mécanisme de description de données correctement défini rend possible la création d'outils au moment de la conception afin d'extraire les métadonnées des services et de créer des interfaces utilisateur, des wrappers et des référentiels de métadonnées utilisés au moment de l'exécution afin de faciliter la consommation des données.

L'exemple de code CSDL suivant définit deux structures de données EntityType, Customer et SalesOrder, chacune avec quelques propriétés et une NavigationProperty qui autorise le parcours de la relation entre les entités Customer et Order. Dans l'exemple, NavigationProperty est basée sur une Association un-à-plusieurs définie entre des entités Customer et Order.

<?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>

Voir aussi

Concepts

Vue d'ensemble d'ADO.NET Data Services Framework
Création d'ADO.NET Data Services
Applications clientes d'ADO.NET Data Services
Spécifications d'ADO.NET Data Service
Format transport de données (ADO.NET Data Services Framework)

Autres ressources

Entity Data Model