程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> WCF Data Service使用總結 (一)了解OData協議

WCF Data Service使用總結 (一)了解OData協議

編輯:關於.NET

最近做了一個小項目,其中用到了 WCF Data Service,之前是叫 ADO.NET Data Service 的。關於WCF Data Service,博客園裡的介紹並不多,但它確實是個很好的框架。可以很方便地通HTTP來訪問數據庫,如果你是做富客戶端開發的,用它絕對能大大減少你的工作量。出於對這個框架的喜愛,於是把自己的一些使用經驗寫下來,並且希望有更多的人能夠用上。

OData簡介

說起 WCF Data Service ,不得不說的是 OData。對於一個標准的 Web 服務,它往往會提供了一些功能,比如說:訂貨、退貨這些,然後使用者通過HTTP協議來使用這些功能。這是面向服務的基本思想,然而面前服務有一些缺點,很多時候,沒法准確預測到用戶需要什麼。因此總是要不斷地增加新的接口,不斷地修改返回的對象。

另一種方法是所謂的資源為導向的架構(ROA),暴露Web服務的資源,並且用戶能夠對各種對資源進行實時的查詢,具有表現數據和整合數據的能力。類似於使用 SQL 在數據庫中查詢數據。唯一的區別是,ROA你通過URL創建查詢。

OData是一個協議,規定公開數據的Web服務的特點。下面這段話是OData的定義

Open Data Protocol (開放數據協議,OData)是用來查詢和更新數據的一種Web協議,其提供了把存在於應用程序中的數據暴露出來的方式。OData運用且構建於很多 Web技術之上,比如HTTP、Atom Publishing Protocol(AtomPub)和JSON,提供了從各種應用程序、服務和存儲庫中訪問信息的能力。OData被用來從各種數據源中暴露和訪問信息, 這些數據源包括但不限於:關系數據庫、文件系統、內容管理系統和傳統Web站點。

OData協議概述

正如上面所提到的,OData服務通過Web服務來透露所提供的資源。然後您可以通過URL訪問這些資源。 OData 協議指明了如何通過HTTP來查詢數據。基本原則是,你可以輸入某些帶參數的 URL 來對資源進行查詢。

下面是一些你可以使用的 OData 公共服務,更多可以使用的 OData 服務,你可以通過訪問 OData 的官網來獲得。

http://services.odata.org/WebSite/OData.svc/

http://services.odata.org/OData/OData.svc/

http://services.odata.org/Northwind/Northwind.svc/

在介紹使用 OData 協議進行查詢時,將會使用這些公開的 OData 服務。下面以 http://services.odata.org/Northwind/Northwind.svc/

為例,在浏覽器中輸入剛網址,你將會看到

從上圖中你可以看到該服務提供了 Products、Advertisements、Categories、Suppliers 這些資源。通過輸入下面這些 URL 即可對這些資源進行訪問。例如:

http://services.odata.org/Northwind/Northwind.svc/Products

http://services.odata.org/Northwind/Northwind.svc/Categories

http://services.odata.org/Northwind/Northwind.svc/Suppliers

這些查詢,將會返回該資源的所有基於 XML-Atom 格式的數據。例如下圖是 Products 的數據。

格式輸出的數據

默認的格式是 XML-Atom,當然,你也可以其它格式,當前還支持 JSON 格式。只要在URL上添加 $format=json 參數,即可獲得 json 格式的數據。

http://services.odata.org/Northwind/Northwind.svc/Products?$format=json

http://services.odata.org/Northwind/Northwind.svc/Categories?$format=json

http://services.odata.org/Northwind/Northwind.svc/Suppliers?$format=json

選取字段

默認情況下,是會返回所有字段的,但很多時候,你可能只是需要獲取其它的某些字段。例如下面的查詢中只返回 ID 和 Name 字段。

http://services.odata.org/Northwind/Northwind.svc/Products?$select=ProductID,ProductName&$format=json

展開

很多時候,我們還需要將關聯的導航屬性取出來。打開下面的 URL:http://services.odata.org/Northwind/Northwind.svc/$metadata

從下面這個圖可以看到,Product 還有 Category、Order_Details、Supplier 三個導航屬性。

通過 expand 參數,可以把相關的導航屬性的數據一並取出。輸入 http://services.odata.org/Northwind/Northwind.svc/Products?$format=json&$expand=Supplier

當然,你也可以一次展開多個導航屬性,多個導航屬性之間使用“,”分隔,例如:

ttp://services.odata.org/Northwind/Northwind.svc/Products?$format=json&$expand=Supplier,Category

分頁

通過 $top 和 $skip 參數,可以進行分頁顯示,例如:

http://services.odata.org/Northwind/Northwind.svc/Products?$format=json&$skip=10&$take=10

過濾

使用 $filter參數,可以對數據進行過濾,例如:

http://services.odata.org/Northwind/Northwind.svc/Products?$format=json&ProductId gt 4

排序

使用 $orderby 參數,可以對數據進行排序,例如:

http://services.odata.org/Northwind/Northwind.svc/Products?$format=json&$orderby=Product

升序

http://services.odata.org/Northwind/Northwind.svc/Products?$format=json&$orderby=Product asc

降序

http://services.odata.org/Northwind/Northwind.svc/Products?$format=json&$orderby=Product desc

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved