移动App通讯协议及序列化方式的选择

简介: 简单列一下不同协议,序列化方式等的考虑。http还是私有协议?http协议优/缺点:在服务器端只需要提供一份接口,浏览器和app共用。

简单列一下不同协议,序列化方式等的考虑。

http还是私有协议?

http协议优/缺点:

在服务器端只需要提供一份接口,浏览器和app共用。在app中嵌入web view也很容易。

http协议的相关工具非常多。开发人员很方便 。比如负载均衡,直接nginx搞定。

比如统计一个接口的调用次数,相当的方便,有现在的分析工具。

压力测试也很方便。

http协议可能http服务器有漏洞,但是这种漏洞真的是很少。

手机可以设置http proxy,这对于某些用户可能是很关键的。如果是私有协议,设置http proxy就无效了。


私有协议优/缺点:

比较复杂,可以自己做一层加密。

逆向有成本,攻击者可能会放弃。

不同语言,每个平台都要开发一套,耗时耗人力。

自己实现的协议有可能有漏洞,要防范恶意攻击。

节省流量。

wmwap下可能要http tunnel。


序列化方式选择,JSON或者protobuf等?

JSON:

通用的数据交换格式,开发人员很熟悉,很三方的工具类库很多。

数据体积比较大。

没有版本化,前后端需要一定的沟通成本。

xml:

体积大,在http服务里,属于被抛弃的格式。

protobuf/thrift:

版本升级很容易,基本没有负担。

体积小。

通迅协议没有官方标准,第三方实现可能比较混乱。

如果是用工具生成的代码,基本不会有序列化的漏洞。

据说微信用的是protobuf。

其它的的序列化方式,或者自己定制的序列化方式:

可能遇到序列化的bug;

多语言支持的问题;

序列化的漏洞问题;


如何应对cmwap?

貌似cmwap的用户还是不少的。

http://s.weibo.com/weibo/cmwap

微信貌似是支持cmwap的:

http://weixin.qq.com/cgi-bin/readtemplate?promote=2&nav=contact&t=weixin_faq_networkflow

http://www.zhihu.com/question/19796744   一个11年的cmwap和cmnet的用户比例的东东。

如果是自己定制的协议,可以要做一下http tunnel,即一开始时,发送一个http头来欺骗移动的网关。

TODO:网上有一些cmwap http tunnel的文章,从理论上应该是可行的。


http还是https?

安全性的考虑:

https比http要安全。

对于app,很大的一个安全威胁是伪造wifi热点,http很容易被抓包。

尽管OpenSSL漏洞让人们意识到https也不是那么的安全。但对于绝大部分人来说,https还是很安全的,因为攻击成功很高。

但是即使https也不是那么的安全,参考:流量劫持能有多大危害?

https要比http慢;

证书的费用;

部署的问题,证书要放到CDN上,不然拿不到用户的真实IP;

看到过一个数据,在中国有20%的地区的无线用户用https是连不上的(真实性,技术性未知)。

全站https还是部分https?

https开发比http要复杂;


总结:

人个认为,对于绝大部分的app,http协议+JSON格式是比较好的选择。

因为这是最容易维护开发的,成本也比较低。


相关文章
|
XML 移动开发 小程序
抖音小程序开发 唤起收银台支付(可以选择支付宝APP支付或微信H5支付)
字节跳动也开放了小程序给商家接入,可以在旗下APP如抖音、今日头条、今日头条极速版等应用中即点即用,基于庞大的数亿用户量为其引流,帮助商家获取用户流量,销售商品,其模式和微信小程序差不多。
1744 0
抖音小程序开发 唤起收银台支付(可以选择支付宝APP支付或微信H5支付)
|
持续交付
|
iOS开发
《移动 App 性能监测实践(iOS篇)》电子版地址
移动 App 性能监测实践(iOS篇)
129 0
《移动 App 性能监测实践(iOS篇)》电子版地址
|
监控 前端开发 Java
Android自定义控件(十)——SurfaceView实战实现天气APP背景移动效果
Android自定义控件(十)——SurfaceView实战实现天气APP背景移动效果
354 0
|
监控
《“啄”壮成长,移动app线上日志分析利器》电子版地址
“啄”壮成长,移动app线上日志分析利器
58 0
《“啄”壮成长,移动app线上日志分析利器》电子版地址
|
负载均衡 算法
短视频开发app,选择正确的负载均衡算法很重要
短视频开发app,选择正确的负载均衡算法很重要
|
移动开发 缓存 安全
如何提升App用户隐私合规性?以YonBuilder移动开发平台APICloud为例
在移动应用开发领域,如果企业的应用程序未采用动态权限方式获取用户的隐私权限,将无法上架Google Play及国内的各大应用市场。对于一款标准的移动端商业app,动态权限功能已经成为必不可少的标配功能。 本文主要介绍如何使用YonBuilder移动开发技术,实现移动端的动态权限功能。
135 0
|
存储 XML 缓存
如何用App实现巡检业务数字化?以YonBuilder移动开发平台APICloud为例
一款消防检查app可以有效减少繁复工作、提升巡检效率。本文将详细介绍如何使用YonBuilder移动开发平台开发消防检查助手app。
379 0

热门文章

最新文章