Jazz 平台基于客户机/服务器体系结构。Jazz 服务器通常在受保护的服务器级机器上运行,它主管一组服务并在存储库中主管数据。远程客户机使用 HTTP 通过网络与 Jazz 服务器进行通信。远程客户机具有许多种形式,其精髓为,在 IDE 中集成 Jazz 平台支持,并由参与协作软件开发的用户驱动。其他远程客户机(例如特定于 Jazz 的命令行工具或 Ant 脚本)以无外设方式工作。其他人使用 Web 浏览器来直接访问服务器,而不需要在他们的机器上安装特定于 Jazz 的软件。
Jazz 平台包含匹配的部件,即服务和客户机库。服务在服务器端运行。服务实现是使用 Java 编写的。服务通过它的服务接口接受访问。服务接口用作 Web Service 接口(用于从客户机到服务器的同步 RPC 样式通信)的 Java 服务定义。
相应的客户机端部分是一个基于 Java 的客户机库,这个库用于公布客户机接口。客户机库调用相应的服务接口,这些调用通过网络发送到服务器上的相应服务以进行处理。客户机库提供了高速缓存、事件通知以及其他使 API 比原始服务接口更易于使用的功能。
基于 Java 的 Jazz 客户机(例如 Eclipse IDE 和 Ant)使用客户机接口中的方法。(可以编写类似的客户机库以供并非基于 Java 的客户机使用。)
Web 浏览器客户机以类似的方式使用更适合于从 JavaScript 中进行访问的相关服务接口进行处理(在随后有关 Web UI 的章节中描述)。
Jazz 平台具有模块化的可扩展体系结构。典型模块(称为 Jazz 组件)提供的功能帮助您处理软件开发生命周期的某个构面,例如缺陷跟踪或自动执行构建。典型组件提供了一个或多个服务和相应的客户机库,此外,还提供了构建于这些较低层之上并特定于域的 UI 部件。在 Jazz 服务器上安装组件将使该组件的服务可供广泛使用,而在 Jazz 客户机上安装组件将使用户能够访问新服务。Jazz 组件可以独立工作(仅依赖于基本的内置功能),也可以使用由其他已安装的组件提供的功能。
虽然“组件”这一概念对于说明 Jazz 平台的扩展方式而言十分方便,但 Jazz 未提供新的通用组件机制。而是,Jazz 平台在服务器和基于 Java 的客户机上都利用 Eclipse 平台的可扩展性机制。(读者如果不熟悉 Eclipse 平台中有关插件和扩展点的概念,那么应该阅读“Eclipse 平台技术概述”的“平台运行时和插件体系结构”一节以了解背景信息。)组件以 Eclipse 插件方式打包,并以 Eclipse 扩展点方式添加对其他组件的扩展。单一组件由一组插件组成,某些插件安装在服务器上,另一些则安装在客户机上。
Jazz 组件原型由 5 个插件组成:
服务插件、公共插件和 Web UI 插件安装在服务器上。
插件使用扩展点向 Jazz 注册。组件的公共插件(此插件同时安装在客户机和服务器上)通过扩展点注册该组件的服务接口。服务插件通过仅存在于服务器端的扩展点来注册相应的服务实现。客户机库插件通过仅存在于客户机端的扩展点来注册客户机接口。这些添加项包含该组件的标识字符串。添加项用于在运行时将各个组件结合到一起。
组件的客户机 UI 和客户机库的客户机端插件将安装到 Eclipse IDE 中。客户机 UI 插件通过 Eclipse 平台扩展点来添加它们的视图和编辑器等内容;而客户机库插件通过特定于 Jazz 的扩展点来注册它们的客户机接口。
客户机库用于在没有 OSGi 运行时的客户机(例如 Ant)中工作。客户机库只能依赖于其他组件的客户机库,而不能依赖于它们的服务或 UI。
组件必须声明对其他组件的任何依赖关系。依赖关系图不能包含循环。组件还可以声明它自己的扩展点,从而使其能够由其他组件扩展。
Jazz 服务器是基于 Java 的 Web 应用程序,它可以在任何与 Java EE 1.4 一致的应用程序服务器中运行。当前支持的应用程序服务器包括 Apache Tomcat 和 IBM WebSphere Application Server。Apache Tomcat 是开放式源代码 Servlet 容器,它可以安装在桌面级机器上。IBM WebSphere Application Server 是以各种规模提供的商业级产品解决方案。服务以及服务器端 Jazz API 的语义与所选应用程序服务器无关,这使将来发行版能够支持其他应用程序服务器。
熟悉 Eclipse 的读者知道,Jazz Web 应用程序在内部是围绕 OSGi 运行时构造的。Jazz Web 应用程序处理服务器上安装的所有 Jazz 组件的服务。在 Jazz 服务器上安装新组件涉及使该组件的服务器端插件(OSGi 捆绑软件)被主 Web 应用程序的 OSGi 运行时所知。捆绑软件的清单声明对其他已安装的组件的任何依赖关系;独立的扩展清单包含对各种扩展点的添加项。OSGi 运行时在启动时处理捆绑软件清单,从而确保所有已安装的组件都满足组件间的依赖关系。Jazz Web 应用程序管理扩展注册表(此注册表将所有已安装的组件的添加项聚集到一起),并且将组件的服务接口上的每个传入请求交付到相应服务以进行处理。