




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
通过web服务实现大容量数据传输查询Vs2005中的12000条记录,设定remoteingformat=serialization format.binary再串行化,通过web服务传输、客户端接收、再串行化,比直接传输DataSet的效果更大,不仅在网络传输中,在本机中性能改善也是显着的下面是分别将web服务内的方法和客户端对DataSet进行逆串行化而取得的方法1 .在服务器上获取数据,嵌入数据集,转换为二进制形式/methodforusersdataquerywithbinaryformatter/公共字节 二进制用户select (refstringerr )举止ClearCommand ();m _ command stringbuilder.append ( select * fromt _ users; );DataSet dsResult=new DataSet ();byte bArrayResult=null;try举止ds result=sqlhelper.execute dataset (m _ currentconnectstringg,CommandType.Text,m _ command stringbuilder.tostring ();/上面都取了数据,不必在意。 二进制压缩数据集是下一节ds result.remoteingformat=串行化格式. binary;存储器流ms=new存储器流();iformatterbf=newbinaryformatter ();BF .串行化(毫秒,dsResult )bArrayResult=ms.ToArray ();PS ();/以下catch (Exception ee )举止err=ee.ToString ();以下返回阵列结果;以下2 .通过web服务向客户端发送byte形式的数据。 这里是web服务本身的事,你不必介意3 .客户端接收byte格式的数据,对其进行反序列化以获取数据集,并进行客户端操作。/Get user data with Binary format/publicationdatasetgetbinaryuserdata ()举止string err=;byte busererdata=SVC.bytearrayyuserselect (referr )PS (PS!= )举止MessageBox.Show(err )err=;返回空值;以下/反序列化的过程内存流ms=新内存流(busererdata )iformatterbf=newbinaryformatter ();object obj=bf.Deserialize(ms )DataSet dsResult=(DataSet)obj;/PS ();返回ds结果;以下在同一台计算机上手动创建12000条数据,在本地使用web服务分别读取、传输数据集和byte格式的数据,并显示在客户端上。 前者的平均时间为2.3秒,后者的平均时间为1.7秒,差只是传输过程的格式,还有后者所需的序列化和反序列化的时间。 本地web服务传输的差异仍然如此,在网络上传输的时间的优化自然会变得明显. net1.1微软提供的DataSetSurrogate开发工具包的下载地址:3358 support.M/default.aspx? scid=kb; en-us; 829740 DataSetSurrogate随. net 2.0一起提供在. net1.1中的实现示例如下所示在此,也可以将串行化的数据以文件形式保存到客户端硬盘上的方式和以Byte返回到客户端。 以下是代码。web服务端(文件格式) web method (描述=循环获取远程数据 ) publicvoidsurrogatereadtable (字符串表名称)举止使用surrogate类将DataSet序列化为二进制流DataSet dsds=sqlhelper.execute dataset (CNN,CommandType.Text, select * from TableName );实例化DataSetSurrogate,并将检索到的DATASET传递给构造函数sds=new DataSetSurrogate(ds )/二进制流的实例化binaryformatterbf=newbinaryformatter ();流媒体软件dat;/写在当地文件上SW dat=new streamwriter ( c :output _ surrogate _ dataset.dat );BF .串行化(SW dat.base stream,sds )/知道序列化的文件的大小长尺寸=SW dat.base stream.length;swDat.Close ();以下客户端privatevoidtobutton1_ click (对象发送器,System.EventArgs e )举止label1. text=datetime.now.tostring ();button1.启用=假;/逆序列化二进制流可以通过surrogate类转换为DataSet从web服务读取方法SVS.surrogate read ( t _ bus docbase );binaryformatterbf=newbinaryformatter ();流式读取器SW dat;SW dat=new streamreader ( c :output _ surrogate _ dataset.dat );objecto=BF.deserialize (SW dat.base stream )DataSet dssds=(DataSetSurrogate) o;ds=sds.ConvertToDataSet ();datagrid1. data source=ds.tables 0;swDat.Close ();以下web服务端(Byte方式) web method (描述=获取业务数据的远程数据集 )公共字节 surrogate read1()举止DataSet dsds=sqlhelper.execute dataset (CNN,CommandType.Text, select * from t_busdocbase );sds=new DataSetSurrogate(ds )存储器流s=new存储器流();binaryformatterbf=newbinaryformatter ();串行化(s、sds )byte e=s.ToArray ();返回e;以下客户端privatevoidtobutton3_ click (对象发送器,System.EventArgs e )举止label1. text=datetime.now.tostring ();button3.启用=假;/*逆序列化二进制流通过surrogate类进行DataSet*/从web服务读取方法byte bb=svs.SurrogateRead1();内存流br=新内存流(bb )binaryformatterbf=newbinaryformatter ();object o=bf.Deserialize(br )sds=(DataSetSurrogate) o;ds=sds.ConvertToDataSet ();datagrid1. data source=ds.tables 0;br.Close ();以下我个人觉得byte的方式很安全,但最终不需要客户端做文件,也不需要担心数据的安全。2.0简单地封装了数据集的串行化和反串行化的方法,获得了再利用的效果使用GetBinaryFormatData方法,可以将数据集转换为二进制文件,在服务器端使用,并转换数据集格式。 发送,客户端接收,获取二进制格式的数据,使用retrieveset方法反转序列化,获取数据集,进行客户端操作。 通过这些简单操作(序列化和解序列化、压缩数据),可以显着减少大量对象(例如数据集)在远程分发期间的时间,并且减少诸如网络中断之类的问题对程序的影响。1using System;2using System.IO;3using System.Data;4 using system.runtime.serialization;5 using system.runtime.serialization.formatters.binary;67namespace Common8 %9公共类数据格式化器十岁11私有数据格式() 十二/13/seralizethedataofdatasettobinaryformat十四/十五/十六/17 staticpublicbyte getbbinaryformatdata (datasetdsoriginal )1819 byte binaryDataResult=null;20 memorystreammemtream=new memory stream ();21 iformatterbrformatter=newbinaryformatter ();22ds original.remoteingformat=串行化格式. binary;2324br formatter .串行化(mem tream,dsOriginal )25 binarydataresult=mem tream.to array ();26 memStream.Close ();27 memStream.Dispose ();28返回二进制数据sult;29 )30 /31/retrievedatasetfromdataofbinaryformat32 /33 /34 /35 staticpublicdatasetretrievedatataset (byte 二进制数据)3637 DataSet dataSetResult=null38内存流mmemtream=new内存流(二进制数据)39 iformatterbrformatter=newbinaryformatter ();4041 objectobj=br formatter.deserialize (mstream )42 da
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 三只小猪造房子教学课件
- 小儿麻疹的护理
- 小儿金翘颗粒课件
- 大班美术课教案及教学反思《我们心中的美丽家园》
- 大学生简历中的自我评价
- 难点解析-陕西省华阴市7年级上册期末测试卷专项训练试卷(含答案详解)
- 小儿肺结核教学课件
- 小儿科肺结核临床课件
- 小儿溶血病课件
- 小儿晕厥鉴别诊断课件
- 妇女维权法律知识讲座
- 2025年内蒙古自治区中考语文真题含答案
- 2025版危险货物道路运输综合预案(电石)
- 2025年中医确有专长考试试题及答案
- DB32∕T 4553-2023 医疗机构医疗器械不良事件监测工作指南
- 2025年机关事业单位技能资格考试-政工历年参考题库含答案解析(5套共100道单选合辑)
- GB/T 3880.3-2006一般工业用铝及铝合金板、带材第3部分:尺寸偏差
- 肺功能解读教学课件
- 妇产科学-第十二章-正常分娩课件
- 腓肠神经皮瓣课件
- 1【L】系列离心式冷水机组技术手册
评论
0/150
提交评论