我们正在为客户构建一个具有以下要求的查询服务:
对于(1)和(2),我们已经看到 OData 具有强大的语法支持它们和(OData + WebAPI)可能是一个很好/灵活的解决方案,但我们有一些顾虑:
我们还考虑构建一个自定义JSON对象,与 ODataQueryOption 非常相似,并在每个要求中使用Web.API操作,以防OData无法完全处理具有良好性能的这些要求。但这将是我们的最后选择。
那么你选择实施上述3个是什么?感谢。
答案 0 :(得分:0)
我会首先调查OData batch processing以确定它是否足够。这样你就不需要为你的第二个要求重新实现任何低级别(这将是你的第一个解决方案)。
查询性能通常与后端一样好,此时解析URI不应该是一个考虑因素。如果您正在使用实体框架,那么请查看Linq查询的外观,以及它们如何转换为真实的后端。
指定错误报告here。请注意,您将能够return multiple errors in the same response in OData 4.0。您有多种方法可以使用ASP.NET Web API + OData扩展创建此类响应。查看ODataErrors和CreateODataErrorResponse。
我认为你的第一个要求是完全涵盖的。
最终,你将不得不放弃你的直觉,或者,如果你有足够的时间分配到技术评估,玩一些原型并运行一些实际的数字。