C# Asp.NETMVC4WebAPI-我们是否需要OData来构建快速查询服务
我们正在为具有以下要求的客户构建查询服务:C# Asp.NETMVC4WebAPI-我们是否需要OData来构建快速查询服务,c#,asp.net-mvc,asp.net-mvc-4,asp.net-web-api,odata,C#,Asp.net Mvc,Asp.net Mvc 4,Asp.net Web Api,Odata,我们正在为具有以下要求的客户构建查询服务: 支持Where、Begin、Contains和/或Paging、Select。(1-main) 查找/映射从一个值到另一个值的多个值。客户端将传递数百个值,并返回相同数量的值。(二) 为无效请求返回一些明确的错误代码(缺少参数、指定的未知字段、指定的未知位置条件等)(3) 对于(1)和(2),我们已经看到OData具有强大的语法来支持它们,(OData+WebAPI)可能是一个好的/灵活的解决方案,但我们有一些顾虑: 客户端希望通过POST而不是
- 支持Where、Begin、Contains和/或Paging、Select。(1-main)
- 查找/映射从一个值到另一个值的多个值。客户端将传递数百个值,并返回相同数量的值。(二)
- 为无效请求返回一些明确的错误代码(缺少参数、指定的未知字段、指定的未知位置条件等)(3)
- 客户端希望通过POST而不是GET传递查询,因为(2)中的筛选器太大。我们看到了一些,所以我们考虑这两种OData解决方案:($batch-supported OData-endpoint,POST-OData-URI,并手动将其解析为)
- 对于OData端点查询性能存在一些担忧。这是否足够好,或者我们可以使用POST-odatauri并使用定制存储过程来获得最佳性能
- 对于(3),我们似乎还没有找到调用OData enpoints以返回正确错误代码的方法
那么,您如何选择实施上述3项?谢谢。我会先调查一下,看看是否足够。这样,您就不需要为您的第二个需求(这将是您的第一个解决方案)重新实现任何低级的东西 查询性能通常与后端一样好,此时不应考虑解析URI。如果您使用的是实体框架,那么请查看Linq查询的外观,并最终了解它们如何转换到真正的后端 指定了错误报告。请注意,您将能够。使用ASP.NET Web API+OData扩展,您可以使用多种方法创建此类响应。看和看 我想你的第一个要求已经完全满足了
最终,你将不得不凭直觉行事,或者,如果你有足够的时间进行技术评估,可以玩一些原型并运行一些实际数字。谢谢。我们将研究OData+WebAPI中的错误。关于性能,我认为我们将尝试一些基于纯Linq SP的定制SP,并将其放在EntitySetController/Get endpoint中。顺便说一句,我们成功地实现了它,它可以很好地处理很长的查询。