7

我是 OData 的新手,所以请多多包涵。

假设我将 IQueryable<> 与 OData 一起使用,并且服务器生成的记录数很大(例如 10000),是否可以在客户端上的实体不断到达时开始处理它们(在整个 HTTP 流之前收到)?

我想到的概念类似于将 LINQ 与 SqlDataReader ( details ) 一起使用,其中数据仅在 LINQ2SQL 提供程序枚举记录时从 SQL 中获取(通过连接到 SqlDataReader 的底层只进服务器端游标)。

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

这是一厢情愿吗?

4

1 回答 1

2

是否可以使用 WCF 数据服务流式传输内容?是的,它是。为此,您必须实现流提供程序,该提供程序允许二进制大对象 (BLOB) 数据的流式传输,例如照片、视频和文档 ( No Entities )

如果一个大的结果集是从 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

于 2012-11-29T15:57:01.057 回答