网络传输数据格式的选择
来源:互联网 发布:淘宝商家怎么找到淘客 编辑:程序博客网 时间:2024/05/24 05:02
博客引用于:http://yaocoder.blog.51cto.com/2668309/995210/
对于客户端和服务端的数据传输通常会有以下几点考虑:
1.网络数据大小——占用带宽,传输效率:虽然对单个用户来说,数据量传输很小,但是对于服务器端要承受众多的高并发数据传输,必须要考虑到数据占用带宽,尽量不要有冗余数据,这样才能够少占用带宽,少占用资源,少网络IO,提高传输效率;
2.网络数据安全性——敏感数据的网络安全:对于相关业务的部分数据传输都是敏感数据,所以必须考虑对部分传输数据进行加密;
3.编码复杂度——序列化和反序列化复杂度,效率,数据结构的可扩展性,可维护性:对于平台相关业务的代码实现也需要考虑到数据发送方和数据接收方数据处理的复杂度和数据结构的可扩展性,可维护性,人力成本和实施复杂度也必须考虑在内;
4.协议通用性——大众规范:数据类型必须是跨平台,数据格式是通用的,大家普遍能接受上手的;
以下我们通过几种不同类别的协议数据类型进行比较:
自定义二进制
优点:信息体积小,对应以上”1“
缺点:编码复杂度高(自己定义消息格式,自己编写序列化和反序列化方法,自己进行容错处理,可扩展性不强,比如添加个字段,就必须改两端的逻辑处理),对应以上”3“;
提供序列化和反序列化库的开源协议
比如protocol buffers, json, Thrift
优点:是一种流行的通用数据格式,扩展相当方便,序列化和反序列化相当方便(有相应库),错误处理方便(库支持);
文本化协议
比如xml,json
优点:序列化,反序列化容易(库支持),调试方便,可视化强
缺点:相对于二进制存储占用体积大
如果是你,你会选择哪种协议?
我会选择json,因为他是“提供序列化和反序列化库的开源协议还是文本化的协议”,原因如下:
1.自定义二进制格式进行传输的工作,整个过程在定义消息,write,read的过程过于复杂,还很容易出错,对于很多数据交互的程序,会花费大量的时间在上面;
2.自定义二进制格式不便于扩展,但json可以很好地解决这种问题;
3.虽然相比较二进制,json的占用空间稍大,但是我们可以通过网络数据压缩来解决,况且json本身也是轻量级的,传输效率也很高;
4.去看《unix编程艺术》吧,第5章--文本化,好协议产生好实践;第6章--透明性:来点儿光 会告诉你使用文本化协议的好处;
阅读全文
0 0
- 网络传输数据格式的选择
- 网络传输数据格式的选择
- 网络传输数据格式的选择:
- 网络传输数据格式的选择
- 网络传输文本数据格式JSON
- 网络传输数据格式XML、JSON、ProtoBuf
- 根据两种主要的网络传输数据格式xml和json,谈,在网络上传输的到底是什么?
- [转]数字视频网络传输层协议的选择
- 一种简易网络传输数据格式【替代json/xml】
- Json数据格式的使用规则以及数据格式的选择
- 以太网传输数据格式
- 奇怪的网络传输
- 理解的网络传输
- 数据的网络传输
- TCP/IP协议族的体系结构、数据格式及传输过程
- 两种网络数据格式的比较
- 网络编程中数据格式的转换
- 两种网络数据格式的比较
- MYSQL在15分钟插入千万条数据
- chatterbot中的trains.py详细解释
- 将darknet生成的.weight转化为.pb文件
- HDU2049 不容易系列之(4)——考新郎
- CSS Transform / Transition / Animation 属性的区别
- 网络传输数据格式的选择
- 2017 Multi-University Training Contest
- (一)VUE学习地址
- Multiple dex files define Landroid/support/v4/accessibilityservice解决方法
- C++ MFC listcontrol简单例子参考
- iOS之ReactiveCocoa源码及难点分析
- myeclipse的jsp文件如何转换成utf8默认编码
- 正则表达式
- android 访问https 证书问题 报错javax.net.ssl.SSLHandshakeException