REST 服務和語意 (ADO.NET 資料服務架構)
具像狀態傳輸 (REST) 服務是以兩項需求為基礎:
用於找出網路資源的定址配置。
傳回這些資源之表示的方法。
ADO.NET 資料服務架構同時支援這兩項 REST 需求。ADO.NET 資料服務架構會實作資料定址配置,而這項配置會使用 URI 來找出透過 HTTP 標頭交涉的資料。然後,資料會以 JavaScript 物件標記法 (JavaScript Object Notation,JSON) 或原子發行通訊協定 (Atom Publishing Protocol,AtomPub) 進行傳輸。
ADO.NET 資料服務可以根據資料儲存實作 (Implementation) 的範圍,在實體之間部署資料實體和關聯性。系統可以部署任何實作 IQueryable 的提供者。若要支援更新,提供者必須實作 IUpdatable。
ADO.NET 資料服務架構也會使用堅實的 HTTP 快取基礎結構和標準驗證配置 (例如 Microsoft ASP.NET) 來控制資料服務的存取權。
資料定址配置
ADO.NET 資料服務的資料定址配置會使用 URI 來指向透過 HTTP 標頭交涉的資料。可找出資料服務資源的有效 URI 顯示在下列範例中:
所有 Customers:http://host/service.svc/Customers
所有 Orders (依據出貨日期排序):http://host/service.svc/SalesOrders?$orderby=ShippedDate
含有索引鍵 'ALFKI' 的 Customer 實體:http://host/service.svc/Customers('ALFKI')
含有索引鍵 'ALFKI' 之客戶的 Orders 實體:http://host/service.svc/Customers('ALFKI')/SalesOrders
如需其他語法範例,請參閱包含統一 URI 的簡單資料定址配置 (ADO.NET 資料服務架構)。
資料定義模型
ADO.NET 資料服務會使用概念結構定義語言 (CSDL) 來定義它所代表的資料。CSDL 結構描述是以 Entity Data Model (EDM) 為基礎的 XML 文件。如需 EDM 的詳細資訊,請參閱 ADO.NET Entity Framework。
妥善定義的資料描述機制可讓您建立設計階段工具,以便從服務中擷取中繼資料,以及建立在執行階段用於加快資料取用速度的使用者介面、包裝函式和中繼資儲存機制。
下列 CSDL 範例會定義 Customer
和 SalesOrder
這兩個 EntityType 資料結構,而且每個資料結構都含有少數屬性和一個 NavigationProperty,以便允許周遊 Customer
與 Order
實體之間的關聯性。在此範例中,NavigationProperty 是以 Customer
與 Order
實體之間定義的一對多 Association 為基礎。
<?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>
另請參閱
概念
ADO.NET 資料服務架構概觀
建立 ADO.NET 資料服務
ADO.NET 資料服務的用戶端應用程式
ADO.NET 資料服務規格
資料傳輸格式 (ADO.NET 資料服務架構)