Servizi e semantica REST (framework di ADO.NET Data Services)

I servizi REST (Representational State Transfer) sono basati su due requisiti:

  • Uno schema di indirizzamento utilizzato per individuare le risorse in rete.

  • Una metodologia per la restituzione delle rappresentazioni di queste risorse.

Il framework di ADO.NET Data Services supporta entrambi i requisiti REST, implementando uno schema di indirizzamento dei dati che individua tramite URI i dati negoziati mediante le intestazioni HTTP. I dati vengono trasportati utilizzando il protocollo JSON ( JavaScript Object Notation) o AtomPub (Atom Publishing).

In ADO.NET Data Services è possibile distribuire entità di dati e relazioni fra entità in base a un intervallo delle implementazioni di archiviazione dei dati. Il sistema è in grado di distribuire qualsiasi provider che implementi IQueryable. Per supportare gli aggiornamenti, è necessario che il provider implementi IUpdatable.

Il framework di ADO.NET Data Services si avvale inoltre di un'infrastruttura consolidata di memorizzazione nella cache HTTP e di schemi di autenticazione standard, ad esempio Microsoft ASP.NET, per controllare l'accesso ai servizi dati.

Schema di indirizzamento dei dati

Lo schema di indirizzamento dei dati di ADO.NET Data Services utilizza gli URI per puntare a dati negoziati tramite intestazioni HTTP. Negli esempi seguenti vengono riportati URI validi per l'individuazione di risorse del servizio dati:

Tutti i set di entità Customers: http://host/service.svc/Customers

Tutti i set di entità Orders, ordinati per data di spedizione: http://host/service.svc/SalesOrders?$orderby=ShippedDate

L'entità Customer con chiave 'ALFKI': http://host/service.svc/Customers('ALFKI')

Le entità Orders per Customer con chiave 'ALFKI': http://host/service.svc/Customers('ALFKI')/SalesOrders

Per ulteriori esempi di sintassi, vedere Schema di indirizzamento semplice di dati con URI uniformi (framework di ADO.NET Data Services).

Modello di definizione dei dati

Un servizio ADO.NET Data Service utilizza il linguaggio CSDL (Conceptual Schema Definition Language) per definire i dati rappresentati. Uno schema CSDL è un documento XML basato sul modello EDM (Entity Data Model). Per ulteriori informazioni sul modello EDM, vedere ADO.NET Entity Framework.

Un meccanismo consolidato di descrizione dati consente di creare strumenti per estrarre i metadati dai servizi nella fase di progettazione e creare interfacce utente, wrapper e repository di metadati per facilitare l'utilizzo dei dati nella fase di esecuzione.

Nell'esempio CSDL seguente vengono definite due strutture di dati EntityType, Customer e SalesOrder, ognuna con alcune proprietà e una proprietà NavigationProperty che consente di attraversare la relazione tra le entità Customer e Order. Nell'esempio, NavigationProperty è basata su una relazione Association di tipo uno-a-molti tra le entità Customer e 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>

Vedere anche

Concetti

Cenni preliminari sul framework di ADO.NET Data Services
Creazione di servizi ADO.NET Data Services
Applicazioni client di ADO.NET Data Services
Specifiche di ADO.NET Data Service
Formato di trasporto dati (framework di ADO.NET Data Services)

Altre risorse

Entity Data Model