- 最大的地摊平台 eBay 的目录服务:http://ebayodata.cloudapp.net/
- 北美最大的网络电视供应商 NetFlix 的目录服务:http://odata.netflix.com/Catalog/
这是什么?
开放数据协议(oData)让你重新认识 HTTP 协议并且简化数据在网上的发布和更新过程。参看在 cnblogs 查到的唯一介绍它的新闻:http://news.cnblogs.com/n/69756/ 和一篇写在 VS 2010 RC 时候的简介:http://www.cnblogs.com/shanyou/archive/2010/02/11/1667381.html
说正题: 用 VS 2010 + .NET V4,几乎可以不用写代码就把完整的数据服务发布到网上。步骤如下:
假设你已经有一个数据库,用户可以发围脖和订阅别人的围脖,数据结构如下,
要把它变成一个网络数据服务:
1、在VS 2010 建一个Web应用或网站,加一个数据模型:
2、把数据库里的表加进来:
把默认生成的关联属性名字改改,改好就像右边这样:
3、加一个新的 WCF Data Service 网页:
4、打开它的 CS 文件,
代码 1 public class messages : DataService< /* TODO: put your data source class name here */ > 2 { 3 // This method is called _disibledevent=> 4 public static void InitializeService(DataServiceConfiguration config) 5 { 6 // TODO: set rules to indicate which entity sets and service operations are visible, updatable, etc. 7 // Examples: 8 // config.SetEntitySetAccessRule("MyEntityset", EntitySetRights.AllRead); 9 // config.SetServiceOperationAccessRule("MyServiceOperation", ServiceOperationRights.All); 10 config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2; 11 } 12 }
改成下面这个样子(基本上就是把注释去掉,把刚才的数据模型加进来):
代码 1 public class messages : DataService
5、没了,你的数据服务已经在网上。
浏览你的SVC网页,可以看到:
代码 1 2
浏览service.svc/Users,可以看到用户列表:
代码
总结
为什么叫开放数据协议?因为它跨语言和平台的,基于http地址的数据服务。
例子:
列出所有的用户:service.svc/Users
找一个叫张三的用户:service.svc/Users?$filter=Name eq '张三'
他发的围脖(假设前一个查询返回了他的ID):service.svc/Users(1)/Posts
他的Fans: service.svc/Users(1)/Followers
他发的关于cnblogs的围脖:service.svc/Posts?$filter=userId eq 1 and indexof(content, 'cnblogs') ge 0
这些看起来并不难,但好处是,它们都不需要写任何代码,而且它是RESTful的,任何可以访问URL的语言,平台都可以用它。除此以外,这只是GET操作,POST,DELETE等其他标准HTTP操作也是原生支持的。所以,它是完整的数据服务,并不仅仅是数据查询。
如果大家有兴趣,我会继续写这个主题,比如在WPF使用这种服务,在JavaScript使用(Built in JSON support, 哈哈),并涉及一些更深的,实际项目的内容,比如数据安全,数据事务。
题外话, 为什么是另一个?很久很久以前,SQL Server曾经有过Web Service 的服务,但M$做了一个艰难的决定,把它在后续版本中移除了。由于 Entity Framework, WCF data service in .NET V4的加持,这种服务又换了一个方式回来了。
题外外话,斗转星移,离上一篇文章又两年过去了,地方没变,人老了。
最新评论