您的位置:首页 > 大数据

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

2005-12-06 12:33 330 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: