由于公司近期业务的需要,本要研究一些有关 XML WebServer下数据序列化及数据压缩的实现问题,现与大家分享一下,也希望大家勇于讨论,互相学习。由于要实现网络传输入,考虑到操作系统、网络性能等几方面的原因,就需要对数据实现序列化和数据压缩传输入。本人简单地实验了一下,如果在XML WebServer下直接使用DataSet传输入数据,就算实现压缩,也是非常具大的。最好的方法是自己定义好结构体或都类对象(当然在定义的时间要声明我可序列化的哟),进行序列化,然后再进行数据压缩;到了另外一端时选进行解压缩,然后再反序列化。通过这样的实现,从我的项目经验得到的结论是,大大地提高了数据传输的性能,尤其是对于数据量具大的数据传输入更是如此。本人已把数据对象序列化和反序列化、压缩和解压方法(引用的是开源插件,可以从网上http://www.icsharpcode.net/OpenSource/SharpZipLib/Default.aspx 下载)封装成一个完整的类中了,代码如文中所述,如有不懂不解之处希望各位一起讨论,也希望能听到更好的见解。

/**//********************************************************************************************* * 文 件 名:ObjectBinaryFormate.cs * 创 建 人:王峰 * 功能说明:实现对象序列化与反序列 * 创建日期:2006-12-25 * 单位名称:华域科技 * 版 本:1.0 * 更新说明:--------------------------------------------------------------------------------- * 修 改 人:王峰 * 日 期:2007-01-24 * 修改说明:实现数据的压缩 * ------------------------------------------------------------------------------------------- * 其它说明:无 ***********************************************************************************************/ using System; using System.IO; using System.Data; using System.Runtime.Serialization.Formatters.Binary; //此处需要进相关的网站下载相应的开源插件 using ICSharpCode.SharpZipLib.Zip.Compression; namespace SmsClientApp ...{ /** <summary> /// ObjectBinaryFormate 的摘要说明。 /// </summary> public class ObjectBinaryFormate ...{ public ObjectBinaryFormate() ...{ } /**//********************************************************************************************** * 方法名称:ChangeObjectToBytes * 功能说明:把数据对象序列化为字节型数组 * 输 入 值:数据对象 * 输 出 值:无 * 返 回 值:字节数组 * 其它说明:无 **********************************************************************************************/ public static byte[] ChangeObjectToBytes(object objValue) ...{ byte[] dataValue = null; try ...{ //序列化 BinaryFormatter formate = new BinaryFormatter(); //内存文件流对象 MemoryStream smsStream = new MemoryStream(); formate.Serialize(smsStream, objValue); dataValue = smsStream.ToArray(); smsStream.Close(); } catch(Exception e) ...{ System.Console.WriteLine("序列化失败!"+e.Message); } //返回压缩后的数据 return CompressByteData(dataValue); } /**//********************************************************************************************** * 方法名称:ChangeBytesToObject * 功能说明:把字节型数组反序列为数据对象 * 输 入 值:字节数组 * 输 出 值:无 * 返 回 值:数据对象 * 其它说明:无 **********************************************************************************************/ public static object ChangeBytesToObject(byte[] dataValue) ...{ object objValue = null; try ...{ //解压缩数据 byte[] resultValue = DecompressByteData(dataValue); //反序列化 BinaryFormatter formate = new BinaryFormatter(); //内存文件流对象 MemoryStream smsStream = new MemoryStream(); smsStream.Write(resultValue, 0, resultValue.Length); //指针归零 smsStream.Seek(0, SeekOrigin.Begin); objValue = (object)formate.Deserialize(smsStream); smsStream.Close(); } catch(Exception e) ...{ System.Console.WriteLine("反序列化失败!"+e.Message); } //返回对象 return objValue; } /**//********************************************************************************************** * 方法名称:CompressByteData * 功能说明:数据压缩 * 输 入 值:源字节数据 * 输 出 值:无 * 返 回 值:压缩后的字节数据 * 其它说明:无 **********************************************************************************************/ private static byte[] CompressByteData(Byte[] dataValue) ...{ byte[] resultValue = null; try ...{ //压缩数据 Deflater compressFile = new Deflater(Deflater.BEST_COMPRESSION); compressFile.SetInput(dataValue); compressFile.Finish(); //内存文件流对象 MemoryStream smsStream = new MemoryStream(); byte[] bufData = new byte[1024]; while (!compressFile.IsFinished) ...{ int bufLength = compressFile.Deflate(bufData); smsStream.Write(bufData, 0, bufLength); } resultValue = smsStream.ToArray(); smsStream.Close(); } catch(Exception e) ...{ System.Console.WriteLine("压缩数据失败!"+e.Message); } //返回压缩后的数据 return resultValue; } /**//********************************************************************************************** * 方法名称:DecompressByteData * 功能说明:解压缩数据 * 输 入 值:源字节数据 * 输 出 值:无 * 返 回 值:解压后数据 * 其它说明:无 **********************************************************************************************/ private static byte[] DecompressByteData(byte[] dataValue) ...{ byte[] resultValue = null; try ...{ //解压缩数据 Inflater decompressFile = new Inflater(); decompressFile.SetInput(dataValue); //内存文件流对象 MemoryStream smsStream = new MemoryStream(); byte[] bufData = new byte[1024]; while (!decompressFile.IsFinished) ...{ int bufLength = decompressFile.Inflate(bufData); smsStream.Write(bufData, 0, bufLength); } resultValue = smsStream.ToArray(); smsStream.Close(); } catch(Exception e) ...{ System.Console.WriteLine("解压缩数据失败!"+e.Message); } //返回数据 return resultValue; } } }

浅谈C# XML WebServer数据序列化及数据压缩相关推荐

  1. 浅谈云计算和大数据技术

    浅谈云计算和大数据技术 背景: 随着计算机技术的发展,数据量日益增长,现有技术也很难满足业务的发展需求,在代码的层层迭代和优化之后,还是很难满足数据的增长需求,迫切需要一项新的技术来从事数据计算,因为 ...

  2. 浅谈List保存的数据是引用数据类型的地址

    浅谈List保存的数据是引用数据类型的地址 今天一个初学javaweb的朋友问我一个bug,经过和别人 讨论分析了解到List对象细节上的一些问题,我将代码重新简化构造了一下做成了一个例子.上代码: ...

  3. 浅谈服务器托管至IDC数据中心的优势

    浅谈服务器托管至IDC数据中心的优势 一:网络 企业自建机房一般用的是商务光纤,本质上也是从运营商的数据中心出来的光纤,只是要经过很多交换机跳转后才能到企业的机房,所以出现故障率的概率会高一些.IDC ...

  4. 浅谈通过网络和数据来“定位”一个人

    我们在看武侠小说时,总有些高手能飞天遁地,似乎无所不能,然而我们也总能发现那些如影随形的人,他们不分日月,不分四季的追踪.当今社会,也有这样的情况,追逐的战场已经变成了虚拟复杂的网络世界,根据自己的知 ...

  5. 浅谈人工智能、大数据等技术在交通领域的应用

    随着人工智能.大数据.物联网.云计算等技术的兴起与发展,各类设备.终端.系统平台等都会产生海量的数据,加之传统的处理方式已经逐渐落伍,因此,这些智能便捷化的技术便逐渐渗透到各行各业中.像交通行业随着交 ...

  6. 张钹院士:浅谈人工智能与大数据的关系

    来源:联合时报 本文共2385字,建议阅读5分钟. 本文主要浅谈了人工智能和大数据的关系以及中国在人工只能领域对世界的超越. 中国科学院院士张钹对国内外人工智能产业发展现状,提出我国仅靠跟随性的应用深 ...

  7. 浅谈Oracle 数据库之间数据同步方案

    随着信息技术的飞速发展,企业信息化建设的不断深入,使得企业业务系统数量不断增加.这时,各业务系统之间数据交互,各子业务系统与核心业务系统之间数据交互,诸如此类场景的应用需求不断出现.因此,IT部门应对 ...

  8. 浅谈云计算,大数据和人工智能

    原文链接: https://www.cnblogs.com/popsuper1982/p/8505203.html 我今天要讲这三个话题,一个是云计算,一个大数据,一个人工智能,我为什么要讲这三个东西 ...

  9. php://input $_post,浅谈PHP接收POST数据方式

    通常情况下用户使用浏览器网页表单向服务器post提交数据,我们使用PHP接收用户POST到服务器的数据,并进行适当的处理.但有些情况下,如用户使用客户端软件向服务端php程序发送post数据,而不能用 ...

最新文章

  1. 微型计算机组成部分db,微机原理复习(2)
  2. 分库分表之 Sharding-JDBC 中间件,看这篇真的够了!
  3. 庆祝一下,基于JXTA的P2P文件共享传输文件测试成功。
  4. Windows Azure Platform Introduction (6) Windows Azure应用程序运行环境
  5. 每天一个linux命令(14):head 命令
  6. Windows和Linux下apache-artemis-2.10.0安装配置
  7. 第十八课 色彩样式与滤镜
  8. iphone7防水_什么是IP68防尘防水,您的手机是IP68级别手机,进水也不给保修
  9. 在代理类中引用动态代理
  10. matlab气相分解反应动力学,第十二章 化学动力学.ppt
  11. 推荐 | 为科研人量身打造的公众号,都在这里啦
  12. AjaxPro.Dll运用
  13. pthread_attr_t 线程属性(一)
  14. 项目:心肺复苏按压仪+沁恒赤兔ch32v307+嵌入式开发
  15. 表格里加横线一分为二_我告诉你excel表格分割线一分为二
  16. 关于Android Handler同步屏障那些事
  17. 用计算机弹奏全球变冷,《全球变冷,钢琴谱》许嵩(五线谱 钢琴曲 指法)-弹吧|蛐蛐钢琴网...
  18. 2020 年高中数学联赛试题及解析
  19. 白话数据、数据项、数据元素和数据对象的概念和联系。
  20. 【python】print函数的用法示例与讲解

热门文章

  1. 洛谷——P1597 语句解析(两种解法)
  2. 如何创建xsl文件 xml_EXCEL知识分享 I 连载如何快速创建XML文件
  3. 从 Google 的一道面试题说起·
  4. 企业分布式微服务云SpringCloud SpringBoot mybatis (十二)断路器监控(Hystrix Dashboard)...
  5. 201509-2-日期计算
  6. C#笔记13 匿名类型、集合初始化器、扩展方法和查询表达式
  7. mysql单库tps_简单计算mysql 的QPS,TPS
  8. 让别人查看云服务器的文件夹,让别人查看云服务器的文件夹
  9. 正经人一辈子都用不到的 JavaScript 方法总结 (一)
  10. mac 截图快捷键