SENS:系统事件通知服务 和 WMI 支持灵活而有效的移动网络计算

Aspi
本文假设您熟悉 WMI、ATL 和 C++
下载本文的代码: SENS.exe (107 KB)
摘要 联网应用程序必须处理大量连接问题,这些问题的范围涉及到超时、拥塞和不可用等 。如果这些应用程序可以检查当前连接状态,并且在断开连接时能够缓存传输,则它们可以变得更为高效 。值得庆幸的是,系统事件通知系统 (SENS) 和管理规范 (WMI) 都可以发送通知,以使应用程序可以了解网络状态 。
在本文中,作者介绍了多个 SENS 接口的用法,包括和— 它们分别为连接/断开连接和登录/注销触发事件 。作者随后说明了如何预订上述各个事件,并且紧接着讨论了何时可以改而使用 WMI 事件 。
移动计算正在变得越来越流行;与此同时,几乎所有有用的信息都通过网络流入计算机 。用户可以将便携式计算机连接到低带宽、高可用性无线网络(如 CDPD 和的 RD-LAP),或者连接到带宽较高、可用性较低的网络(如办公室中的有线插接站或无线局域网) 。由于存在诸如开销、缺少可用性和位置等限制性因素,因此移动计算机无法永久性地连接到网络 。所以,用于移动 PC 的应用程序必须能够在瞬态网络中正常工作 。在本文中,我将讨论两种技术 — 系统事件通知系统 (SENS) 和管理规范 (WMI),这些技术可以确保应用程序在移动情况下正常工作 。
可以通过本文下载一个示例,它预订 SENS 通知,并且还注册和处理 WMI 事件(参见本文顶部的链接) 。当各个通知发生时,它在其唯一窗口中的列表框中显示相应的通知,并显示时间戳 。对于要求您注销的通知,您还可以将该示例作为服务运行 。当作为服务运行时,该示例会将所有通知记录到一个名为 .log 的文件中 。
瞬态网络应用程序
瞬态网络的速度和可靠性决定了移动设备上的应用程序的可感可用性和响应性 。让我们考察几个与将在瞬态网络环境中使用的应用程序有关的设计注意事项 。
首先,您应该期望网络连接畅通无阻 。需要特别提到的是,打开网络连接的程序应该能够发送和接收数据 。发送和接收数据时发生的问题的原因可能是网络拥塞或不可用、用户的网卡存在问题或者设备离开有效范围 。传统应用程序通常不够健壮,因而无法在发生连接断开、应用程序关闭或要求用户响应的错误消息时继续正常运行 。如果应用程序在发送或接收数据时超时,则您可以假设网络连接因为用户离开有效范围而丢失,但您实际上只能进行猜测 。等待超时通常意味着您在做出决定之前必须让整个超时值到期 。通常,持续的网络拥塞迫使您要求更长的超时,因为您不希望过早地放弃连接 。因而,这就意味着应用程序在断定连接丢失之前,必须等待一段时间 。
更常见的情况是,每个远程位置都可能在单独的子网上 。移动用户需要在游历这些子网的同时维持到网络的持续连接 。虚拟专用网络 (VPN) 是一种比较流行的穿越多个子网的方法;移动 IP 是一种普及程度略低的选择 。由一些无线 LAN (WLAN) 供应商提供的“跨路由器漫游”功能正在受到越来越多的欢迎,这些供应商包括() 和() 等 。
如果网络协议不是以透明方式支持跨子网漫游,则应用程序可能发现设备位于有效范围内并且网络可用,但它的 IP 地址可能在新的子网上无效 。换句话说,您可能在无线(链路)层连接,而不是在 TCP/IP(网络)层连接 。较新的操作系统如2000 和XP 等会很有用,因为它们能够感知网络媒体或连接是否存在 。这一功能可用于通过域主机配置协议 (DHCP) 更新 IP 地址 。
瞬态环境中的另一个设计注意事项是设备的电源状态 。WLAN PC 卡和调制解调器会消耗大量电源,因此移动用户必须优先考虑电池节电的问题 。应用程序可以通过尽可能地对网络活动进行批处理来缓解这一问题,这样设备就可以在不使用时进入低电源消耗状态 。