是否可以通过OData流式传输实体?

时间:2012-11-19 09:22:52

标签: .net odata iqueryable

我是OData的新手,所以请耐心等待。

假设我正在使用IQueryable<>使用OData,并且服务器生成的记录数量很大(比如10000),是否可以在客户端继续到达时(在收到整个HTTP流之前)开始处理客户端上的实体?

我想到的概念类似于使用带有SqlDataReader(details)的LINQ,其中数据是从SQL(通过连接到SqlDataReader的基础仅向前服务器端游标)获取的,只有记录是由LINQ2SQL提供程序枚举。

HTTP确实允许流式传输。可以OData IQueryable<>利用这种支持?如果可以实现端到端流,则将在服务器上枚举数据并且一次一个记录地流(到序列化)到HTTP流中。当流被客户端接收并反序列化时,可以枚举实体并一次一个地到达。

这是一厢情愿的想法吗?

1 个答案:

答案 0 :(得分:2)

是否可以使用WCF数据服务传输内容? 是的,。要做到这一点,你必须implement the streaming provider允许流式传输二进制大对象(BLOB)数据,如照片,视频和文档(无实体

如果从IIS流式传输大结果集,则它是feed / xml / json,并且在响应完成之前无效。但是,您可以使用$ skip和$ top参数执行多个并行请求,以便将结果集拆分为几个较小的请求,并在它们到达时加入它们。

<强>更新: 另一种选择可以创建自己的基础架构,以便通过wcf ds进行流式传输,因为这个人http://blogs.msdn.com/b/tom_laird-mcconnell/archive/2010/01/18/using-ado-net-wcf-data-services-for-streaming-infinite-event-result-sets.aspx