web service下实现大数据量的传输_第1页
web service下实现大数据量的传输_第2页
免费预览已结束,剩余1页可下载查看

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 ,设置RemotingFormat = 再序列化,通过WebService 传输,客户端接收,再反序列化,确实效果大大的优于直接传送DataSet,不仅网络传输中如此,即下面分别WebService 里面的方法和客户端反序列化取 DataSet 的方法1. 服务器上面取数据,填充数据集,转换为二进制格式/Methodforusersdataquerywith/param/publicbyteBinaryUserSelect(refstringmandStringBuilder.Append(SELECT*FROMt_Users;); DataSet dsResult = new DataSe

2、t();上面都是取数据的,无需关心.二进制压缩数据集是下面一小段 MemoryStream ms = new MemoryStream(); IFormatter bf = new BinaryFormatter(); bf.Serialize(ms, dsResult);catch (Exception err=return2. 通过WebService把byte格式的数据发送到客户端,这里就是WebService自己的事情了3.客户端接收到 byte格式的数据,对其进行反序列化,得到数据集,进行客户端操作/GetuserdatawithBinary/publicDataSetstringe

3、rr=bytebUserData=svc.ByteArrayUserSelect(/publicDataSetstringerr=bytebUserData=svc.ByteArrayUserSelect(referr); if (err != )err = ;returnMemoryStreamms=newMemoryStream(bUserData); IFormatter bf = new BinaryFormatter();object obj = bf.Deserialize(ms); return同样一台机器,手工生成 12000 条数据,在本地使用 WebService 分、传输

4、并在客户端显示数据集和 byte格式的数据 传输的差别尚且如此,通过网络传输的时间优化自然会更明显.net1.1 下面微软提供DataSetSurrogate 开发地/default.aspx?scid=kb;en-us;829740 DataSetSurrogate 在.net址 web service 端(文件形式)publicvoidSurrogateReadTable(string/DataSet通过SurrogateClassBinaryDataSetmandType.Text,select * from /实例DataSetSurrogate,传取出的 DATASET 到构造函sd

5、s=new/实例化二进制StreamWriter swDat;/写到本地一个文件bf.Serialize(swDat.BaseStream, sds);/这里可以知道序列/写到本地一个文件bf.Serialize(swDat.BaseStream, sds);/这里可以知道序列化后的文件的privatevoidder,System.EventArgs/反序列化BinaryStream能通过SurrogateClass/从WEBSERVICEStreamReader swDat;object o=bf.Deserialize(swDat.BaseStream);DataSetsds = (Dat

6、aSetSurrogate) o; webservice端(Byte方式public byte SurrogateRead1()DataSet ds; sds=newDataSetSurrogate(ds); MemoryStream s= new MemoryStream(); BinaryFormatterbf=newBinaryFormatter();bytee=returnprivatevoidder,System.EventArgs/*bytee=returnprivatevoidder,System.EventArgs/*反序列化BinaryStream能通过SurrogateCl

7、ass/从WEBSERVICEbyte vBinaryFormatterbf=newBinaryFormatter(); object o=bf.Deserialize(br);sds = (DataSetSurrogate) o; 我个人觉得用 byte方式会安全些,毕竟不用在客户端产生文件,不用担心数据的安2.0 中对数据集序列化和反序列化的方法进行了一下简单的封装,使其可以得到重用的效果.见下面的类通过方法可以转换数据集为二进制,在服务器端使用,转换数据集格式。发送,客户端接收,得到二制格式数据,使用 方法,反序列化,得到数据集,进行客户端操作。通过这些简单的操作(序列化和反化,将数据压

8、缩),可以使数据集等体积庞大的对象传递中的时间大大减少,并且可以减少网络中断等问题对程序的影usingusing34567893456789usingusingusingnamespacepublicclassprivateDataFormatter()/SerializetheDataofdataSettobinary/param/ bytebinaryDataResult=MemoryStream memStream = new MemoryStream(); IFormatter brFormatter = new BinaryFormatter(); binaryDataResult = memStream.ToArray();return/RetrievedataSetfromdataofbinary/param/icpublicDataSetRetrieveDataSet(byteDataSetdataSetResult=M

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论