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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【转】WCF Odata 开放数据协议应用

發(fā)布時間:2023/12/10 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【转】WCF Odata 开放数据协议应用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

OData簡介

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

另一種方法是所謂的資源為導(dǎo)向的架構(gòu)(ROA),暴露Web服務(wù)的資源,并且用戶能夠?qū)Ω鞣N對資源進(jìn)行實時的查詢,具有表現(xiàn)數(shù)據(jù)和整合數(shù)據(jù)的能力。類似于使用 SQL 在數(shù)據(jù)庫中查詢數(shù)據(jù)。唯一的區(qū)別是,ROA你通過URL創(chuàng)建查詢。

OData是一個協(xié)議,規(guī)定公開數(shù)據(jù)的Web服務(wù)的特點。下面這段話是OData的定義

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

OData協(xié)議概述

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

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

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

在介紹使用 OData 協(xié)議進(jìn)行查詢時,將會使用這些公開的 OData 服務(wù)。下面以?http://services.odata.org/Northwind/Northwind.svc/

??為例,在瀏覽器中輸入剛網(wǎng)址,你將會看到

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

  • 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 格式的數(shù)據(jù)。例如下圖是 Products 的數(shù)據(jù)。

格式輸出的數(shù)據(jù)

默認(rèn)的格式是 XML-Atom,當(dāng)然,你也可以其它格式,當(dāng)前還支持 JSON 格式。只要在URL上添加?$format=json 參數(shù),即可獲得 json 格式的數(shù)據(jù)。

  • 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

選取字段  

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

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

展開

很多時候,我們還需要將關(guān)聯(lián)的導(dǎo)航屬性取出來。打開下面的 URL:http://services.odata.org/Northwind/Northwind.svc/$metadata

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

通過 expand 參數(shù),可以把相關(guān)的導(dǎo)航屬性的數(shù)據(jù)一并取出。輸入 http://services.odata.org/Northwind/Northwind.svc/Products?$format=json&$expand=Supplier

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

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

分頁

通過 $top 和 $skip 參數(shù),可以進(jìn)行分頁顯示,例如:

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

過濾

使用 $filter參數(shù),可以對數(shù)據(jù)進(jìn)行過濾,例如:

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

排序

使用 $orderby 參數(shù),可以對數(shù)據(jù)進(jìn)行排序,例如:

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

總結(jié)

以上是生活随笔為你收集整理的【转】WCF Odata 开放数据协议应用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。