日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【转】WCF Data Service 使用小结 (一)—— 了解OData协议

發布時間:2023/12/10 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【转】WCF Data Service 使用小结 (一)—— 了解OData协议 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近做了一個小項目,其中用到了 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

?

關于關鍵字的詳細使用,可以參考 OData 官網的文檔。

http://www.odata.org/documentation/odata-v2-documentation/uri-conventions/

?

總結

以上是生活随笔為你收集整理的【转】WCF Data Service 使用小结 (一)—— 了解OData协议的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。