ASP.NET Web API 2.2 for OData v4.0每日构建版现已发布。团队还在nuget上发布了OData核心库6.1版,其中包含数项Bug修复和新功能,尤其是增加了对OData v4规范的支持。不过,微软的团队表示,WCF将不会获得OData v4的特有功能。
\u0026#xD;\n
最近,OData v4.0和OData JSON Format v4.0被采纳为一项OASIS标准。读者可以查看OData v4.0有哪些新功能。
\u0026#xD;\n
以下是ASP.NET Web API 2.2和OData核心库的改进——
\u0026#xD;\n
- 协议和格式从V3变到V4\u0026#xD;\n
- OData属性路由\u0026#xD;\n
- 支持在OData模型中定义函数并绑定到控制器动作\u0026#xD;\n
- 模型别名——允许OData模型和CLR Types的类型或属性有不同的名称\u0026#xD;\n
- 可以定义模型的哪些属性能够过滤、排序、扩展或导航\u0026#xD;\n
- 支持ETags\u0026#xD;\n
- 支持枚举\u0026#xD;\n
- 支持$format查询字符串选项,因此客户端可以指定格式\u0026#xD;\n
- 支持单例\u0026#xD;\n
- 支持包含\u0026#xD;\n
已知的局限性——
\u0026#xD;\n
- 还有许多OData v4功能不支持——此次发布的重点是与早期版本同等的功能以及少数几项新功能\u0026#xD;\n
- OData核心库能够序列化OData v4 Atom格式,但由于Atom规范还没有进入CS2阶段,所以这不是官方支持。\u0026#xD;\n
在客户端方面,有一个新程序包,但只支持OData v4.0——如果客户端需要使用V1-3以及V4的服务,那么开发人员不得不在应用程序中同时使用新旧程序包。
\u0026#xD;\n
一个有些争议的决定是,在使WCF成为一个构建OData服务的技术栈方面减少投资。OData Services团队是这样说的——
\u0026#xD;\n
\u0026#xD;\n……对于作为创建OData服务技术栈的WCF Data Services,我们确实计划减少对它的投资。为了减轻由此造成的不便,我们正努力清理代码,以便使它与OData v4兼容,而之后,我们会将该技术栈开源。我们不计划在将V4的特有功能添加到WCF DS技术栈方面进行任何重大的投资。
\u0026#xD;\n
\u0026#xD;\n
不过,社区仍然希望WCF能支持OData 4.0。Adam说——
\u0026#xD;\n
\u0026#xD;\n由于我们的业务层是用WCF DS编写的,所以对于这个决定,我觉得我们被扔在了车轮下。我们已经花费了这么多精力来克服WCF DS的弱点(变更跟踪支持、性能、包含、客户端代理的可怜的T4支持、糟糕的EF6 alpha质量提供程序等),愉快地等待新的v4版本的发布,想不到事到如今你们竟然放弃了它。这时候切换到Web API,看来是我们为你们的每个决定买单。我们可是微软的黄金合作伙伴。
\u0026#xD;\n
\u0026#xD;\n
还有其他人要求在WCF中支持OData v4.0。我们只能等等看,微软是否会改变这项决定。
\u0026#xD;\n
读者可以从编写一个OData v4.0服务入手,并使用OData客户端代码生成器来生成客户端代理类。
\u0026#xD;\n
查看英文原文:ASP.NET Web API Gets OData v4.0 Support, WCF Will Not