是否有用于 OData 协议 Uri 的 .NET 类包装器

Posted

技术标签:

【中文标题】是否有用于 OData 协议 Uri 的 .NET 类包装器【英文标题】:Is there a .NET class wrapper for the OData protocol Uri 【发布时间】:2011-04-07 00:29:14 【问题描述】:

有谁知道是否有可以可靠解析OData protocol Uri 的开源.NET 包装器?

我不是在寻找指向 WCF 数据服务的指针...我正在创建一个基于 WCF 的数据查询服务(由于复杂的原因)它不能成为真正的 Atom/OData 服务,但我真的很喜欢用于标识数据源和查询参数的 OData Uri。另外,我们可能会在未来某个时间公开 OData 端点。

我已经(粗略地)查看了 WCF 数据服务 API,似乎没有一个整齐包装的 ODataUri 类公开服务主机、资源路径和查询参数。我可以写一个,但在我写之前我宁愿看看是否有人已经完成了。

【问题讨论】:

当然,请先阅读这篇博文:tirania.org/blog/archive/2010/Mar-22.html 所以,除非我遗漏了什么,否则本文将讨论 MS 需要开源数据服务服务器代码(我需要的东西!)。我同意这种观点,但这对我没有帮助,因为 MS 没有对服务器代码进行操作系统处理,所以我无法使用他们的 uri 解析器(我想我可以尝试反射器,但这可能很多麻烦)。 它是:odata.codeplex.com 谢谢。我来看看客户端代码。我的印象是 uri parser 将成为服务器端组件,而不是客户端组件,但我可能错了。 我也会对此感兴趣,您是否设法找到/创建了一个包装器?你能分享你的发现吗? 【参考方案1】:

我知道您说过您查看了 API,但您查看过实际代码吗? .Net 客户端库已开源,http://odata.codeplex.com/,因此如果您在其中找不到,可以使用他们的代码作为起点(并希望将其回馈给社区)。

基本上,您需要的是一个 LINQ to OData Uri 提供程序。如果我没记错的话,Astoria 的昵称之一是 LINQ to REST。您需要做的是在客户端,将 LINQ 表达式树转换为 OData URI 格式,然后在服务器上,将 URI 转换回 LINQ 表达式树。创建自定义 LINQ 提供程序并不是最简单的事情,但 Matt Warren 有一个关于构建 IQueryable 提供程序的精彩(长)系列http://blogs.msdn.com/b/mattwar/archive/2008/11/18/linq-links.aspx

【讨论】:

这正是我想要做的事情。我会看看这个。

以上是关于是否有用于 OData 协议 Uri 的 .NET 类包装器的主要内容,如果未能解决你的问题,请参考以下文章

AZURE 表存储、ODATA 和更友好的 URI 查询

将OData Uri转换为他的等效Linq表达式

oData(开放数据协议)可以不应用,但不能不了解

将 OData Uri 转换为等效的 Linq 表达式

OData 错误:URI 中指定的查询无效。该属性不能在查询选项中使用

OData URI 到 JSON mongoDB 查询