【发布时间】:2013-10-11 05:30:44
【问题描述】:
我们正在为具有以下要求的客户构建查询服务:
- 支持 Where、Begin、Contains、And、Or、Paging、Select。 (1-主)
- 从一个值查找/映射多个值到另一个值。客户端将传递数百个值,并将返回相同数量的值。 (2)
- 为无效请求返回一些明确的错误代码(缺少参数、指定的未知字段、指定的未知条件等)(3)
对于 (1) 和 (2),我们已经看到 OData 具有支持它们的强大语法和 (OData + WebAPI) 可能是一个很好/灵活的解决方案,但我们有一些担忧:
- 客户端希望通过 POST 而不是 GET 传递查询,因为来自 (2) 的过滤器大小很大。我们看到了一些options,因此我们考虑了以下两种 OData 解决方案:($batch-supported OData endpoint、POST OData URI 和手动解析成ODataQueryOption)
- OData 端点 查询性能存在一些问题。它足够好还是我们可以只使用 POST OData URI 并使用自定义存储过程以获得最佳性能?
- 对于 (3),我们似乎还没有找到调用 OData 端点返回正确错误代码的方法。
我们还考虑构建一个自定义 JSON 对象,与 ODataQueryOption 几乎相同,并针对每个要求使用 Web.API 操作,以防 OData 无法以良好的性能完全处理这些要求。但这将是我们最后的选择。
那么您选择实现上述 3 项的选择是什么?谢谢。
【问题讨论】:
标签: c# asp.net-mvc asp.net-mvc-4 asp.net-web-api odata