首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

OData 實戰:以開放資料協定打造豐富網際網路應用程式

     編輯:關於.NET

OData 核心定位

開放資料協定(OData)是基於資源的 Web 協定,用於查詢與更新資料。採用 HTTP 動詞(GET/PUT/POST/MERGE/DELETE)操作資源,URI 識別資源,資料以 AtomPub 或 JSON 傳輸。AtomPub 之上定義查詢與結構描述慣例。核心價值:任何 OData 用戶端可操作任何 OData 生產者,無需學習特定服務程式模型。

OData 生態系統

  • 用戶端庫:.NET、Silverlight、AJAX、Java、PHP、Objective-C、PowerPivot for Excel。
  • 生產者:WCF Data Services(關聯式資料)、SharePoint 2010 清單、Windows Azure 表服務、Microsoft Codename "Dallas"、IBM WebSphere eXtreme Scale 7.0、Open Government Data Initiative (OGDI) 等。

一次開發,多端互通;一次發布,多客戶端消費。

WCF Data Services 關鍵新功能(.NET 3.5 SP1 更新 / .NET 4 內建)

  • 計數功能:$inlinecount=allpages 取得實體總數;單獨請求計數。
  • DataServiceCollection:實作 INotifyPropertyChanged/CollectionChanged,雙向繫結 Silverlight DataGrid 等控制項,自動追蹤變更並回寫。
  • 投影查詢:LINQ Select 只取必要屬性,減少頻寬與客戶端記憶體佔用。

案例:Contoso 地產尋屋系統

資料來源整合

  1. SQL Server 關聯資料:房產與銷售清單 → Entity Framework → WCF Data Service (Listings.svc) 發布為 OData 端點。
  2. SharePoint 2010 清單:仲介資訊 → 原生 OData 端點(/_vti_bin/ListData.svc)。
  3. OGDI 公共資料:華盛頓特區犯罪率、學校等 → Azure 託管 OData 服務。

服務定義範例

public class Listings : DataService<ListingsEntities>
{
    public static void InitializeService(DataServiceConfiguration config)
    {
        config.SetEntitySetAccessRule("Listings", EntitySetRights.AllRead);
        config.SetEntitySetAccessRule("Properties", EntitySetRights.AllRead);
        config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
    }
}

OData URI 查詢選項速查

選項說明
$top=n前 n 筆
$skip=n跳過 n 筆
$inlinecount=allpages包含總筆數
$filter=expr篩選(如 Status eq 'Available')
$orderby=expr排序
$select=expr投影屬性子集
$format=atom|json指定格式(WCF DS 不支援)

Silverlight 用戶端開發

加入服務參考

VS 中右鍵專案 → Add Service Reference,輸入 OData 端點 URI,自動產生用戶端內容類別與強型別 Proxy。

三大服務內容建立


var ogdi = new dcDataService(new Uri(ogdiUri));
var agents = new AgentsDataContext(new Uri(spUri));
var listings = new ListingsEntities(new Uri(lstUri));

資料繫結與非同步載入


var coll = new DataServiceCollection<Listing>();
listingsGrid.ItemsSource = coll;
var q = from l in listings.Listings.Expand("Property") select l;
coll.LoadAsync(q);  // 內建非同步回調處理

DataServiceCollection 變更追蹤 → UI 異動自動反映實體 → BeginSaveChanges 批次回寫。

跨服務關聯查詢

選取清單後,以仲介姓名查詢 SharePoint 服務;查詢 OGDI 社區資料同理。客戶端建立虛擬關聯,無需後端關聯。

PowerPivot for Excel 2010 消費 OData

  • 「從資料來源」→ 輸入 OData 端點 → 匯入海量資料至記憶體分析引擎。
  • 秒級完成樞紐分析、圖表視覺化(如 OGDI 犯罪率熱力圖)。

PowerPivot 匯入 OData PowerPivot 圖表

Open Data Protocol Visualizer

VS 2010 擴充工具(Tools → Extension Manager),視覺化服務結構:實體集為方框,關聯為連線。OGDI 服務呈扁平結構(無關聯),快速掌握資料形態。

OData Visualizer

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved