我们有一个用于查询基础数据存储(现在是 SQL Server 2005)的 WCF 服务。该服务可能返回相当大量的数据;我们实体类的实例数超过 60000,每个实例包含约 20 个属性。这些属性大多是原始类型,例如字符串、整数、日期时间等,其中有一些指向其他实体,而这些实体可能又指向其他实体,但层次结构不是很深。
使用该服务的一个应用程序通常会进行一些查询,只返回合理数量的实体(从几个实例到几千个实例)。但偶尔会进行一些查询,如上所述,返回大量数据(并且需要处理这些数据,因此缩小查询条件不是选项)。
我们想要做的是引入某种“分页”功能,客户端可以调用服务并获取一定数量的实例,然后再次调用并获取下一块数据,依此类推,直到获取完整结果。由于没有与 WCF 工作过多,我不太确定实现这一点的最佳方法。
也许需要记住的一件事是,在获取这些块的同时,基础数据可能会发生变化。我不太确定这对我们是否有问题(需要稍加调查),但它可能存在问题,因此,任何关于处理该特定情况的建议也是欢迎的。
我们已经开始研究流式响应,但也想看到分页示例,因为我们可能希望在接收完整结果之前开始处理数据。
简而言之,问题是:是否有最佳实践适用于这种情况(或者任何绝对的禁忌需要我们注意)?
使用该服务的一个应用程序通常会进行一些查询,只返回合理数量的实体(从几个实例到几千个实例)。但偶尔会进行一些查询,如上所述,返回大量数据(并且需要处理这些数据,因此缩小查询条件不是选项)。
我们想要做的是引入某种“分页”功能,客户端可以调用服务并获取一定数量的实例,然后再次调用并获取下一块数据,依此类推,直到获取完整结果。由于没有与 WCF 工作过多,我不太确定实现这一点的最佳方法。
也许需要记住的一件事是,在获取这些块的同时,基础数据可能会发生变化。我不太确定这对我们是否有问题(需要稍加调查),但它可能存在问题,因此,任何关于处理该特定情况的建议也是欢迎的。
我们已经开始研究流式响应,但也想看到分页示例,因为我们可能希望在接收完整结果之前开始处理数据。
简而言之,问题是:是否有最佳实践适用于这种情况(或者任何绝对的禁忌需要我们注意)?