藉由GZipStream的壓縮,來減少Web Service的傳輸量
来源:互联网 发布:mysql 数据库导出图解 编辑:程序博客网 时间:2024/06/11 06:42
1. 壓縮+Serialize
Web Service Side :
using System.IO;using System.IO.Compression;using System.Runtime.Serialization;using System.Runtime.Serialization.Formatters.Binary;[WebMethod]public byte[] getZipData(){ DataSet ds = LoadData().Copy(); ds.RemotingFormat = SerializationFormat.Binary; BinaryFormatter ser = new BinaryFormatter(); MemoryStream unMS = new MemoryStream(); ser.Serialize(unMS, ds); byte[] bytes = unMS.ToArray(); int lenbyte = bytes.Length; MemoryStream compMs = new MemoryStream(); GZipStream compStream = new GZipStream(compMs, CompressionMode.Compress, true); compStream.Write(bytes, 0, lenbyte); compStream.Close(); unMS.Close(); compMs.Close(); byte[] zipData = compMs.ToArray(); return zipData; }private DataSet LoadData(){//產生測試資料用 DataSet ds = new DataSet(); DataTable dt = new DataTable("Test"); dt.Columns.Add("ProID",typeof(int)); dt.Columns.Add("ProName", typeof(string)); dt.Columns.Add("CreateTime", typeof(DateTime)); dt.Columns["ProID"].AutoIncrement = true; for (int i = 0; i < 100000; i++) { DataRow dr = dt.NewRow(); dr["ProName"] = Guid.NewGuid().ToString(); dr["CreateTime"] = DateTime.Now.ToString(); dt.Rows.Add(dr); } ds.Tables.Add(dt); ds.AcceptChanges(); return ds;}
Client Side :
using System.IO.Compression;using System.IO;using System.Runtime.Serialization.Formatters.Binary;private void btn_ZipGet_Click(object sender, EventArgs e){ try { WS.Service1 wss = new WSZipDemo.WS.Service1();//WebReference byte[] da = wss.getZipData(); MemoryStream input = new MemoryStream(); input.Write(da, 0, da.Length); input.Position = 0; GZipStream gzip = new GZipStream(input, CompressionMode.Decompress, true); MemoryStream output = new MemoryStream(); byte[] buff = new byte[4096]; int read = -1; read = gzip.Read(buff, 0, buff.Length); while (read > 0) { output.Write(buff, 0, read); read = gzip.Read(buff, 0, buff.Length); } gzip.Close(); byte[] rebytes = output.ToArray(); output.Close(); input.Close(); MemoryStream ms = new MemoryStream(rebytes); BinaryFormatter bf = new BinaryFormatter(); object obj = bf.Deserialize(ms); DataSet ds = (DataSet)obj; dataGridView1.DataSource = ds.Tables[0]; } catch (Exception ex) { MessageBox.Show(ex.Message); }}
- 藉由GZipStream的壓縮,來減少Web Service的傳輸量
- 藉由GZipStream的壓縮,來減少Web Service的傳輸量
- 藉由GZipStream的压缩,来减少Web Service的传输量
- 由GZipStream的压缩,減少Web Service的传输量
- GZipStream实现压缩以及出现的问题
- GZipStream实现压缩以及出现的问题
- GzipStream 实现文本文件的(压缩--解压)
- 藉由分离来降低风险:云端内的职权分离
- web service的基础教程 web Service java
- web service的基础教程 web Service java
- web service的基础教程 web Service java
- web service的基础教程 web Service java
- web service的基础教程 web Service java
- Web Service的加密
- Web Service 的特点
- Web Service的介绍
- Web Service的加密
- web service的安全
- 黑马程序员---JDK5.0新特性(下)
- H3C DDNS配置简介
- 用C#如何遍历一个窗体中的某一种控件
- OCP-1Z0-053-V12.02-617题
- 关于oracle的学习
- 藉由GZipStream的壓縮,來減少Web Service的傳輸量
- 远程对象的声明周期
- Android 之 下拉框(Spinner)的使用
- 如何的 分配到更多内存
- WinSock网络编程实用宝典
- POJ3618 绝对值排序
- SQLSERVER数据库备份语句
- hive 影响reduce 个数的参数
- WINCE-如何通过map文件定位异常地址