微软发布了用于.NET、Java、PHP、Objective-C(用于 iPhone 和 Mac)和 JavaScript 的 OData SDK ,协助开发人员创建相应的客户端来使用基于 OData 的信息;也发布了“Dallas”的 CTP 2,一个用于销售和购买某些数据的网络商店。
OData 是一个基于 AtomPub 的协议,用来在 Web 上进行数据分享,而访问方式是数据消费者向数据提供者发送类似 REST 的请求——这就是所谓的 OData 服务点。 OData 添加了如下特性到 AtomPub 中:
- 用于表示结构化数据的协定
- 资源地址结构和 URL 语法
- 一组通用的查询选项(过滤、排序等等)
- 用于描述资源、链接和元数据结构的 Schema
- 用于批处理和“工作单元”请求的负载格式和语义
- 替代的资源内容表示方式(JSON)
一个数据请求可能包含如下组成部分:
对于如下服务点的查询会是:
使用 REST 协定,每个资源都标记为一个 URI,不过数据请求可能包含一些查询选项,例如用于数据过滤的查询选项,这让服务器执行应该在客户端完成的某些工作:
OData 开发者页面包含了创建和使用 OData 服务的详细信息,也会看到由 Netflix 实现的示例服务。
而前几天,微软宣布了 OData SDK ——用于创建 OData 客户端的一些开发工具——其基于 Apache 许可协议,包含如下内容:
- 示例 OData 在线服务(Northwind 等等)——打开浏览器就可以尝试 OData 服务
- OData 客户端函数库
- Windows Phone 7 series
- iPhone
- AJAX\Javascript
- PHP
- Java
- .NET
- Silverlight
- 在线 OData 浏览器(源代码可以从 odata.org 下载)
- Data Service 提供程序工具包:包含了白皮书,用来演示如何基于“任何”数据源创建数据服务的 WCF Data Services 提供程序实现示例
- OData 验证工具:一个测试包和一些示例,让你轻松验证 OData 服务点是否正确。这个测试包被设计成可轻易进行扩展,以便任何都能很容易地添加新的测试。
实际上,如下语言和平台都可以用来创建 OData 客户端:.NET、Java、PHP、Objective-C(用于 iPhone 和 Mac)和 JavaScript。不过为了让大家真正采用这个协议,Mono 项目的创始人 Miguel de Icaza 认为,除了 OData 和 SDK 以开放规范约定发布外,微软应该开源 OData 提供程序的参考实现:
我相信,如果微软希望让 OData 广泛推广,那么他们不仅需要为某些现成服务提供成长空间,也应该为 Unix 系统提供开源的 OData 服务器实现。 更进一步说,如果他们希望加速 OData 的应用,应该毫无迟疑地开放服务端的.NET 实现……
虽然客户端函数库是驱使客户端采用这个协议的重要步骤,但还应该把当前 Web 中放置于 Linux 服务器上的那些数据暴露出来,而这些 Linux 应用程序一般运行着 PHP、Java、Ruby 或 Python 应用程序。
最终,客户端代码会是一个用于 XML 文件格式的相对简单的解析器。另外一方面,服务器端代码要更加复杂才能提供相应的功能。
服务器端需要查询语法、选择操作的完整实现,以及为了数据安全而需要的访问控制和事务支持功能。
如果微软能开放他们的 OData 服务器端实现,我们就能马上让 Linux 用户以这种方式暴露他们的数据。Linux 用户只需要运行一个使用 System.Data.Services 函数库的 Mono 前端应用,就可以暴露那些放置于他们服务器上的数据;而且它也能被 Joomla、Wordpress、Rails、Django 等前端应用所利用,从而暴露为数据服务。
微软发布了一个 OData 生成器列表,包括 SharePoint 2010 、 IBM WebSphere 和 Microsoft SQL Azure 。他们也发布了“Dallas”的 CTP 2,也即 Microsoft Pinpoint,一个供应商能使用 OData 协议销售他们数据的网络商店。
评论