【发布时间】:2011-03-04 06:30:14
【问题描述】:
我继承了一个与 Web 服务对话的 C# .NET 应用程序,而该 Web 服务与 Oracle 数据库对话。我需要在 UI 中添加一个导出功能,以生成一些数据的 Excel 电子表格。
我创建了一个 Web 服务函数来运行数据库查询,将数据加载到 DataTable 中,然后返回它,这对于少量行工作正常。但是,在完整运行中有足够的数据,客户端应用程序会锁定几分钟,然后返回超时错误。显然这不是检索如此大的数据集的最佳方式。
在我继续提出一些不可靠的方法来拆分呼叫之前,我想知道是否已经有一些东西可以处理这个问题。目前我正在考虑 startExport 函数,然后重复调用 next50Rows 函数,直到没有数据为止,但是由于 Web 服务是无状态的,这意味着我将不得不保留某种 ID 号并处理关联的权限。这意味着我不必将整个数据集加载到 Web 服务器的内存中,这是一件好事。
因此,如果有人知道通过 N ASMX Web 服务检索大量数据(表格格式)的更好方法,请告诉我!
【问题讨论】:
-
多少数据?你确定这是数据量,不可能是查询或其他原因造成的吗?
-
可能是查询,只有几千行数据。它在 100Mbps 网络上仅以大约 100k/秒的速度返回。但我想问题还是一样 - 数据需要很长时间才能到达,客户端应用程序没有得到任何反馈来知道发生了什么,所以它最终会超时。
标签: .net web-services asmx large-data-volumes