OData和 REST-ful Web 服务有什么区别?
更新 警告,现在 OData V4 可用,这个答案已经过时了。
不久前我在这里写了一篇关于这个主题的帖子。
正如 Franci 所说,OData 基于 Atom Pub。然而,他们在上面分层了一些功能,不幸的是在这个过程中忽略了一些 REST 约束。
OData 服务的查询功能要求您根据响应中不可用或链接到的信息构建 URI。这就是 REST 人员所说的带外信息,并在客户端和服务器之间引入了隐藏的耦合。
引入的另一个耦合是通过使用 EDMX 元数据来定义条目内容中包含的属性。可以在称为 $metadata 的固定端点发现此元数据。同样,客户端需要提前知道这一点,它无法被发现。
不幸的是,Microsoft 认为不适合创建媒体类型来描述这些关键数据,因此任何 OData 客户端都必须对它正在与之交谈的服务和它正在接收的数据做出一堆假设。