




已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025河南新乡学院诚聘高层次人才100人模拟试卷及答案详解1套
- 2025湖南邵阳市新宁县政府发展研究中心、新宁县金融服务中心公开选调工作人员3人模拟试卷附答案详解(黄金题型)
- 2025江苏省人民医院宿迁医院(宿迁市第一人民医院)高层次人才引进48人模拟试卷附答案详解(考试直接用)
- 2025福建生态工程职业技术学校招聘4人考前自测高频考点模拟试题有答案详解
- 2025江苏南京铁道职业技术学院招聘25人考前自测高频考点模拟试题参考答案详解
- 智能电力系统远程监控方案
- 2025湖北恩施硒茶集团招聘财务人员拟聘对象模拟试卷完整答案详解
- 2025年德州天衢新区面向山东省省属公费师范生公开招聘教师(12人)模拟试卷及参考答案详解
- 人民币配套资金借贷合同5篇
- 可追溯性食品供应链优化-洞察及研究
- DL-T-1878-2018燃煤电厂储煤场盘点导则
- 【顺丰控股财务报表探析探究14000字(论文)】
- 【农村电商发展探究文献综述与理论基础4500字】
- 地震逃生知识培训
- 《济南市城镇燃气领域重大隐患判定指导手册》
- 人工智能助力企业创新发展
- 资料员之资料员基础知识题库及完整答案(各地真题)
- 卢卡奇的《历史与阶级意识》
- JJG693-2011燃气泄漏检测仪器检定规程
- 三峡大学科技学院实习报告及实习成绩考核鉴定表模板
- 电缆电线技术标书
评论
0/150
提交评论