3.2 Toast的演变

在第二部分,我们将通过一些教程章节来开发Toast。每章会展示一个新概念,并在前面章节的基础上做出增量改进。伴着开发进度,我们会为每次迭代提供代码。为了便于讨论,章节中包含了代码片段。示例管理器可以从http://equinoxosgi.org上获得,其中包含每章的完整代码,允许你独立分步执行、浏览代码或者阅读文字。

你好,Toast(第4章)——该教程从一个空的工作空间开始,为你展示如何创建一个简单应急应用——在应用中,只要安全气囊展开,GPS位置将被读取并通过发出紧急呼救信号加以显示。这个简单例子随后被划分成三个bundle,其原理和所用工具都将一一阐述。在本节最后,将展示一个基于OSGi bundle集合的运行应用。

服务(第5章)——本章视线将转移到bundle概念之外,展示服务概念和bundle间的相互协作。除了以代码库的方式,bundle还可以通过OSGi服务注册中心来注册服务,从而允许其他bundle在非紧耦合的情况下使用它们提供的功能。

动态服务(第6章)——本章,在运行系统的生命周期中,我们将介绍bundle和服务可以动态增加和删除的概念。动态行为是基于OSGi系统的一个重要特点,也是你完成的许多设计和实现中的重中之重。在这部分讨论中,我们首先介绍OSGi服务追踪器(Service Trackers),随后一起回顾一个用于服务管理的第三方工具集(即服务激活器工具集,SAT)。最后,我们介绍OSGi声明式服务(DS)。教程剩余部分均采用了DS。在本节的最后,Toast中也有了此种场景下的动态特性。

客户端/服务器端交互(第7章)——此时Toast只是作为一个独立的OSGi应用运行。为了完整实现应急应用的场景,我们需要一个控制中心来接收紧急通知。本章中,我们将实现该控制中心,并将其作为一个单独的OSGi系统。我们使用HTTP来进行客户端系统和控制中心之间的通信。本章最后,Toast运行于独立的机器上,应急应用可以向控制中心发送紧急消息。

测试(第8章)——尽管此时Toast的领域逻辑稍微有些复杂,但我们将为已有的功能编写测试用例。本章使用EasyMock和JUnit来测试应急应用场景中的领域逻辑,以证明当领域逻辑以OSGi方式明确分隔后,创建一系列自动化测试用例的壁垒将大大降低。我们也将展示如何编写基于OSGi系统的测试用例。

打包(第9章)——现在是时候剪断连线并导出Toast了,这样Toast就可以在工作空间之外运行,也可以分发给其他人。在本章中,你将学习如何从你的工作空间构建、发布、压缩签名bundle,或如何导出bundle。我们也将展示如何与其他预构建bundle相结合,并最终分发到你的系统。

插件化服务(第10章)——在我们的应用中,此时的Toast中只有一些模拟的设备。在本章中,我们增加一个设备模拟器,它有一个简单的Web用户接口,允许你仿真操作车辆设备(例如GPS和安全气囊),从而可以与Toast的子系统交互。本章将展示如何构建你的系统,使其可以针对相同的服务支持可插拔的替代实现。

可扩展的用户界面(第11章)——从终端用户的视角来看,到目前为止Toast繁琐复杂,用途寥寥。在本章中,基于图形用户界面,我们增加了一个标准小部件工具集(SWT),从而允许用户操作安装好的Toast客户端子系统。我们也增加了对音频和气候控制的支持,并集成了谷歌地球来支持导航地图和向导。这些附加功能展示了一些有趣的OSGi概念,我们也将一一叙述。

动态配置(第12章)——Toast具有高度可配置性。在本章中,通过示例,你将掌握如何使用OSGi配置管理(OSGi Configuration Admin)服务来管理可配置性。我们向Toast中增加一个新的应用,来追踪车辆的位置并定期向控制中心报告。追踪应用使用了OSGi配置管理服务,来决定报告周期。

Web门户(第13章)——在本章,我们增加一个控制中心的Web UI。Web UI自身是相当简单的,但我们创建了一个可扩展的portal,来展示如何有效使用声明式服务和白板模式。

通过p2进行系统部署(第14章)——基于OSGi系统的一个重要特点是其部署的灵活性。远程信息管理系统尤其受益于远程管理软件及信息的能力。本章通过从Toast系统中安装、配置、更新和移除功能,介绍和展示如何使用Equinox p2预配置平台。

目录