我正面临使用XtraReports工具和关于性能的Web服务的潜在问题。在Windows窗体应用程序中。
我知道XtraReport通过加载第一页然后继续在后台加载其余页面来加载大型数据集(我理解大数据集为+10,000行),但所有这些都是通过数据源完成的。手。那么如果这个数据源必须通过一个Web服务会发生什么呢?它需要序列化数据才能将数据发送到客户端呢?
方案如下:
我在Windows窗体中有一个瘦客户端调用Web服务,该服务接受该调用并通过反射实例化相应的类并调用所需的方法(请注意,这个架构是继承的,我几乎没有选择这个,我必须使用它)。所以我将有一个类从数据库中获取数据并通过Web服务接口将其发送到客户端。这个数据可以是DataSet,SqlDataReader(也注意到我们使用的是SQL Server 2000,但可能是2008年年底),DataTable,XML等。
如果结果数据集很大,序列化+转移时间可能相当大,然后呈现报告可能会增加一些时间,从而降低整体性能。
我知道有可能使用流媒体视频,但是通过网络服务传输数据,但我没有尝试使用它的主要信息。
您如何看待这个?如果您有任何问题或者我需要写更多信息以便更好地解决问题,请告诉我。
谢谢!
答案 0 :(得分:2)
有没有办法可以对数据进行分区,即返回一小部分数据?
如果没有绝对要求同时返回所有数据,那么在从数据库读取,序列化和通过Web服务传输时,将数据分成更小的部分将产生巨大的差异。
编辑:我已经删除了这个答案,因为你已经提到了分区。我现在正在取消它,也许它可以作为讨论的起点......
关于如何使用分页的观点:我认为你在“显示下一个100结果”的方法上走在正确的轨道上。我不知道XtraReport是如何工作的,以及它对数据源的要求是什么。我看到有3个问题:
答案 1 :(得分:2)
我会给你一个你可能不想听到的答案。
设定期望。
报告通常很慢,因为它们必须流失大量数据。没有一个好办法解决它。但除此之外,我会做以下事情:
答案 2 :(得分:1)
转移DataSet是个坏主意。 DataSet有很多无用的日期。使用简单对象。在服务器端使用ORM。 您也可以预先确定一些数据。可以在客户端缓存参考,然后将其与服务器数据结合使用。