微软最近发布了 WCF Data Services 5.2.0 ,支持 ODataLib Contrib 中的 UriParser,后者支持将 $filter 和 $orderby 表达式解析为一个绑定元数据的抽象语法树。该语法树通常用于级别更高的库,如 WCF Data Services 和 Web API。
要解析一个过滤表达式,需要使用 ParseFilter() 方法。该方法返回一个 FilterClause 对象,并包含以下四个参数:
public static FilterClause ParseFilter(string filter, IEdmModel model, IEdmType elementType, IEdmEntitySet entitySet)
FilterClause 的 Expression 属性包含表示该过滤表达式的抽象语法树的根节点。可以使用 Kind 属性和一个简单的 switch-case 程序来分析这些节点。
要解析一个排序(Orderby)表达式,必须使用与 ParseFilter() 方法十分类似的 ODataUriParser.ParseOrderBy 方法,微软的项目经理 Alex D James 在其博客文章中详细介绍了使用 ODataUriParser 解析 $filter 和 $orderby 的功能。
WCF Data Services 5.2.0 修复了为十分庞大的模型生成代码时会导致 Visual Studio 崩溃的 bug。此外,还解决了使用新 JSON 格式时 IgnoreMissingProperties 不能正确工作,以及客户端被设置为使用新 JSON 格式时不能读取 Atom 响应的问题。在服务模型暴露了枚举属性的情况下,新版本还能提供更好的错误消息。
“我们在改善 WCF Data Services 的整体稳定性和性能方面付出了一些努力,我们还将在后续几个发布版本中继续提供增强功能”,微软 SQL Connectivity 小组的 dpblogs 说。
WCF Data Services 5.2.0 可通过如下格式获取:
“WCF Data Services 包含很多新的特性,可能无法向后兼容 Visual Studio 2012 和 LightSwitch 。OData 5.0 存在一个拒绝服务的漏洞,最近新发布的 5.0 二进制版本解决了这个问题。”微软 Visual Studio 产品小组的 Matt Evans 说。
查看英文原文: WCF Data Services 5.2.0 with UriParser Support
感谢臧秀涛对本文的审校。
给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。
评论