Android和WCF通信 - 大数据压缩后传输
2013-08-15 10:13
507 查看
最近一直在优化项目的性能,就在前几天找到了一些资料,终于有方案了,那就是压缩数据。
一丶前端和后端的压缩和解压缩流程
[b]二丶优点和缺点[/b]
优点:①字符串的压缩率能够达到70%-80%左右
②字符串数量更少了
缺点:①CPU的开销会大一点,不过在可承受范围之内
[b]三丶通过标记来说明数据是否压缩过[/b]
这个一开始是没有想到,是经理提醒我的,通过在数据(字符串)的最前端添加一个标记来说明数据是否压缩过。
因为只有当数据大于一定数量的时候才进行压缩操作。
[b]四丶测试(简单的测试)[/b]
环境:1.启动500线程 (相当于500个客户端)
2.500个线程同时调用
3.服务端和客户端在同一个局域网的两台PC机
4.未压缩的字符串长度为65000,压缩之后长度为8400
测试结果:
结果:其实测试的结果很明显了,通过压缩数据来减少网络数据量的传输,确实可以提高速度。
[b]五丶代码[/b]
一丶前端和后端的压缩和解压缩流程
[b]二丶优点和缺点[/b]
优点:①字符串的压缩率能够达到70%-80%左右
②字符串数量更少了
缺点:①CPU的开销会大一点,不过在可承受范围之内
[b]三丶通过标记来说明数据是否压缩过[/b]
这个一开始是没有想到,是经理提醒我的,通过在数据(字符串)的最前端添加一个标记来说明数据是否压缩过。
因为只有当数据大于一定数量的时候才进行压缩操作。
[b]四丶测试(简单的测试)[/b]
环境:1.启动500线程 (相当于500个客户端)
2.500个线程同时调用
3.服务端和客户端在同一个局域网的两台PC机
4.未压缩的字符串长度为65000,压缩之后长度为8400
测试结果:
结果:其实测试的结果很明显了,通过压缩数据来减少网络数据量的传输,确实可以提高速度。
[b]五丶代码[/b]
public class CompressionHelper { public static string Compress(string value) { string result = string.Empty; try { byte[] buffer = Encoding.UTF8.GetBytes(value); using (MemoryStream memoryStream = new MemoryStream()) { using (DeflateStream deflateStream = new DeflateStream(memoryStream, CompressionMode.Compress, true)) { deflateStream.Write(buffer, 0, buffer.Length); } result = Convert.ToBase64String(memoryStream.ToArray()); } } catch (InvalidDataException invalidData) { //Log } catch (Exception exception) { //Log } return result; } public static string Decompress(string value) { string result = string.Empty; try { byte[] bytes = Convert.FromBase64String(value); using (MemoryStream outStream = new MemoryStream()) { using (MemoryStream inStream = new MemoryStream(bytes)) { using (DeflateStream deflateStream = new DeflateStream(inStream, CompressionMode.Decompress, true)) { int readLength = 0; byte[] buffer = new byte[1024]; while ((readLength = deflateStream.Read(buffer, 0, buffer.Length)) > 0) { outStream.Write(buffer, 0, readLength); } } } result = Encoding.UTF8.GetString(outStream.ToArray()); } } catch (InvalidDataException invalidData) { //Log } catch (Exception exception) { //Log } return result; }
相关文章推荐
- Android和WCF通信 - 大数据压缩后传输
- 学习之路三十五:Android和WCF通信 - 大数据压缩后传输
- Android和WCF通信 - 大数据压缩后传输
- [Android通信]基于socket的聊天app(三):传输json数据
- Android网络通信中数据传输的JSON格式使用
- Android 2.0上使用蓝牙通信代码片断(服务端、客户端、数据传输)
- Android网络通信中数据传输的XML格式使用
- android接口中json数据的传输中使用gzip压缩
- Android蓝牙通信——与蓝牙模块进行通信传输数据
- WCF 提高传输数据性能方法之一 (使用压缩)
- 【android之USB通信】android之USB数据传输
- WCF 提高传输数据性能方法之一 (使用压缩)
- Android Intent 程序之间进行通信 传输数据
- WCF 提高传输数据性能方法之一 (使用压缩) 转
- Android蓝牙通信——安卓蓝牙obtainMessage数据传输部分数据丢失乱序问题
- Android GZIP压缩IO流,优化APP数据传输(一)
- WCF 提高传输数据性能方法之一 (使用压缩)
- 稳扎稳打Silverlight(57) - 4.0通信之WCF RIA Services: 概述, 通过 DomainDataSource 实现数据的添加、查询、更新和删除操作
- 是否须要对网络数据传输进行压缩?怎样选择压缩算法?
- 使用数字证书技术来保证WCF传输中的数据加密