• 您的位置: 紫荷精灵 >> 软件网络 >> 黑莓入门之 direct push技术原理(一)
  • 黑莓入门之 direct push技术原理(一)

  • 作者:admin  来源:原创  日期:2009/9/4 21:51:09
  •   微软Exchange Server一直以来都有给移动设备发送消息的能力,但是基于SMS的同步进程是昂贵的,而且用户也不能立即收到有新电子邮件的消息。在Exchange Server 2003升级维护包2(SP2)中,微软新引进了一种改进的名为直接推送(Direct Push)的同步技术来解决这些问题。它还提供了将安全策略应用到移动设备的能力。在这个教程里,Exchange的“最有价值专家”(MVP) Brien Posey解释了直接推送技术工作的原理和如何在Exchange 2003 SP2电子邮件环境中配置并实现直接推送技术。
      如果你对此处介绍的信息有任何评论或问题,请发送电子邮件至editor@searchexchange.com
      在SP2以前,Exchange Server 2003在有新邮件到达时会发送SMS消息告诉移动设备。然后移动设备启动与Exchange Server的同步进程来下载电子邮件。
      这种与移动设备的同步方法有以下几个缺点:
      ● 尽管无限制通知的费率计划变得越来越普遍,但是一些移动通讯提供商仍然按每条消息进行收费。如果你把消息的数量与费率乘起来,再与用户拥有的移动设备数量相乘,你可以看到这种服务费用增长的速度是非常迅速的。
      ● 基于SMS的同步过程,移动设备必须进行周期性检查来查看是否有新的消息到达(Exchange服务器发送的SMS消息是对设备检查的响应)。移动设备用户收到新电子邮件消息的频率完全取决于其移动设备检查新消息的频率是如何设置的。举例来说,一旦有新消息到达,用户就会马上收到随随时间变化的电子邮件消息。
      ● 频繁的基于SMS的同步过程对移动设备的电池寿命有消极影响。
      为了解决这些问题,微软开发了一种新的名为直接推送的同步技术。该技术首先在Exchange Server 2003 Service Pack 2中引进,但也用于Exchange Server 2007中。在这个教程里,所有配置说明都是关于Exchange 2003 SP2 Direct Push以及Windows Mobile 5.0和Windows Mobile 6.0设备的。

    第一部分:微软Exchange Direct Push技术的工作原理
      微软Direct Push技术不是使用SMS消息,而是靠在移动设备和Exchange Server之间维持一个常HTTPS连接来发挥作用的。因为这个连接总是处于可用状态,所以有新电子邮件的消息就几乎能即时转发给移动设备。
      Direct Push HTTPS连接的优缺点
      保持常HTTPS连接有一些顾虑。对于发起者来说,数据发送接收时某些移动设备不能接收到语音呼叫。另一个普遍的顾虑是发送和接收数据消耗了与语音呼叫同样的电力。
      虽然这是一些严重的问题,微软仍采取措施来最小化发送接收数据的影响。直接推送不会在几个小时内就完全消耗掉移动设备的电力。移动设备维持与Exchange Server的常HTTPS连接,但不会一直发送或接收数据。
      这种情况是可能的,因为HTTP和HTTPS协议是为分布式网络设计的,所以HTTP和HTTPS消息的发送和响应不是既时的。

      解决办法是设置一个与HTTP和HTTPS会话相联系的超时值。当发送者发送一个包时,要隔多久收到响应并不重要,只要响应在会话超时前到达即可。Direct Push通过设置超时值就可使移动设备在包间隙时间内处于休眠状态。

      Direct Push“心跳”消息

      Direct Push使用“心跳消息”(heartbeat messages)来保持Exchange服务器与移动设备之间的会话连接。所谓“心跳”,仅仅是指周期性发送一些消息来保持会话连接,允许移动设备检查同步过程是否有必要。
      当移动设备开始与Exchange Server的会话时,这一过程就开始了。在这一过程中,移动设备以预先定义的间隔发送“心跳”消息给服务器。此时,有以下3种情况之一发生。
      1. Exchange服务器以新的同步数据作为响应。这种情况下,新的数据与存储在移动设备中的数据进行同步。
      2. Exchange服务器以HTTP 200 OK消息作为响应。这意味着没有同步新的数据。更为重要的是,这还表示会话没有超时。
      当移动设备收到这个响应时,也许会尝试动态调整它的“心跳”间隔,因此心跳间隔的时间周期会变长。要知道,“心跳”间隔时间越长,电池消耗越低。更长的“心跳”间隔也减少了“心跳”被潜在语音呼叫打断的可能性。
      3. 会话在“心跳”间隔时间到来前超时。这种情况发生时,为了防止Direct Push会话超时,Exchange会自动减小“心跳”间隔。
      我们可以很清楚地看到Direct Push会话是如何通过发送“心跳”消息并等待响应来保持的。然而,根据我上面的描述,还似乎有很多未解决的偶然性。举例来说,Exchange Server如何知道“心跳”间隔调整的幅度为多大?或者如果有中断通信过程的意外事件发生会怎样呢?
      但是在实际过程中,却没有这么多的偶然性。微软在动态调整Direct Push“心跳”技术中积聚了很多人的才智。
      微软明白那些引起“心跳”异常的因素。举例来说,如果Exchange服务器突然比预期繁忙,于是服务器就不太可能在超时之前对心跳消息进行响应。如果是这种情况,Exchange Server设计了在调整好直接推送“心跳”间隔之前必须出现连续往返“心跳”的机制。
      微软在Direct Push中凝聚集体智慧的另一个表现是Exchange Server很聪明地知道,如果已知心跳超时的原因,它就不应该调整“心跳”间隔。
      比如,如果用户正在电话上通话,这时Exchange Server发送了一个“心跳”响应,那么移动设备将永远不会收到这个响应,于是“心跳”就会超时。然而,Exchange Direct Push知道超时只会出现在用户正在通话的情况下,因此不会调整“心跳”间隔。

      Direct Push“心跳”注册表项
      Direct Push“心跳”由以下四个注册表项控制:

      ● HeartbeatDefault
      ● HeartbeatIncrement
      ● HeartbeatMin
      ● HeartbeatMax

      这些值在注册表储存的位置如下:
      HKEY_LOCAL_MACHINE\Software\Microsoft\ActiveSync
      记住,编辑注册表是危险的,因为错误修改容易摧毁Windows和/或应用系统。在进行任何注册表修改前都要对系统进行完全备份。
      HeartbeatDefault是指调整前的初始心跳间隔。默认情况下,注册表项的这个值被设置成480秒,或8分钟。
      HeartbeatMin的注册表项表示“心跳”间隔时间的最小量。最小的“心跳”间隔与微软默认的心跳间隔相同,即480秒。微软推荐不要调整这个值,因为减小它会引起更多数量的心跳发生,这就会使移动设备消耗更多的电力。微软声称,减小这个值带来的性能提高远远不及对电池寿命造成的负面影响。
      HeartbeatMax是指“心跳”间隔时间的最大值。正如我前面所说,当移动设备证明它能处理更长的“心跳”间隔而没有超时,Exchange Server会动态增加“心跳”间隔时间。
      然而,为了防止Direct Push不确定地增加“心跳”间隔,应该有一个截止点。微软设置“心跳”间隔默认的最大值为1680秒(28分钟)。研究这个教程时,我发现因特网上有管理员声称能把HeartbeatMax值增加到45分钟,但微软建议不要超过默认值。

      默认值设为正好低于大多数网络的网络超时周期。如果你设置HeartbeatMax的值太高,移动设备会逐渐增加“心跳”周期到“心跳”超时临界点附近。这种情况下,Exchange Server会减小“心跳”间隔到一个可接受的水平,但是数据只有达到这个临界点才能被同步。所以最好是保留默认值不动,首先防止超时发生。

  • 上一篇:Exchange中的邮件直推(Push Mail)
    下一篇:黑莓入门之 direct push技术原理(二)