3

我最近玩过 ASP.NET WebAPI,包括一些显示结果的 Html-Pages,在浏览器/提琴手等中尝试 OData 查询,我真的印象深刻,到目前为止一切都很好。

但是......现在我正在尝试构建一个可重用的 .Net 客户端库,它可以轻松访问 WebAPI 公开的所有方法。我已经尝试通过 Linq2Rest(很棒的 IQueryable-Interface!)并使用 HttpClient 自己实现 Wrappers 来做到这一点。

我对 Linq2Rest 的问题:

  • 它不是来自微软,我担心微软会做出很多改变,这在某些时候不会反映在 Linq2Rest 中。
  • 此外,我真的不知道如何使用 Linq2Rest 调用 Put/Delete/Post,每个“Linq2Rest-Context”中都有一个 HttpClient 看起来非常难看

尝试使用 HttpClient 自己实现客户端时,我不知道如何

  • 对 IQueryable-WebAPI-Get 发出调用,而不首先将每条记录加载到客户端(在我的场景中,大约 20000 条记录很常见)
  • 避免为每个“APIController”-Client 编写非常相似的代码,最终我将拥有大约 15-20 个控制器,非常相似但返回不同的“对象”

感谢每一个建议...

4

2 回答 2

4

我是 Linq2Rest 的开发人员,您的观点非常有效。创建 Linq2Rest 是为了在 WebAPI 之外添加 OData 支持。如果您已经在使用 WebAPI,那么一定要坚持使用 Microsoft。

它不是来自微软,但 OData 是一个开放标准,Linq2Rest 是根据标准文档实现的。开源意味着 Linq2Rest 能够比微软更频繁地发布。出于这个原因,它已经支持来自 OData 3 规范的 Any/All 查询,微软目前不支持。

将客户端注入每个上下文是为了减少对它支持的服务的限制。现在由您来定义端点。我正在考虑如何从单个上下文中支持多个端点。

目前它不支持 PUT/POST/DELETE,但是如果您将其作为功能请求发布在项目中(https://bitbucket.org/jjrdk/linq2rest/issues?status=new&status=open),那么它肯定会添加到管道中。

编辑:最新的预发布增加了对 PUT/POST/DELETE 操作的支持。该 API 目前正在测试中。如果您从 2.5.0.0 下载版本,那么您会找到对它的支持。

于 2012-07-31T13:34:27.857 回答
0

如果您正在寻找 Odata Library 。然后试试这个来自 Micrsoft 的

http://blogs.msdn.com/b/astoriateam/archive/2011/10/14/introducing-the-odata-library.aspx

于 2012-07-24T15:11:58.210 回答