微软发布 OData SDK 和“Dallas” CTP2

  • Abel Avram
  • 朱永光

2010 年 3 月 28 日

话题:.NET微软架构DevOps语言 & 开发

微软发布了用于.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 2010IBM WebSphereMicrosoft SQL Azure。他们也发布了“Dallas”的 CTP 2,也即 Microsoft Pinpoint,一个供应商能使用 OData 协议销售他们数据的网络商店。

查看英文原文:Microsoft Has Released OData SDK and “Dallas” CTP 2

.NET微软架构DevOps语言 & 开发