永发信息网

如何选择传输协议及格式

答案:1  悬赏:0  手机版
解决时间 2021-03-31 07:49
如何选择传输协议及格式
最佳答案
网络传输数据格式的选择

对于客户端和服务端的数据传输通常会有以下几点考虑:
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章--透明性:来点儿光 会告诉你使用文本化协议的好处;
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
男子的脊背是什么样
我弟弟在江汉区看守所被7人打伤,江汉区看守
孕妇梦见财神爷送财神爷画像给自己是什么意思
以多彩人生为题目的800字作文.
小龙虾能吃吗
劳恩斯酷派09款和12款悬挂避震哪个更舒适
楼市虽然还火爆,但二手房能抛售掉吗
汉字生动形象仅一个看字就可细化不尽如眺远看
一根仙人柱剪去一半后还能活吗?剪后的下半部
现在厂里的人真的不是人,在厂里没事一人坐旁
大家觉得广州市传诚家政怎样了
怎么看电脑网卡是百兆还是千兆
的挺明显的了你们是怎么拒绝别人撩你的
P P R日丰管中间可以接别的牌子配件吗
益康堂大药房地址在哪,我要去那里办事
推荐资讯
我是做外宣的,你能教我拉人吗
国内的税务软件企业有哪些?
请问徐工压路机这个故障灯是什么意思?
腾讯云主机怎么登陆
由漫画改编的台剧有哪些?
重庆市轻轨6号线从刘家坪至重庆北站怎么转车
平阳职业教育是不是在鳌江,分数大约多少,鳌
日万份净值是百分之0.96,按一万份算能收多少
『高三冲刺天天熬夜,怎么才能保证精力充沛
谷歌翻译 无Wi-Fi情况也可翻译吗?
苏州地铁3号线终点哪里
The pizza your mother makes tastes delicio
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?