数据传输格式(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 的应用程序)集成。

Note注意

负载包含在 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 数据服务框架)

其他资源

ADO.NET 实体框架