随着嵌入式系统在各种电子设备中的广泛应用,计算机技术的发展将进入一个普适计算(Pervasive Computing)阶段。随之而来的各种电子设备联网成为必然趋势。与人类生活息息相关的各种家电设备能够联成网络并接入互联网,人们可以在任何时间、任何地点统一控制各种家电协同工作,将极大地改变和影响人们的生活。本文探讨了这种普适计算机制的实现。
1 Jini技术
Jini技术是基于Java语言的新型分布式对等计算结构,是一种动态的自动化机制,它可以使各种数字设备无需配置、安装或人工干预,在一个临时的设备集合(联邦,federation)中共同工作。联邦中的任何设备无论大小都可以自行管理,组成一个服务网络,联邦中的每一成员都可以共享资源和服务。Jini结构提供一套机制使得电子设备和应用程序能够随时加入或退出联邦。
Jini由三部分组成:基础结构(Infrastructure)、编程模型和服务。这三部分虽有区别但又密不可分,基础结构支持并利用编程模型;服务内嵌于基础结构之中,服务对象包含并利用编程模型的接口进行服务之间的通信。基础结构解决设备和软件如何与网络连接并进行注册等基本问题。它由构成分布式联邦的组件组成,其最小内核为分布式安全系统、发现与加入协议(discovery and join)、服务协议和查找服务(lookup service)。分布式安全模型及其实现定义了软件实体的认证方式及操作权限;发现与加入协议定义了服务加入Jini系统的方法;查找服务则是供服务注册登记的场所,这里提供了可以使用的服务对象集合。编程模型也是分布式的,包括租借(leasing)、分布式的事务处理和事件处理三种重要接口。租借接口定义了基于时间的资源分配和释放方法;事务接口引入了一种面向对象的协议,使用表决和提交两个阶段来统一对象之间的相关行为,使得一个事件序列或全部完成或全都不发生。事件和通知接口将JavaBean组建所使用的事件模型扩展为分布式事件模型,支持Jini服务基于事件的通信。服务是Jini体系的核心,基础结构和编程模型共同支持服务的提交注册及服务的发现,服务使用基础结构完成服务之间的相互调用、相互发现并向其他服务发布本服务的出现。服务在Jini环境中以对象的形式出现,它通过接口来定义其提供的可供其他服务使用的操作和特性。
Jini使用发现协议(discovery)搜索查找服务(lookup service),获得相应查找服务的代理接口,然后使用加入协议(join)将自己注册到查找服务中,这时该服务可以为其他服务所使用。想要使用其它服务的设备或应用程序,首先与其相邻的查找服务进行连接。这时可以看到本联邦内所有可用的服务,使用查找协议(lookup)将所感兴趣的服务的代理接口下载到本地之后就可以与服务提供者进行直接交互通信。同样当一个查找服务启动时,它也使用发现协议向服务广播自己的出现,以便服务进行注册登记。
图1对以上过程进行了形象描述:用发现协议搜索到查找服务,若已预置某个查找服务的URL则可直接进行通信;将服务代理对象注册到查找服务;服务客户将服务对象从查找服务处下载到本地;利用服务对象与服务提供者直接通信,使用该项服务。
2 蓝牙协议
蓝牙是一种低成本的技术,可以在依赖电池操作的目标机上实现低功耗、短距离的固定通信。这些目标机包括:PDA、无线电话、便携电脑和无线耳机等。
在蓝牙的拓扑中,一个主设备可以带多个从设备,并且维持7条链接。一般来说,在任何时刻,主设备会与一个从设备维持点对点通信。可以建立两种通信:一种以异步方式传输数据,另一种以同步方式传输声音。通信类型由主设备决定,并负责建立特殊应用所需的链接,直至应用将其终止。请注意:主从关系不能互换,互换技术用于 GSM的蜂窝式手机中,蓝牙不支持这种技术。同时,蓝牙只能支持短距离通信,最远10m。现在加强性标准可以将距离提高到100m,要求便携式设备的电池寿命更长。蓝牙技术不会替换IEEE 802.11中所提出的无线LAN的功能。相比较而言,蓝牙只能在744Mbps的数据率上操作。当然,IEEE 802.11 LAN也更加昂贵。
蓝牙可以支持无线主机控制器(负责空中链路管理、调制解调器、声音编码/解码)与另外一台带有协议栈和应用软件的主机之间的通信。如果应用软件想要控制无线主机控制器,那么就需要链路管理代理(link management proxy)模块,它可以提供应用程序接口。这一模块在蓝牙标准中没有说明,但是如果希望通过主机控制接口进行通信,协议栈中应包括这一模块。栈接口提供的主要功能就是初始化发现进程和连接进程。发现进程将管理信息发送到10m范围内的所有蓝牙设备,以便获取可用的蓝牙设备列表;连接进程可以与一个或多个可 用的蓝牙设备建立连接。所有的应用程序都必须使用这些进程,它们是GAP(General Access Protocol)的一部分,在任何应用使用链路前,必须将GAP与蓝牙设备相连。
链路安全将利用鉴别进程,在实现子网时,用来确认某设备是否可以与另一设备互连。鉴别操作由无线主机控制器完成,鉴别命令由安全管理模块发出。该模块会访问以前完成的操作进程,可以与蓝牙设备进行数据库信息的连接,这些记录存在设备数据库中,由安全数据库来维护主蓝牙设备所提供的与三种安全级别有关的服务纪录。建立两个设备之间的连接时,安全管理模块会做出反应,查询两个设备的数据库,请求无线控制器开始鉴别进程或忽略鉴别进程。数据链路层加密也是同样的道理。栈控制器是另外一个包含在栈软件中的模块,可以提供接口调用栈软件,从而继续处理由主机或其他蓝牙设备通过无线主机控制器发来的排序或缓冲数据。更为重要的是,栈管理模块管理所有的内部栈时钟,因而使用该栈十分轻松,而且非常容易移植到其他的操作系统上。其余模块按照应用要求分类,在运行蓝牙协议时,这也是实际蓝牙连接的情况。
3 Jini与蓝牙技术的结合应用方案
3.1 Jini与蓝牙技术的比较
Jini与蓝牙技术是两种互补性很强的技术。蓝牙技术主要实现邻近的电子设备无线连接,是硬件设备的无线互连协议;Jini则是实现分布式软件服务(包括无线设备)的软件技术。蓝牙技术是对固定的一组协议间互操作的静态说明;而Jini的“移动代码”代理服务对象可以动态地互操作。两者在ISO/OSI的体系结构中的位置如图2所示。Jini主要位于表示层和会话层,而蓝牙的协议栈贯穿了整个体系结构。Jini的发现协议和分布式安全模型加强了蓝牙技术的发现进程和安全管理模块。
3.2 应用方案
Jini的注册和注销服务与蓝牙设备在网络中的加入和退出非常类似。Jini控制网络服务的租借,始终使查找服务保持最新状态。在下一节中将详细描述应用实例,本节进行方案设计。
通常有三种形式来实现其Jini网络功能:基于完整虚机的设备实现,基于嵌入式虚机的设备实现和基于共享虚机的设备实现。
基于完整虚机设备实现中的设备指一般的通用设备,具有网络连接、较强的计算存储功能,能够运行完整的 Java虚机环境。在这种设备上能够实现Jini系统的所有功能,如各种协议功能、RMI、租借更新功能、动态代码移动功能、分布式安全机制等。Jini是位于操作系统和虚拟机之上的功能层,多个设备随机联网形成一分布式资源共享系统,网络传输协议一般由操作系统分别采用TCP/IP协议有线方式和基于蓝牙协议的无线连接方式两种。本设计方案就是基于蓝牙协议的无线连接方式实现。图3描述了一种应用方案。服务客户、设备和网络代理通过蓝牙网络进行连接,同时也支持TCP/IP协议。网络中包含可以访问的设备数据库、查找服务。蓝牙网络通过SDP协议负责设备加入网络,使设备能够查询、发现最邻近的设备,并对这些设备进行访问,从而实现远程控制。远程控制实现蓝牙网络与Jini的查找服务对话、询问网络可用设备的功能。查找服务保持网络中运行的所有设备的动态列表,如:PDA、电话和CD播放机等。当服务客户(远程控制)请求时,所有这些设备将相关的驱动程序发送到服务客户。当设备不再用时,通过租借终止对网络发出警告,这是Jini的功能,主要用Java的RMI来实现。这种通信和保持服务更新的方式使Jini与蓝牙网络进行了很好的结合。