OData是在客户端上获取数据还是提供XML语法来表达Linq查询?

时间:2013-11-26 17:33:23

标签: odata

我刚从这里读到OData。

http://msopentech.com/odataorg/introduction/

抱歉,我有点不耐烦了。

在我浏览剩下的材料之前,我现在只有一个简单的问题。这两个选项中哪一个描述了OData?

据我所知,它提供了一个协议(很像SOAP或XML / Json over HTTP或XML-RPC),用于通过Web将服务数据传输到客户端。我所感兴趣的是它还有助于查询数据,这是一个很难解决的问题,因为它有助于减少在使用XML / SOAP Web服务或其他方法查询大型数据集时经常遇到的有效负载(XML over Http,Json通过Http,RPC响应,你可以命名它。)

选项A oData是否将所有数据传输到客户端,使用一些基于客户端的存储(如桌面浏览器的HTML 5本地存储)来存储它,然后使用进程内API查询客户端上的数据?

选项B 它是否为翻译Linq提供了基于XML的语法表达式,并且只从服务器获取相关的结果集(已过滤,有序,无论如何)?

有趣的是,当你输入自己的想法时,你最终会解决自己的问题。我想只需输入问题就可以得到答案。由于很多原因,选项A 听起来很荒谬:

1)如果它是一个以数据为中心的协议,它不必关心什么类型的客户端或消费者会想要数据,因此它不能与客户端或客户端的功能(客户端缓存)有任何关联

2)它是一种以数据为中心的协议,因此没有规定如何在客户端或服务器端读取数据或提供任何工具。它只是规定了一种数据格式,我想是。

必须是选项B 。不过,我只想要确认或更正。

1 个答案:

答案 0 :(得分:1)

是的,它是选项B.

显然,您可能会写一个糟糕的客户端实现,它会下载所有数据,然后根据客户端逻辑过滤和显示数据。但那会很愚蠢。

在OData.org的“URL Conventions”页面中详细说明了“编写”查询的方式,通常类似于:http://someserver/odata.svc/Customers(Location eq 'New York')