注册 | 登录 | 设为首页 | 加入收藏
您当前的位置:飞翔学院-IT中国 → 编程开发.Net/C# → 文章内容

Direct Push -Push Mail

作者:佚名 来源:本站整理 发布时间:2008-5-22 13:57:23

摘要:Push Mail的业务在国内业已渐渐活跃起来,Exchange Server和智能手机PDA的普及程度也从很大程度上反映了企业(公司)的信息化水平。本文阐述了Direct Push实现条件,实现机制,heartbeat校正的过程和防火墙配置的相关内容。Keywords
Direct Push, Exchange Server 2007, Email

大概1个月以前,和Bob Li聊到了一些有关Direct Push的原理性的问题,当时承诺要写一篇有关Push e-mail的东西,可惜前一段实在太忙,每天上网时间有限,一直拖到现在才得以稍稍解脱。希望大家多多指正和交流。

Background

Push是相对Pull来说的,传统的Email实际上就是一种Pull的方式,主动权在用户,用户在他们登陆邮箱的时候,会询问邮件服务器是否有新的邮件,如果有新的邮件,用户端会去查收(下载)新的Email至收件箱。可以这么认为:

Pull==User Request + Server Push

不过,既然邮件本身就是从发件方到收件方的讯息,为什么不能像短消息(SMS)一样直接Push给用户呢?其实这也就是传统的Pull方式存在的意义:

客户端是灵活的

邮件服务器存在的一个必要性就是它总是连接到网络的,而用户是随机接入的。邮件服务器不可能也不必要给用户定址,因为用户只是偶尔接入而且可能每次接入的网络都不一样。当新的邮件到达的时候,邮件服务器无法确定新的邮件应该被派送到哪个地址。所以只能是以用户主动请求。常见的Post Office Protocol(POP3),就是这样一种基于Pull方式的邮件协议。

而Internet Message Access Protocol (IMAP)则提供了对邮件提醒(询问)功能的支持,当邮件客户端收到一个来自Server的提醒时,它可以选择是否去Server获取新数据。能够选择是否获取新邮件,这是IMAP的一个主要特性。这种方式显然要比纯Pull的系统要灵活一些。不过另一方面,这种带提醒的消息方式无疑增加了往返的交互次数,这稍稍显得有些繁琐。

下面该谈谈本文的主角了---Direct Push

Direct Push是Exchange Server 2007中内建的一个特征。它是用来使移动设备通过运营商的蜂窝网络连接,与特定的Server保持一个总是更新着(Always-Up-To-Date)的状态。

Tips事实上在Exchange Server 2003 SP2的时候就引入了Direct Push的概念:可以参考http://msdn2.microsoft.com/en-us/library/aa446486.aspx

Direct Push引入了一个主动提醒的机制,你可以称它为“主动的IMAP”J,这种机制使得每当有新的内容待同步到设备上的时候,设备会收到一个提示(信息)。

Direct Push的条件

1) 移动设备

首先,你的移动设备必须是支持Direct Push的,一般来说OEM会把这点明显强调一些。比如我的i718开机的时候会有一个“Direct Push Technology”的Logo。这种支持说得详细一些就是要满足以下条件之一

Ø         一台具有电话功能并带有Messaging & Security Feature Pack (MSFP)的Windows Mobile 5.0设备(当然更高版本的亦可)。

Ø         一台具有电话功能,由Microsoft Exchange ActiveSync授权并专为兼容Direct Push而设计的移动设备(不一定是Windows Mobile的设备)。

2)服务器

Exchange Server 2007

Direct Push概述

下面来看看一个典型的Push Mail的工作过程是怎样的。默认情况下,Direct Push在Exchange2007中是被启用的。那些支持Direct Push的移动设备向Exchange Server发起一个HTTPS的长连接请求。同时,Exchange Server对它的用户们的邮箱活动进行监视,并能够在邮箱状态变化的时候给移动设备发送一个回应。

这里说的“邮箱状态变化”的范围是很广的,可能是新邮件到来,可能是删除了邮件,也可能是日程表或者联系人的任何变化。

如果这样一些改变发生在那个HTTPS长连接请求的生命周期内,Exchange Server会立即发起一个回应给用户的移动终端,提醒该移动设备有了新的变化,须要重新同步移动设备到Exchange Server以获取更新的信息,然后移动设备会发起一个同步的请求给server。同步完成以后,一条新的长连接HTTPS的请求又会生成,如此反复。这样反复的请求,保证了用户的Email,日历,联系人和任务等信息都会相对及时地被Push到Mobile设备,使得用户即便不在PC机前也可以与Exchange server保持一个同步更新的状态。

Direct Push 拓扑结构

图2描述了一个典型的Exchange Server 2007为Direct Push配置的拓扑结构。

2 Direct Push的网络模型

下面我们对照图2来看看Direct Push的运作方式:

1)     一台已经配置为与某Exchange Server 2007同步的移动设备发起一个HTTPS的请求给服务器。这个请求就是我们通常所说的Ping。这个请求告诉服务器,请它在接下来的15分钟内,当邮件服务器上用户的任何文件夹发生任何改变的时候给我们的移送设备发送一个提醒。接下来的时间我们的移动设备就处于待命状态,等待消息。这里的15分钟的间隔,就是所谓的心跳(heartbeat)间隔。

2)     如果在这15分钟内,没有任何条目发生改变,服务器会返回一个HTTP 200的ok消息。我们的移动设备收到这个消息,返回到活动状态,并重新发起请求。

3)     在15分钟的heartbeat中,如果有任何改变或者收到新的条目,服务器会发送一个响应通知移动设备有新邮件或者邮箱的某些条目改变了,并告诉移动设备发生改变的文件夹的名字。移动设备收到这条消息之后,它会发起一个与有变动的文件夹同步的请求,与服务器上的更新内容同步。在同步完成的时候,移动设备又会发起一个新的ping请求,于是又开始一段新的heartbeat。

Direct Push的校正机制

Direct Push依赖于一个支持HTTPS长连接的网络环境。如果移动设备的网络或者防火墙不支持长连接的HTTPS请求会怎么办呢?下面来看看Direct Push在传输网络超时时间小于heartbeat时间的情况下是如何工作的:

(我们先假设移动设备所在网络超时时间为13分钟)

1)     移动设备发起一个HTTPS的长连接请求给服务器。希望在接下来的15分钟内,邮件服务器上用户的文件夹有任何变化的时候能得到一个提醒。如果没有变化,服务器就应返回一个HTTP 200的OK消息,这一步跟前面是完全一样的。

2)     如果在这15分钟内,服务器没有任何回应给移动设备,移动设备会推断出可能是到服务器的连接超时了。它会重新发起一个HTTPS的请求,但是这一次它会使用一个只有8分钟的heartbeat的请求。

[1] [2]  下一页

  • 打印文档
  • 推荐好友
  • 返回顶部
  • 增大字体
  • 减少字体
关于本站 | 工作机会 | 合作网站 | 广告服务 | 市场合作| 联系我们 | 抽奖活动
版权所有: 武汉威俊科技有限公司 Copyright 2005-2007 www.ITCNW.COM All rights reserved