0

我需要使用网络服务发送大数据。数据大小在 300 MB 到 700 MB 之间。Web 服务从 SQL 数据库生成数据并发送到客户端。它是 DataSet 的形式,大约有 20 到 25 个表。我尝试了来自 artical 的解决方案,“如何:启用 Web 服务以发送和接收大量数据”和 Microsoft WSE 3.0 的示例,但大多数情况下它给了我“System.OutOfMemoryException”。

我认为问题是 WebService 在服务器上的内存中缓冲数据并且它超过了限制。

我认为有两个替代方案,(1)一个接一个发送 DataTable,但有时一个 DataTable 可以有大约 100MB 到 150MB 的数据(2)在服务器上写入文件并使用 HttpWebRequest 传输(可以使用 FTP,但目前无法访问 FTP 服务器)

任何人都可以建议使用 webservice 解决这个问题吗?

谢谢,

4

1 回答 1

0

数据集将加载内存中的所有数据。它不适合传输大量数据。DataSet 在被序列化时会携带很多额外的信息。

如果您知道需要传输的表的结构,则创建一组Serializable对象并发送一组对象将有助于显着减少数据负载。

如果您必须使用,DataSet请查看启用 BinaryRemoting。

BinaryFormatter bf = new BinaryFormatter();
myDataSet.RemotingFormat = SerializationFormat.Binary;
bf.Serialize(s, ResultDataSet);

通过这种方式减少数据负载后,最好将文件写入 http 服务器上可公开访问的位置。通过 http 托管它允许客户端比 ftp 更容易地下载文件。您可以通过授予用户适当的权限来控制对这些 http 文件夹的访问。

于 2012-10-29T10:54:19.993 回答