Formato de transporte de datos (marco de trabajo de los servicios de datos de ADO.NET)
El marco de trabajo de los servicios de datos de ADO.NET admite solicitudes y respuestas HTTP en más de un formato de datos para adaptar varios agentes de cliente. Actualmente, el marco de trabajo de los servicios de datos de ADO.NET puede representar los datos en notación de objetos JavaScript (JSON) o el protocolo de publicación Atom (AtomPub).
El formato de representación predeterminado es AtomPub generado por una asignación fija del Entity Data Model (EDM) a la sintaxis XML de AtomPub. Un URI que direcciona un Customer
con el identificador 'ADATUMCORP'
es:
http://myserver/data.svc/Customers('ADATUMCORP')
El servicio de datos responde con la carga útil mostrada aquí:
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<entry xml:base="http://myserver/data.svc/"
xmlns:ads="https://schemas.microsoft.com/ado/2007/08/dataservices"
xmlns:adsm="https://schemas.microsoft.com/ado/2007/08/dataservices/metadata"
adsm:type="NorthwindModel.Customers"
xmlns="http://www.w3.org/2005/Atom">
<id>http://myserver/data.svc/Customers('ADATUMCORP')</id>
<updated />
<title />
https://localhost:61243/nw.svc/Customers('ADATUMCORP') <author>
<name />
</author>
<link rel="edit" href="//myserver/data.svc/Customers('ADATUMCORP')"
title="Customers" />
https://localhost:61243/nw.svc/Customers('ADATUMCORP')
<content type="application/xml">
<ads:CustomerID>ADATUMCORP</ads:CustomerID>
<ads:CompanyName>A. Datum Corporation</ads:CompanyName>
<ads:ContactName>Lisa Andrews</ads:ContactName>
<ads:ContactTitle>Sales Representative</ads:ContactTitle>
<ads:Address>Obere Str. 57</ads:Address>
<ads:City>Berlin</ads:City>
<ads:Region ads:null="true" />
<ads:PostalCode>12209</ads:PostalCode>
<ads:Country>Germany</ads:Country>
<ads:Phone>030-0074321</ads:Phone>
<ads:Fax>030-0076545</ads:Fax>
</content>
<link rel="related" title="Orders"
href="Customers('ADATUMCORP')/Orders"
type="application/xml;type=feed" />
<link rel="related" title="CustomerDemographics"
href="Customers('ADATUMCORP')/CustomerDemographics"
type="application/xml;type=feed" />
</entry>
La entidad Customer
del ejemplo anterior contiene las dos propiedades con valores primitivos, como el valor de cadena asignado a CompanyName
y propiedades que señalan a otros recursos, como Orders
.
El agente de cliente especifica el formato de transporte de datos mediante el encabezado Accept de la solicitud HTTP. La solicitud anterior utilizó application/atom+xml. Estableciendo el encabezado Accept en application/json
, el agente de cliente obtiene los resultados siguientes en formato JSON:
{
"d":{
__metadata: {
uri: "Customers(\'ADATUMCORP\')",
type: "NorthwindModel.Customers"
},
CustomerID: "ADATUMCORP",
CompanyName: "A. Datum Corporation",
ContactName: "Lisa Andrews",
ContactTitle: "Sales Representative",
Address: "Obere Str. 57",
City: "Berlin",
Region: null,
PostalCode: "12209",
Country: "Germany",
Phone: "030-0074321",
Fax: "030-0076545",
Orders: {
__deferred: {
uri: "Customers(\'ADATUMCORP\')/Orders"
}
}
}
}
Aunque semánticamente es equivalente, la mayoría de las versiones de JSON se integran con facilidad con los entornos JavaScript, como las aplicaciones basadas en AJAX.
Nota |
---|
La carga útil está contenida en la propiedad "d" fija de la solicitud HTTP para mitigar el uso imprevisto de cargas útiles de JSON creadas por los servicios de datos de ADO.NET. |
Si el agente de cliente emite una solicitud PUT o POST, la carga útil de la solicitud puede estar en cualquiera de los formatos de datos compatibles. El agente de cliente debe indicar el formato de servicio de datos de la solicitud estableciendo el encabezado Content-Type
en el tipo mime adecuado. Para obtener más información, vea HttpWebRequest PUT (marco de trabajo de los servicios de datos de ADO.NET) y HttpWebRequest POST (marco de trabajo de los servicios de datos de ADO.NET).
Vea también
Conceptos
Esquema de direccionamiento simple de datos con identificadores uniformes de recursos (URI) (marco de trabajo de los servicios de datos de ADO.NET)
HttpWebRequest GET (marco de trabajo de los servicios de datos de ADO.NET)
Biblioteca cliente de .NET (marco de trabajo de los servicios de datos de ADO.NET)