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是一个很好的选择