是否有用于 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 类包装器的主要内容,如果未能解决你的问题,请参考以下文章