您的位置:首页 > 大数据

WEB Service 下实现大数据量的传输

2008-05-09 16:12 281 查看
Vs2005里面的,查询12000条记录,设置RemotingFormat = SerializationFormat.Binary;

再序列化,通过WebService传输,客户端接收,再反序列化,确实效果大大的优于直接传送DataSet,不仅网络传输中如此,即使本机,性能改善也非常明显.

下面分别是WebService里面的方法和客户端反序列化取DataSet的方法.

1. 服务器上面取数据,填充数据集,转换为二进制格式.

public byte[] BinaryUserSelect(ref string err)

public DataSet GetBinaryUserData()

在这里,有两种方式:可把序列化后的数据用文件形式保存在客户端硬盘;也可用Byte[]方式传回客户端,以下是代码。

web service 端(文件形式)

[WebMethod(Description="循环获取远程DATASET")]

public void SurrogateReadTable(string TableName)

客户端

private void button1_Click(object sender, System.EventArgs e)

web service 端(Byte[]方式)

[WebMethod(Description="获取业务资料远程DATASET")]

public byte[] SurrogateRead1()

客户端

private void button3_Click(object sender, System.EventArgs e)

我个人觉得用byte[]方式会安全些,毕竟不用在客户端产生文件,不用担心数据的安全。

在2.0 中对数据集序列化和反序列化的方法进行了一下简单的封装,使其可以得到重用的效果.见下面的类DatFormatter.

通过GetBinaryFormatData方法可以转换数据集为二进制,在服务器端使用,转换数据集格式。发送,客户端接收,得到二进制格式数据,使用RetrieveDataSet方法,反序列化,得到数据集,进行客户端操作。通过这些简单的操作(序列化和反序列化,将数据压缩),可以使数据集等体积庞大的对象在远程传递中的时间大大减少,并且可以减少网络中断等问题对程序的影响。

1using System;

2using System.IO;

3using System.Data;

4using System.Runtime.Serialization;

5using System.Runtime.Serialization.Formatters.Binary;

6

7namespace Common

8
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: