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

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

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

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

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

这是一厢情愿的想法吗?

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

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

更新:
另一种选择可以通过创建自己的infraestructure来流式传输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

转载注明原文:.net – 是否可以通过OData流式传输实体? - 代码日志