纯Web API还是Web API和OData?

25

我正在启动一个项目,必须公开一个RESTful服务,将被多个操作系统的各种客户端使用。

我正在研究Web API使用Web API的OData,很难决定使用哪个,是普通的Web API还是OData。

有哪些值得注意的优缺点?

更新
你们能否好心解释一下为什么这个问题“主要基于个人意见”?在这里哪里看到了任何个人意见?


2
如果有选项,我会取消关闭投票,但如果达到那个点,我们总是可以重新投票以重新开放。我也想在这里阅读详细的利弊分析。您提供的链接并没有提供太多关于您问题的见解。我会在有时间的时候帮助深入研究这个问题。 - von v.
@vonv。谢谢!我找到了一篇很好的文章,阐明了这个问题,请查看我的答案。无论如何,与问题无关,你是否熟悉OData?我想知道1)OData是否提供可以与DataAnnotations一起使用的验证功能?2)是否有客户端生成器或用于Web应用程序、WUA等的脚手架?类似于RIA Services R.I.P。 - Shimmy Weitzhandler
1
我其实不知道@Shimmy,这也是我收藏这篇帖子的原因。我也在这里学习新东西。 - von v.
我认为(真正的REST)WebAPI是“领域”模型的曝光者(过度简化的类比:数据库表、列与CRUD)。OData在此之上提供了查询机制(过度简化的类比:T-SQL)。使用OData标准允许从“API用户”进行细粒度选择和检索(包括引用),而对于WebAPI,则必须“创建函数”来执行“特定”的选择/查询。我不知道,但怀疑Asp.Net MVC控件属性是否受到OData支持。 - Marvin Smit
@MarvinSmit 说得好,那可能是个问题。如果 Razor 不支持 OData,我会坚持使用普通的 WebAPI,你确定它不支持吗? - Shimmy Weitzhandler
显示剩余2条评论
1个回答

4
我发现Julie Lerman的这篇this博客很棒,解释了Web API和OData,OData就像是带有一组WCF类似功能的Web API。
其中一个特性是轻松创建通用CRUD控制器的原型。
该文章更加详细和清晰。

1
我发现OData似乎非常适合仅用于读取数据(CRUD中的R)。因为除了授权之外,通常可以在查询中处理所有内容,如果需要更复杂的内容,则仍可以通过WebAPI公开OData(从而在服务器上构建复杂模型)。至于编写/删除/更新,我不确定。因为无论哪种方式,这些“事件”可能都不是很直观。因此,我实际上并不认为OData在这个部分有用。 - Worthy7
1
@Worthy7 从技术上讲,你是正确的。无论如何,当你想要给客户端在获取、精炼、过滤、缓存和排序数据方面自由时,OData是特别有用的。 - Shimmy Weitzhandler
我实际上进行了一些研究,发现它可能比我想象的更加简单。使用 OData Actions/Function,你可以运行保存在服务器端的函数。在这里的“调用绑定操作”部分:http://www.odata.org/getting-started/basic-tutorial/#operation - Worthy7
9
我觉得微软会开发这些复杂的技术,但不愿意明确指出应该在什么情况下使用它们,这让我感到很奇怪! - NoChance

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接