首页 > 教育学习 > 为什么 > Push mail 的实现原理是什么?

Push mail 的实现原理是什么?
2012-01-19 17:37:04   来源:   点击:

    Push mail 的实现原理是什么?目前有很多push mail的解决方案,国外的RIM Blackberry,Apple iOS,Google Android,国内的尚邮等第三方邮箱托管服务.但是我一直不明白其中的实现原理,有说是pull的,有说是运营商发送二进制triger的.说的好像很简单,但是都没有技术细节.我所知道的三种实现方法,
    • 第一,客户端不断查询服务器,检索新内容,就是所谓的pull,
    • 第二客户端和服务器保持一条socket,并且周期性的告知服务器undead,
    • 第三,服务器有新内容时,发送一条类似短信的信令给客户端,即上文所述triger,客户端开启相应的应用程序或者后台服务抓取信息.
    请教知乎的朋友:
    1. 一方面是实现的技术是什么,
    2. 另一方面是技术原理是什么,
    3. 是否如我所知,
    4. 是否有我还未知的技术.
    我在自己的博客上总结过黑莓的实现方式,但是没有官方证实,我也不敢肯定自己的想法是不是正确。(看这里http://sqbing.info/?p=38)

    13 个答案

    • 答案 1:

      技术原理基本上就楼主所说的三种:

        Pull

        SMS

        Persistent TCP/IP

      Pull和SMS方式的缺点是显而易见的,Pull会加重服务器负担,过快消耗移动设备的电力;SMS费用较高,时效性也没有优势,而且很难在全球范围内推广。比较靠谱的方案是TCP/IP长连接。我可以说说Android上Push Notification的实现原理。Android从2.2版之后推出了一个新的东西:C2DM(Android Cloud to Device Messaging Framework),其实就是Android上的Push Notification机制。使用C2DM,第三方应用程序可以搭建自己的服务器,配合Google的C2DM Server实现消息的即时通知。C2DM其实使用的也是TCP/IP长连接,所不同的是它运行在系统级别,从而避免了被操作系统杀死使整个Push机制失效的悲剧(第三方应用程序当然可以不使用C2DM自己实现Push机制,但一旦系统内存较低,程序被操作系统杀死后你就歇菜了)。另外,由于所有的第三方Push数据都必须走Google的C2DM Server,所以在实现上只需保持一个TCP/IP长连接,所有的Push数据都通过这个连接传送,从而节省了很多电力开销。关于C2DM的更多信息,请参考:Android Cloud to Device Messaging Framework - Google Projects for Androidcode.google.com/intl...
    • 答案 2:

      Google Sync (Gmail) for iOS 使用的是微软的 ActiveSync 协议,Push的实时性非常好,记得有一句话说「谷歌的邮箱和苹果的设备同步,需要用微软的协议」。而iOS和Android大多数其它应用(以及Facetime for Mac)的Push服务都是使用苹果或谷歌唯一的一个持久性TCP/IP连接来进行的。另外,iPhone 和 iPad 3G 的 Push 服务出于省电的原因,应该只会用到手机网络的连接。
    • 答案 3:

      不同意lss说的,SMS Push没有时效性的问题。我来说明一下SMS Push,当有新邮件时,服务器发送SMS Push,激活客户端联网收邮件,时效性是可以得到保证的,当然,如果要求有新邮件就立即收到,那的确是没有Persistent TCP/IP快。SMS Push最大的问题的确是费用,因为需要向目标设备发送SMS激活短信。好处是,在此期间不需要手机有任何操作,因此对于手机用户来说比较节省流量和省电。
    • 答案 4:

      还有一种介于pull和Persistent TCP/IP之间的技术:long polling(长轮询)。原理是客户端每次对服务的请求都被服务端hold住,等到有message返回或time out之后,会再次主动发起请求,等待message的到达。这种模式不需要保持心跳,也不需要持续TCP的占用,比较适合页面端及时消息的推送。
    • 答案 5:

      端到端的实现主要有2类:1、手机和邮件服务器间有个中间服务器/网关,提供推送如:黑莓的BI;苹果的推送服务;Android的C2DM2、手机直接连邮件服务器如:微软的ActiveSync不论手机连中间服务器还是直接连邮件服务器,推送的实现可以是:1、长连接推送如:黑莓。2、带外的通知,如短信(也算推送),进而触发终端上来拉如:中移动的手机邮箱。相比较推送做的好的还是黑莓,因为终端硬件也是它的,所以能在手机到BI和BI到邮件服务器之间的协议上做不少工作,如:压缩、寻址、数据包等,尤其是手机和BI之间是UDP而不是TCP,因为无线网络稳定性远低于PC的网络。苹果硬件也是自己的,在协议上本可以做的更好些,但刚开始的MobileMe效果不好,IT出身的厂商对无线网络特性的认知会逐步提高。
    • 答案 6:

      建议看iFanr的一篇老文章:关于PushMail那些事http://www.ifanr.com/3371
    • 答案 7:

      显然由客户端定时查询服务器这种方式不能称为push mail,邮件肯定不是实时到达的,在查询周期之间到达的邮件需要下一个查询才能收到。短信作为一个triger的话很显然有实时性问题,我们总是会遇到短信没有实时到达的问题。只有tcp长链接才比较靠谱。一是这条链路上在没有邮件的时候只需要保持心跳,二是客户端和服务器端都压力比较小。三是最实时。
    • 答案 8:

      Mobileme和Gmail应该很显然是Persistent TCP/IP或者蔡明军所说的long polling,常常网页端还没有收到邮件,但手机端已经有通知了。
    • 答案 9:

      C2DM貌似需要每个客户端都有Gmail账户才可以使用。 Persistent TCP/IP虽说是最靠谱的方式,但是在国内一些地区,移动网络质量比较差,这种长连接需要花很多功夫去维护,当然,最常遇到的问题就是手机系统自己把链接关闭了,这点非常头痛。 还有一种方式是comet架构,http的长连接,楼上们的回复也有提及,这个可以参考一下pushlet,这个框架是一个鬼佬实现的,有js、java、as等各种客户端实现,移植也比较方便。 当然最爽的是黑莓的推送机制了,直接跟运营商合作的,使用push消息来触发,省电、及时,这也是黑莓的资费贵的原因之一吧,需要与运营商分成。
    • 答案 10:

      C2DM 需要gmail账号支持,第一次要在google的服务器上注册,天朝是被墙的。SMS要运营商的支持吧,如果没有手机卡,纯wifi是不是就无效了?
    • 答案 11:

      追问:在BlackBerry上安了尚邮 想问问原理
    • 答案 12:

      复杂度还是有的;建议参考ipad iphone的apple site的帮助——讲解的很清楚了。
    • 答案 13:

      移动和联通的手机邮箱应该是通过SMS实现的。。毕竟人家是运营商,短信费用无视。

相关热词搜索:

上一篇:北京哪里有好吃的特色烤肉?
下一篇:你大学印象最深的两三件事是什么?