Web API更原生地利用了http协议。Odata是许多大公司都拥护的开放标准。我只能根据自己的经验与Odata进行交流,最近才发现Web API并进行了一些研究。
OData很酷,因为它是实际标准。您可以轻松创建数据库并通过HTTP公开它。这意味着您可以在没有任何配置的情况下遍历表结构(我这么说就是这样)。您还可以通过包含少量LINQ的URL运行查询:
/products/orders/[put some linq-ish query here]
这可以说是好是坏。身份验证是标准的并已构建。
从我的角度来看,Web API更有趣。它利用了HTTP功能(错误消息等),对于真正的RESTful请求而言,它更“原生”。我确实没有玩太多。.但是我已经阅读了一下,并且有点“听说” MVC和Web API可能有一天会“结婚”,也许好,也许坏。
当我使用OData时,我创建了一个存储过程,将其映射到实体表面,配置了一个强返回类型,然后将其连接到URL请求和BANG,我的RESTful请求映射到了键入结果存储过程。这非常简单,而且我能够完全得到所需的东西。
结束语
我没有太多细节可以使用WCF API,但是我想说这是进行客户端开发的方法,因为它是一种更纯粹的REST方法。如果您要或多或少地进行“直接”来回调用并检索“视图模型”,它将提供更多的本机交互。
另一方面。如果您要基于客户端交互对数据进行复杂的查询,并且希望“构建”查询逻辑并将其作为参数传递,那么Odata可以工作。
我的观察方式是,如果我需要以结构化格式(即表/关系结构)公开数据,然后直接从客户端查询它,那么Odata会工作得最好。允许“其他”访问数据(使用正确的身份验证等)也很有用,这就是为什么它遵循OData协议的原因
如果您希望在RESTful请求中指定URL(/ products / orders / 22,并从“隐藏”的托管代码和数据结构中创建复杂的“结果集”,并且还可以从HTTP响应消息中受益,则可以Web API可能是最好的选择。
再次,这都是来自研究和玩弄。我还没有在生产/功能完善的应用场景中实现过。我认为他们都有长处和短处,而且肯定存在一些重叠