OData 1-1 入門:實現一個簡單的OData服務
1.什么是OData:開放數據協議(OData)是一個查詢和更新數據的Web協議。OData應用了web技術如HTTP、Atom發布協議(AtomPub)和JSON等來提供對不同應用程序,服務和存儲的信息訪問
2.OData 優勢(個人看法)
1)一種通用的跨語言的協議,
2)基于.net的實現可以非常方便的實現一些功能(例如在客戶端使用lambda表達式, 使用odata 傳遞請求到server,最后服務器返回一個結果集 , 注意 過濾排序什么操作是在服務器實現的,我個人覺得這個功能封裝的很徹底,實現也很酷)
以下代碼就是一個最簡單的OData的實現
代碼
[DataServiceKey("Id")] //主鍵
public class UserInformation
{
public int Id { get; set; }
public string UserName { get; set; }
public int Age { get; set; }
}
public partial class DataContext
{
public IQueryable<UserInformation> UserInformations
{
get
{
List<UserInformation> users = new List<UserInformation>()
{
new UserInformation (){Id=1,UserName="Test 1", Age=30},
new UserInformation (){Id=2,UserName="Test 2", Age=30},
new UserInformation (){Id=3,UserName="Test 3", Age=20},
};
return users.AsQueryable<UserInformation>();
}
}
}
public class WcfDataService2 : DataService<DataContext>
{
public static void InitializeService(IDataServiceConfiguration
config)
{
config.SetEntitySetAccessRule("*", EntitySetRights.All);//定義訪問權限
}
}
如果需要對多個不同對象實現OData 只要對DataContext添加不同的屬性就好了
這樣的代碼在客戶端操作起來,和使用EF沒什么差別(內部卻是使用OData實現)
運行的時候直接訪問服務,顯示如下
服務器主要是告訴客戶端他實現了哪些東西
代碼
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<service xml:base="http://localhost:12002/WcfDataService2.svc/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app" xmlns="http://www.w3.org/2007/app">
<workspace>
<atom:title>Default</atom:title>
<collection href="UserInformations">
<atom:title>UserInformations</atom:title>
</collection>
</workspace>
</service>
以下是客戶端使用的范例
1.引用web服務 - -#
2. 編寫如下代碼~~
代碼
DataContext serverContext = new DataContext(new Uri("http://localhost:12002/WcfDataService2.svc/"));
var users = serverContext.UserInformations.Where(p => p.Id > 0).OrderBy(p => p.Age).Skip(1).Take(2);
foreach (var user in users)
{
Console.WriteLine("{0} - {1} {2}", user.Id, user.UserName, user.Age);
}
代碼是非常的精簡,而且非常方便的在客戶端使用高性能而且方便的lambda表達式
如果你設計服務器程序 ,那么odata是一個很好的選擇

浙公網安備 33010602011771號