知识大全 .NET 2.0远程传输数据集的优化方法

Posted

篇首语:幼敏悟过人,读书辄成诵。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 .NET 2.0远程传输数据集的优化方法相关的知识,希望对你有一定的参考价值。

.NET 2.0远程传输数据集的优化方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  由于当前维护的项目的结构是:Winform + Webservice 所以在数据传输过程中消耗了很多的性能 因此在寻找一种简便实用的优化方法   先是用BinaryFormatter序列化数据集 经过WebService传输后 客户端接收到byte[]格式的数据 再反序列化 得到数据集 这种方式 在网络传输时间延迟比较长的情况下效果比较明显 否则 序列化和反序列化再传输二进制的时间甚至超过了直接传送DataSet 所以是否采取这种二进制压缩数据集就没有多大意义了   后来找到上面第一篇台湾同胞的文章 才发现在Vs 的DataSet已经添加了一个RemotingFormat 是采用另外一种方式压缩的 (传说 时期开源的DataSetSurrogate类)不过没有找到这个在什么地方下载 试了一下Vs 里面的 查询 条记录 设置RemotingFormat = SerializationFormat Binary;  再序列化 通过WebService传输 客户端接收 再反序列化 确实效果大大的优于直接传送DataSet 不仅网络传输中如此 即使本机 性能改善也非常明显   下面分别是WebService里面的方法和客户端反序列化取DataSet的方法    服务器上面取数据 填充数据集 转换为二进制格式

   /**//// <summary>/// Method for users data query with binaryFormatter/// </summary>/// <param name= err ></param>/// <returns></returns>public byte[] BinaryUserSelect(ref string err) ClearCommand(); m_mandStringBuilder Append( SELECT * FROM t_Users ; ); DataSet dsResult = new DataSet(); byte[] bArrayResult = null; try    dsResult = SqlHelper ExecuteDataset(m_currentConnectionString CommandType Text m_mandStringBuilder ToString());  // 上面都是取数据的 无需关心 二进制压缩数据集是下面一小段  dsResult RemotingFormat = SerializationFormat Binary;  MemoryStream ms = new MemoryStream();  IFormatter bf = new BinaryFormatter();  bf Serialize(ms dsResult);  bArrayResult = ms ToArray();  ms Close();  //   catch (Exception ee)   err = ee ToString();  return bArrayResult;    通过WebService把byte[]格式的数据发送到客户端 这里就是WebService自己的事情了 我们无需关心   客户端接收到byte[]格式的数据 对其进行反序列化 得到数据集 进行客户端操作 /**//// <summary>/// Get user data with Binary format/// </summary>/// <returns></returns>public DataSet GetBinaryUserData() string err = ; byte[] bUserData = svc ByteArrayUserSelect(ref err); if (err != )   MessageBox Show(err);  err = ;  return null;  // 反序列化的过程 MemoryStream ms = new MemoryStream(bUserData); IFormatter bf = new BinaryFormatter(); object obj = bf Deserialize(ms); DataSet dsResult = (DataSet)obj; // ms Close(); return dsResult;

  同样一台机器 手工生成 条数据 在本地使用WebService分别读取 传输并在客户端显示数据集和byte[]格式的数据 前者平均时间 秒 后者平均时间为 秒 之间的差别仅在传输过程的格式 还有后者需要的序列化和反序列化的时间 本地WebService传输的差别尚且如此 通过网络传输的时间优化自然会更明显   下面微软提供的DataSetSurrogate开发包下载地址:x?scid=kb;en us;   对数据集序列化和反序列化的方法进行了一下简单的封装 使其可以得到重用的效果 见下面的类DatFormatter   通过GetBinaryFormatData方法可以转换数据集为二进制 在服务器端使用 转换数据集格式 发送 客户端接收 得到二进制格式数据 使用RetrieveDataSet方法 反序列化 得到数据集 进行客户端操作 通过这些简单的操作(序列化和反序列化 将数据压缩) 可以使数据集等体积庞大的对象在远程传递中的时间大大减少 并且可以减少网络中断等问题对程序的影响

cha138/Article/program/net/201311/11892

相关参考

知识大全 ASP.NET 2.0高级数据处理之主从数据表

ASP.NET2.0高级数据处理之主从数据表  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!在前面的

知识大全 在 ASP.NET 2.0 中保护机密数据

在ASP.NET2.0中保护机密数据  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在配置系统中

知识大全 ASP.Net 2.0中的5个数据控件

ASP.Net2.0中的5个数据控件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!第一篇的入门帖就

知识大全 ASP.NET入门教程 7.2 ASP.NET 2.0的数据控件

ASP.NET入门教程7.2ASP.NET2.0的数据控件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 ADO.NET 2.0 数据异步处理改善用户体验

ADO.NET2.0数据异步处理改善用户体验  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  支持

知识大全 ASP.NET 2.0中XML数据的处理

ASP.NET2.0中XML数据的处理  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  SqlDa

知识大全 ASP.NET 2.0 中的数据源控件

ASP.NET2.0中的数据源控件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ASPNET引

知识大全 组合ASP.NET 2.0数据控件构建强大用户接口

组合ASP.NET2.0数据控件构建强大用户接口  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 ASP.NET 2.0高级数据处理之使用参数

ASP.NET2.0高级数据处理之使用参数  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!你可以处理

知识大全 ASP.NET 2.0高级数据处理之冲突检测

ASP.NET2.0高级数据处理之冲突检测  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!前面我们提