OData的實際應用-通過開放資料協議構建富Internet應用程式

來源:互聯網
上載者:User

在 PDC09 期間,Microsoft WCF Data Services團隊(以前稱為 ADO.NET 資料服務團隊)首次推出 OData,即開放資料協議。這一訊息是在會議第二天的主題演講中宣布的,但實際上 OData 早就開始了。自從 Microsoft .NET Framework 3.5 SP1 中提供 ADO.NET 資料服務以來,熟悉 ADO.NET 資料服務的使用者已經使用 OData 作為資料轉送協議開發基於資源的應用程式。本文將介紹富 Internet 應用程式 (RIA) 的開發人員如何使用 OData 以及使用 OData 的優勢。

首先,我將回答自 11 月 OData 問世後,我經常被問到的頭號問題。是什麼問題呢?簡單地說,OData 是一種基於資源的 Web 協議,用於查詢和更新資料。OData 定義了使用 HTTP 動詞(PUT、POST、UPDATE 和 DELETE)對資源的操作,並使用標準的 URI 文法識別這些資源。資料將使用 AtomPub 或 JSON 標準通過 HTTP 進行傳輸。對於 AtomPub,OData 協議在標準之上定義了一些約定,以支援查詢和架構資訊的交換。

OData 生態系統

在本文中,我將介紹幾個使用或產生 OData 源的產品、架構和 Web 服務。該協議定義了可以操作的資源和方法,以及可以對這些資源執行的操作(GET、PUT、POST、MERGE 和 DELETE,分別對應著讀取、建立、替換、合并和刪除)。

實際上,這表示任何可以使用 OData 協議的用戶端都可以對任何生產者進行操作,沒必要學習服務的編程模型即可針對該服務進行編程,只要選擇編程的目標語言即可。

例如,如果您是 Silverlight 開發人員,學習適用於該平台的 OData 庫,則您可以針對任何 OData 源進行編程。除了適用於 Silverlight 的 OData 庫,您還會發現適用於 Microsoft .NET Framework 用戶端、AJAX、Java、PHP 和 Objective-C 的庫,更多的庫還在不斷推出。此外,Microsoft PowerPivot for Excel 也支援將 OData 源作為將資料匯入到其記憶體內部分析引擎的選項。

就像能使用 OData 協議的用戶端可以對任何生產者進行操作一樣,使用 OData 建立的服務或應用程式可以被任何啟用了 OData 的用戶端使用。在建立用於將關係資料公開為 OData 端點(或在 SharePoint 網站、Windows Azure 的表或其他您使用的服務中公開資料)的 Web 服務之後,您可以很輕鬆地在 .NET Framework 中構建富案頭用戶端,或構建使用相同資料的富 AJAX 網站。

OData 的長期目標是為每種主流技術、程式設計語言和平台都打造一個 OData 用戶端庫,以便每個用戶端應用程式都可以使用豐富的 OData 源。OData 的生產者和使用者共同構成了 OData“生態系統”。

WCF Data Services的新功能

作為 .NET Framework 組件的 WCF Data Services是一個可提供交鑰匙解決方案的架構,用於建立 OData Web 服務。它包括一個用戶端庫,您可以用來構建使用 OData 源的用戶端。WCF Data Services團隊最近發布了 .NET Framework 3.5 SP1 的更新,引入了一系列將在 .NET Framework 4 中推出的新功能。這是資料服務架構的第二個版本。請訪問 blogs.msdn.com/astoriateam/archive/2010/01/27/data-services-update-for-net-3-5-sp1-available-for-download.aspx,在這裡可以找到相關介紹和下載連結。

WCF Data Services架構不僅僅是針對 RIA 應用程式的協議,而且還適用於進階服務開發人員。它有很多迷人的功能,例如伺服器分頁限制、HTTP 緩衝支援、無狀態服務、流支援和可插入的提供者模型。讓我們來看看吸引大多數 RIA 開發人員的新功能。

初始版本推出之後,使用者最期望的功能之一就是能夠請求集中的實體數量。新的“計數”功能從兩方面滿足了該需求。首先,它讓您只請求計數,即一條查詢可以返回的值的數量。其次,它添加了一個查詢選項,告訴服務當查詢結果是部分集時(例如啟用了伺服器分頁),包括集中實體總數的計數。

為了改善從 OData 服務綁定資料時的使用體驗,一種新的類型 DataServiceCollection 已添加到 WCF Data Services用戶端庫中。該類型實現對其包含的條目的變更跟蹤(通過使用 INotifyPropertyChanged 和 INotifyCollectionChanged 介面)。如果將其綁定到控制項(例如 Silverlight 中的 DataGrid),它將跟蹤對象和集合本身的更改。這個新的集合大大簡化了使用介面組件建立 OData 用戶端的過程。

另一項使用者期待的功能是投影查詢結果返回的實體的屬性子集。為此已經添加了 LINQ 支援,這種支援通過 LINQ Select 語句實現。這有兩方面的好處:可以減小 HTTP 查詢響應的大小,還可以減小用戶端方對象的記憶體佔用量。當您針對別人的服務開發用戶端應用程式,而且該服務中每個實體都有很多對用戶端無意義的屬性時,這就特別有用。我將在後文中示範如何使用有很多實體、每個實體又有無數屬性的大型公用服務。樣本中的投影非常有用,因為它只包括一個實體上的少數幾個必需的屬性。

為了協助您瞭解 OData 生態系統的價值,我們將建立一個 Web 應用程式,讓訪問者瀏覽一家虛擬房地產公司 Contoso Ltd. 的網站,查看其管理的房產銷售清單。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.