现在的位置: 首页 > 综合 > 正文

OData v3与WCF Data Services 5.x简介

2013年10月18日 ⁄ 综合 ⁄ 共 980字 ⁄ 字号 评论关闭

本文来源于我在InfoQ中文站翻译的文章,原文地址是:http://www.infoq.com/cn/news/2013/01/OData3


如果使用.NET构建新的Web Services,那么OData就应该处于很重要的位置,特别是在需要支持未知的第三方应用时更是如此。该技术本身支持SOAP与REST风格的消息,对于后者又提供了ATOM(XML)与JSON表示。这意味着使用者可以请求最适合自身的格式。

一个不错的起始点是Mohamad Halabi的文章Understanding OData v3 and WCF Data Services 5.x。这篇文章超越了传统的快速指南,重点关注于通信协议本身。

关于WCF Data Services(微软的OData实现)的一个常见误解是它被绑定到了其ORM Entity Framework上。Mohamad的文章中则介绍了公开一个非EF数据源的做法。对于静态数据来说,这就像是通过调用List.AsQuerable公开一套IQueryable属性一样简单。微软称其为Reflection Provider

对于更加复杂的场景,你需要参考MSDN上的Custom Data Service Providers页面。它包含了你需要实现的各种接口的链接及一篇同名文章。但遗憾的是,很多接口的文档都不太完善。

在创建OData服务时,你需要知道一些兼容性问题。幸好,Mohamad还介绍了OData V2与OData V3之间的差别。你主要应该关注如何注册JSONMessageInspector以及JSON与JSON Light之间的差别(后者去掉了很多OData元数据)。

WCF Data Services主要用于提供CRUD式的服务,即创建、读取、更新与删除操作。你还可以公开RPC风格的服务,比如说ProcessInvoice方法。这是通过WebGet与WebInvoke属性实现的。但遗憾的是,这要比一般的WCF服务多了很多限制,比如说“每个参数都必须是原生类型”。Service Operations页面对其进行了详尽的介绍。

修改与查询拦截器可用于重写CRUD式的请求。使用附加的验证与安全检查来阻止操作,通过错误消息告知你希望执行的其他操作。

查看英文原文:Getting Started with OData v3 and WCF Data Services 5.x

抱歉!评论已关闭.