知识大全 .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.NET2.0高级数据处理之主从数据表 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!在前面的
在ASP.NET2.0中保护机密数据 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在配置系统中
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.NET2.0数据异步处理改善用户体验 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 支持
ASP.NET2.0中XML数据的处理 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! SqlDa
ASP.NET2.0中的数据源控件 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! ASPNET引
知识大全 组合ASP.NET 2.0数据控件构建强大用户接口
组合ASP.NET2.0数据控件构建强大用户接口 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
ASP.NET2.0高级数据处理之使用参数 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!你可以处理
ASP.NET2.0高级数据处理之冲突检测 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!前面我们提