Servicios y semántica de REST (marco de trabajo de servicios de datos de ADO.NET)
Los servicios de la transferencia de estado representacional (REST) se basan en dos requisitos:
Esquema de direccionamiento usado para buscar recursos de red.
Metodología para devolver representaciones de estos recursos.
El marco de trabajo de los servicios de datos de ADO.NET admite estos dos requisitos de REST. Además, implementa un esquema de direccionamiento de datos que usa los URI para buscar datos negociados a través de encabezados HTTP. Los datos se transportan en la notación de objetos JavaScript (JSON) o el protocolo de publicación Atom (AtomPub).
Los servicios de datos de ADO.NET pueden implementar las entidades de datos y las relaciones entre entidades basadas en un intervalo de implementaciones de almacenamiento de datos. El sistema puede implementar cualquier proveedor que implemente IQueryable. Para admitir actualizaciones, el proveedor debe implementar IUpdatable.
El marco de trabajo de los servicios de datos de ADO.NET también usa la infraestructura de almacenamiento en caché HTTP correctamente establecida y esquemas de autenticación estándar, como Microsoft ASP.NET, para controlar el acceso a los servicios de datos.
Esquema de direccionamiento de datos
El esquema de direccionamiento de datos de los servicios de datos de ADO.NET usa los URI para apuntar a los datos negociados a través de encabezados HTTP. En los siguientes ejemplos, se muestran los URI válidos que buscan recursos de servicio de datos:
Todos los elementos Customers: http://host/service.svc/Customers
Todos los elementos Orders, ordenados por fecha de envío: http://host/service.svc/SalesOrders?$orderby=ShippedDate
La entidad Customer con la clave 'ALFKI': http://host/service.svc/Customers('ALFKI')
Las entidades Orders del cliente con la clave 'ALFKI': http://host/service.svc/Customers('ALFKI')/SalesOrders
Para obtener más ejemplos de sintaxis, vea Esquema de direccionamiento simple de datos con identificadores uniformes de recursos (URI) (marco de trabajo de los servicios de datos de ADO.NET).
Modelo de definición de datos
Un servicio de datos de ADO.NET utiliza el lenguaje de definición de esquemas conceptuales (CSDL) para definir los datos que representa. Un esquema CSDL es un documento XML basado en Entity Data Model (EDM). Para obtener más información sobre EDM, vea ADO.NET Entity Framework.
Un mecanismo de definición de datos bien definido permite crear herramientas en tiempo de diseño para extraer los metadatos de los servicios y crear interfaces de usuario, contenedores y repositorios de metadatos utilizados en tiempo de ejecución con el fin de facilitar el uso de datos.
En el siguiente ejemplo de CSDL, se definen dos estructuras de datos de EntityType, Customer
y SalesOrder
. Cada una de la cuales tiene unas cuantas propiedades y un elemento NavigationProperty que permite el recorrido de la relación entre las entidades Customer
y Order
. En el ejemplo, el elemento NavigationProperty se basa en uno a varios elementos Association definidos entre las entidades Customer
y 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>
Vea también
Conceptos
Información general sobre el marco de trabajo de los servicios de datos de ADO.NET
Crear servicios de datos de ADO.NET
Aplicaciones cliente de los servicios de datos de ADO.NET
Especificaciones del servicio de datos de ADO.NET
Formato de transporte de datos (marco de trabajo de los servicios de datos de ADO.NET)