数据传输格式(ADO.NET 数据服务框架)
ADO.NET 数据服务框架支持采用多种数据格式的 HTTP 请求和响应,以适应各种客户端代理。目前,ADO.NET 数据服务框架可采用 JavaScript 对象表示法 (JSON) 和 Atom 发布协议 (AtomPub) 来表示数据。
默认的表示形式格式是由固定映射(从实体数据模型 (EDM) 到 AtomPub 的 XML 语法)生成的 AtomPub。对具有 Id 'ADATUMCORP'
的 Customer
进行寻址的 URI 为:
http://myserver/data.svc/Customers('ADATUMCORP')
数据服务使用此处显示的负载进行响应:
<?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>
上例中的 Customer
实体同时包含具有基元值(例如分配给 CompanyName
的字符串值)的属性和指向其他资源(例如 Orders
)的属性。
客户端代理通过 HTTP 请求中的 Accept 标头指定数据传输的格式。前一个请求使用了 application/atom+xml。通过将 Accept 标头设置为 application/json
,客户端代理将获取采用 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"
}
}
}
}
虽然在语义上等效,但是大多数 JSON 版本都能轻松地与 JavaScript 环境(例如基于 AJAX 的应用程序)集成。
注意 |
---|
负载包含在 HTTP 请求的固定的“d”属性中,以减少对 ADO.NET 数据服务创建的 JSON 负载的意外使用情况。 |
如果客户端代理发出的是 PUT 或 POST 请求,则该请求的负载可以采用任何支持的数据格式。客户端代理必须通过将 Content-Type
标头设置为合适的 MIME 类型来指明请求的数据服务格式。有关更多信息,请参见 HttpWebRequest PUT(ADO.NET 数据服务框架)和 HttpWebRequest POST(ADO.NET 数据服务框架)。
另请参见
概念
使用统一的 URI 对数据进行寻址的简单方案(ADO.NET 数据服务框架)
HttpWebRequest GET(ADO.NET 数据服务框架)
.NET 客户端库(ADO.NET 数据服务框架)