扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:中国IT实验室 来源:中国IT实验室 2007年10月2日
关键字:
在本页阅读全文(共2页)
同样一台机器,手工生成12000条数据,在本地使用WebService分别读取、传输并在客户端显示数据集和byte[]格式的数据,前者平均时间2.3秒,后者平均时间为1.7秒,之间的差别仅在传输过程的格式,还有后者需要的序列化和反序列化的时间.本地WebService传输的差别尚且如此,通过网络传输的时间优化自然会更明显..
.net1.1下面微软提供的DataSetSurrogate开发包下载地址:http://support.microsoft.com/default.aspx?scid=kb;en-us;829740
对数据集序列化和反序列化的方法进行了一下简单的封装,使其可以得到重用的效果.见下面的类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{ 9 public class DataFormatter 10 { 11 private DataFormatter() { } 12 /**//// <summary> 13 /// Serialize the Data of dataSet to binary format 14 /// </summary> 15 /// <param name="dsOriginal"></param> 16 /// <returns></returns> 17 static public byte[] GetBinaryFormatData(DataSet dsOriginal) 18 { 19 byte[] binaryDataResult = null; 20 MemoryStream memStream = new MemoryStream(); 21 IFormatter brFormatter = new BinaryFormatter(); 22 dsOriginal.RemotingFormat = SerializationFormat.Binary; 23 24 brFormatter.Serialize(memStream, dsOriginal); 25 binaryDataResult = memStream.ToArray(); 26 memStream.Close(); 27 memStream.Dispose(); 28 return binaryDataResult; 29 } 30 /**//// <summary> 31 /// Retrieve dataSet from data of binary format 32 /// </summary> 33 /// <param name="binaryData"></param> 34 /// <returns></returns> 35 static public DataSet RetrieveDataSet(byte[] binaryData) 36 { 37 DataSet dataSetResult = null; 38 MemoryStream memStream = new MemoryStream(binaryData); 39 IFormatter brFormatter = new BinaryFormatter(); 40 41 object obj = brFormatter.Deserialize(memStream); 42 dataSetResult = (DataSet)obj; 43 return dataSetResult; 44 } 45 } 46} |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者