`

移动互联网_微信协议分析

 
阅读更多

协议。手机终端跟后台服务器之间的交互协议,这个协议的设计是整个系统的骨架,在这一点做好设计可以使得系统的复杂度大大降低。容灾。当系统出现了若干服务器或若干支架(宕机的时候),仍然需要让系统尽可能的提供正常的服务。轻重。如何在系统架构中分布功能,在哪一个点实现哪一个功能,代表系统中间的功能配置。监控。为系统提供一个智能仪表盘。

在协议设计上,移动互联网和常规互联网有很大的区别。首先有CMWAP和CMNET的不同,在中国现在有相当多的手机用户使用WMWAP连接,还有就是在线和离线的概念,当QQ下线的时候叫离线,当你登录的时候叫在线。但是在移动互联网这两个概念比较模糊。从微信的设计中,不管在线还是离线系统表现都应该是一致的。还有一个是连接不稳定的问题,由于手机信号强弱的变化,当时信号很好,5秒钟走到信号不好的地区,连接就必须断掉。这个中间带来不稳定的因素为协议设计带来较大困难。此外就是资费敏感的问题,因为移动互联网是按照流量计费的,这个计费会使得在协议设计中如何最小化传输的问题。最后就是高延迟的问题。

对此,业界标准的解决方案:Messaging And Presence Protocol:1)XMPP;2)SIP/SIMPLE。它的优点是简单,大量开源实现。而缺点同样明显:1)流量大:状态初始化;2)消息不可靠。

微信在系统中做了特殊设计,叫SYNC协议,是参考Activesyec来实现的。特点首先是基于状态同步的协议,假定说收发消息本身是状态同步的过程,假定终端和服务器状态已经被迟了,在服务器端收到最新的消息,当客户端、终端向服务器对接的时候,收取消息的过程实际上可以简单的归纳为状态同步的过程,收消息以及收取你好友状态更新都是相同的。在这样的模式之下,我们会也许会把交互的模式统一化,只需要推送一个消息到达的通知就可以了,终端收到这个通知就来做消息的同步。在这样的简化模式之下,安卓和塞班都可以得到统一。这样的系统本身的实现是更为复杂的,但是获得很多额外的好处。

让剩下系统实现的部分更加简单,简化了交互模式,状态同步可以通过状态同步的差值获得最小的数据变更,通过增量的传输得到最小的数据传输量。通过这样的协议设计,微信可以确保消息是稳定到达的,而且是按序到达。引用一句俗话:比它炫的没它简单,比它简单的没它快,没谁比他更快,哪怕在GPRS下,微信也能把进度条轻易推到底。

分享到:
评论

相关推荐

    微信协议,Ipad协议、MAC协议、Windows协议=.zip

    微信协议,Ipad协议、MAC协议、Windows协议(本开源项目是7.X版本 840是商用 JAVA版本的,学习用,商用独家840 Java协议测试 请看下面).zip 软件开发设计:应用软件开发、系统软件开发、移动应用开发、网站开发C++...

    微信公众平台开发

    陶瑾,网名“方倍”,微信公众平台发先行者之一,曾在国内领先的通讯公司及跨国公司担心软件测试、协议栈发、高级软件自动化工程师职位,拥有2项移动通讯相关的专利。其于2013年创立的方倍工作室,已为互联网、广电...

    微信HOOK协议软件,已实现云控,将微信的效率最大化,目前测试中

    近期一直在尝试微信HOOK,终于把 好友操作 群操作 发送名片、链接 删加好友 获取收款信息 等等,只要PC微信上有的功能均封装完成 但只是封装还不够,要如何实现自动化的操作,甚至云端自动处理? 我的思路是将软件...

    Android开发:微信授权登录与微信分享完全解析

    在移动互联网浪潮中,联网APP已经把单机拍死在沙滩上,很多公司都希望自家应用能够有一套帐号系统,可是许多用户却并不一定买账:我凭啥注册你家应用的帐号?微博,微信,QQ几乎成了每个人手机中的必装应用,于是...

    微信公众平台开发最佳实践(第2版)高清文字版 带书签 可复制

    陶瑾 网名“方倍”,微信公众平台开发先行者之一,曾在国内领先的通信公司及跨国公司担任软件测试、协议栈开发、高级软件自动化工程师职位,拥有两项移动通信相关专利。其于2013年创立的方倍工作室已为互联网、广电...

    iOS微信第三方登录实现

    移动应用微信登录是基于OAuth2.0协议标准构建的微信OAuth2.0授权登录系统。 在进行微信OAuth2.0授权登录接入之前,在微信开放平台注册开发者帐号,并拥有一个已审核通过的移动应用,并获得相应的AppID和AppSecret,...

    js微信扫描二维码登录网站技术原理

    网站应用微信登录是基于OAuth2.0协议标准构建的微信OAuth2.0授权登录系统。 在进行微信OAuth2.在进行微信OAuth2.0授权登录接入之前,在微信开放平台注册开发者帐号,并拥有一个已审核通过的网站应用,并获得相应的...

    开源项目是7.0.14 C#版本的,学习用,商用JAVA源码独家840协议测试 .zip

    Ipad、MAC、Windows协议,微信协议(本开源项目是7.0.14 C#版本的,学习用,商用JAVA源码独家840协议测试 请看下面) 软件开发设计:应用软件开发、系统软件开发、移动应用开发、网站开发C++、Java、python、web、C#...

    Android实现微信webview兼容Android 7.0。.zip

    Android实现微信webview...云计算与大数据:数据集、包括云计算平台、大数据分析、人工智能、机器学习等,云计算是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需提供给计算机和其他设备。

    微信公众平台开发教程(二) 基本原理及消息接口总结

    微信服务器就相当于一个转发服务器,终端(手机、Pad等)发起请求至微信服务器,微信服务器,然后将请求转发给自定义服务(这就里就是我们的具体实现)。 服务处理完毕,然后挥发给微信服务器,微信服务器再将具体...

    Android—基于微信开放平台v3SDK开发(微信支付填坑)

    接触微信支付之前听说过这是一个坑,,,心里已经有了准备。。。我以为我没准跳坑出不来了,没有想到我填上了,调用成功之后我感觉公司所有的同事都是漂亮的,隔着北京的大雾霾我仿佛看见了太阳~~~好了,装逼结束。...

    微信支付的申请流程

    ** 第二步:认证公众号** 公众号认证后才可申请微信支付,认证费:300元/次。 第三步:提交资料申请微信支付 ...本协议为线上电子协议,签署后方可进行交易及资金结算,签署完立即生效。 作者:17805

    iOS自定义交互式转场动画-仿微信图片浏览器转场动画.zip

    iOS自定义交互式转场动画-...云计算与大数据:数据集、包括云计算平台、大数据分析、人工智能、机器学习等,云计算是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需提供给计算机和其他设备。

    这是一个基于崔用志的wechat(java微信公众号)开发搭建的一个智能数据助手多终端maven项目模块系统.zip

    这是一个基于崔用志的...云计算与大数据:数据集、包括云计算平台、大数据分析、人工智能、机器学习等,云计算是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需提供给计算机和其他设备。

    微信开发完整java项目基于SSM微信公众号项目开发SpringMyBatisSpringMVC.zip

    软件开发设计:应用软件开发、系统...云计算与大数据:包括云计算平台、大数据分析、人工智能、机器学习等,云计算是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需提供给计算机和其他设备。

    node 微信公众号项目.zip

    软件开发设计:应用软件开发、系统...云计算与大数据:包括云计算平台、大数据分析、人工智能、机器学习等,云计算是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需提供给计算机和其他设备。

    iOS微信支付开发案例

    微信支付有很多坑的,官方提供的文档一点都不全面,而且demo也比较”羞涩”难懂。很多注意的细节都没有体现出来,走了很多弯路。于是,系统的开发流程如下。(完整的demo附在博客最后面)这里面包括微信支付开发和...

    微信、头条内扫描二维码或者点击链接地址,识别当前系统(Android或IOS).zip

    微信、头条内扫描二维码...云计算与大数据:数据集、包括云计算平台、大数据分析、人工智能、机器学习等,云计算是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需提供给计算机和其他设备。

    微信小博客:无博客后端,博客数据来源与 hexo 与github 搭建的博客系统 .zip

    微信小博客:无博客后端,...云计算与大数据:数据集、包括云计算平台、大数据分析、人工智能、机器学习等,云计算是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需提供给计算机和其他设备。

Global site tag (gtag.js) - Google Analytics