我已经继承了一个与Web服务对话的C#.NET应用程序,并且该Web服务与Oracle数据库对话。我需要向UI添加导出功能,以生成一些数据的Excel电子表格。通过ASMX Web服务传输大型数据集的最佳方式是什么?
我已经创建了一个Web服务函数来运行数据库查询,将数据加载到DataTable中,然后将其返回,这对于少量行可以正常工作。但是,完整运行中有足够的数据会导致客户端应用程序锁定几分钟,然后返回超时错误。显然,这不是检索这样一个大型数据集的最好方法。
在我继续前进之前,想出了一些拆分调用的方法,我想知道是否已经有一些东西可以处理这个问题。此刻,我正在考虑一个startExport函数,然后重复调用next50Rows函数,直到没有数据剩下,但是因为Web服务是无状态的,这意味着我将不得不保留某种ID号码并处理关联的权限。这意味着我不必将整个数据集加载到Web服务器的内存中,这是一件好事。
所以,如果有人知道更好的方法来检索大量的数据(表格格式)通过一个ASMX网络服务,请让我知道!
多少数据?你确定它是数据量,不可能是查询或其他造成这种情况的东西? – cdonner 2010-06-16 01:33:06
它可能是查询,它只有几千行数据。它只能在100Mbps网络上以大约100k /秒的速度回来。但我想象的问题仍然是一样的 - 数据需要很长时间才能到达,客户端应用程序没有得到任何反馈来知道发生了什么,所以它最终超时。 – Malvineous 2010-06-16 02:54:55