本文假设您至少听说过两个商标词:Eclipse 和 WebSphere。Eclipse 是一种工具和客户端平台技术,而 WebSphere 更像是服务器端的中间件平台。在本文中,您将学习在结合使用这些技术提交端到端解决方案时,您可以实现的奇特功能。
富客户端应用程序 指基于桌面的胖应用程序,而瘦客户端应用程序 是指基于 Web 的应用程序。很久以来,部署和维护富客户端比较困难;另一方面,瘦客户端的 UI 也没有胖/富客户端的 UI 丰富,而且响应性也不如后者。
随着技术的进步,出现了用于构建最终用户应用程序的新一代平台和框架。异步 JavaScript 和 XML (AJAX)、富 Internet 应用程序 (RIA)、富客户端平台 (RCP) 和 Flash 提供的的技术、框架和技巧,允许开发人员构建具有较丰富的用户界面和更强响应能力的最终用户应用程序。这通常由客户端进程实现。同时,RCP 技术现在可以为方便部署和管理提供更好的支持。
因此,现在为相同的开发人员提供了两种竞争技术。Web 应用程序仍有很大优势,尤其是由 AJAX 和 Web 2.0 之类的技术带来的进步。同时,富客户端前端更适合于某些类别的应用程序。一些示例有 Bank Teller 应用程序或 Call Center 应用程序。在这些情况下,应用程序通常具有下列某些特征:
- 它们大多数是内部应用程序、内部网应用程序,目标是数百个或几千个用户。
- 它们对用户界面有非常严格的外观要求,包括字体、颜色和小部件的外观。
- 要求它们具有更高的导航效率和响应能力,以及尽可能多的快捷按键,因为它们由超级用户每天频繁使用。
- 这些应用程序通常具有非常大的数据集,并且每屏显示的信息密度非常高。它们通常在客户端维护大量会话数据,这有助于提高性能。
- 它们可以与桌面和其他桌面应用程序很好地集成。
- 它们通常是工作流或协作类型的应用程序,并且脱机工作和任务切换的能力非常重要。
在这些情况下,为您的参与者构建富 Web 前端并不合适,胖客户端功能才是您真正需要的。这里的富客户端和胖客户端将保留,并且研究公司的数据确认,新一代桌面客户端的接受率在逐渐增长;Giga 小组的报告“返回富客户端”(请参见参考资料)预测在以后的三年中,富浏览器客户端将增长 350%,独立客户端将增长 250%,而 HTML 将下降 50%。
在您真正远离 RIA 的狂热,并选择现实的胖客户端解决方案后,您的目标是什么呢?答:您选择将为您处理工作的 RCP。从本质上说,RCP 概念将框架带入了 Java 桌面应用程序世界,就像所有 Web 框架为 J2EE/Java EE 世界执行的任务一样。如果您不是 Java 新手,并且在长期关注它的发展,则一定会了解 Eclipse 正在空前流行,Eclipse 富客户端平台 (RCP) 正在成为实际的 Java 桌面客户端框架。
将 Eclipse 平台设计为开放工具平台时,它的体系结构仅允许您构建任何客户端应用程序及其组件。构建富客户端应用程序所需的最小插件集总称为富客户端平台。如图 1 所示,Eclipse 富客户端平台由以下组件组成:Eclipse Runtime with OSGi(开放服务网关活动)、SWT(标准小部件工具包)、JFace 和 Workbench UI。
图 1. Eclipse 富客户端平台
Eclipse RCP 运行时占用更小的空间。最新的 Eclipse 3.2 RCP 运行时只占用 9MB。
尽管它较小,但是它有许多灵活的功能,可以帮助您开发下一代桌面 Java 应用程序。
将客户端框架用作 Eclipse RCP 有许多好处:
许多人使用 Eclipse RCP 是因为它允许在多个平台上快速构建具有本机和专业外观的应用程序,使人们把重点集中在他们的增值服务上,这一切都得益于优秀的 SWT 技术。
Eclipse RCP 开发人员还赏识组成 RCP 的组件质量高、维护积极并且是开放源代码。他们在最初采用 RCP 之后,常常会发现有许多其他组件可以重用(例如,Help UI、Update Manager、Cheat Sheets 和 Intro 等)。
有些 Eclipse 采用者还发现 Eclipse 固有的可扩展性允许他们不仅可以构建封闭式产品,而且还可以在他们自已的域中构建开放的平台(如 Eclipse IDE)。
在 Eclipse 中,集成完全独立的组件非常容易。独立组件的视图可以很容易地共享工作区。所以,使用时会自然选择该视图。
Eclipse RCP 拥有客户端应用程序集成平台,其中 SWT、WEB、Swing、Visual Basic、ActiveX 和本机应用程序都可以共存。
Eclipse RCP 为您提供了构建下一个胖客户端应用程序的坚实基础。但是它不能提供某些高级桌面应用程序所需的一些重要功能。例如,安全(包括身份验证和授权)、脱机功能和部署。IBM 托管的客户机中间件技术可以提供这些功能。
图 2:托管的客户端容器
在上面的图 2 中,托管的客户端服务基于 OSGi 和服务管理框架 (SMF) 来提供 JVM 中服务和应用程序的独立生命周期管理。平台管理构建在这些托管的客户端服务之上,并使用 SyncML 协议支持应用程序的随需应变的管理(范围从被动分发到主动的智能管理)。
访问服务层可以将后端编程模型和 API 向外扩展到客户端。所以您可以在此处的客户端容器承载 Web 应用程序、数据库应用程序、Web 服务和更多权限。访问服务层还允许访问电子商务应用程序、服务和数据。它同时支持连接的和断开连接的操作。
交互服务可以提供对不同类型客户端的支持:基于浏览器的 HTML、WML、JSPs/Servlets/Portlet 或者 SWT 或 Swing 之类的胖图形用户界面客户端。
协作服务是构建高级实时协作应用程序的框架。
从产品角度来看,用于 Window 和 Linux 的 WebSphere Everyplace Deployment(以下称为 WebSphere Everyplace Deployment)提供了部署解决方案应用程序所需的所有内容,并包括所有的交互服务、访问服务和上图的基本核心托管客户端服务和平台管理。IBM Workplace Managed Client(以下称为 Workplace Managed Client)构建在 WebSphere Everyplace Deployment 之上,并添加了协作功能,以便支持丰富的协作。
所以,如果您要部署 Eclipse RCP 应用程序,可以选择以下三个堆栈之一:基本 Eclipse RCP、IBM WebSphere Everyplace Deployment 或 IBM Workplace Managed Client。
Eclipse RCP、WebSphere Everyplace Deployment 和 Workplace Managed Client 是 IBM 的桌面应用程序策略。它们为下一代客户端软件奠定了基础。某些即将发布的 IBM 软件产品已经利用了这些现有的客户端中间件堆栈。其中的一些例子包括:
Lotus Sametime Connect 7.5:即时消息(图 3)
图 3. Lotus Sametime Connect
Hannover:IBM Lotus Notes 的下一个版本(图 4)
图 4. Notes 的下一个版本
我们已经讨论了可用于为 WebSphere 平台开发新应用程序的客户端框架。但是 WebSphere 平台到底是什么?
WebSphere 是 IBM 的集成软件平台。它包括整个中间件基础结构。
传统上,当我们讨论 WebSphere 时,指的是 WebSphere Application Server,它是基于 Java EE 标准 API 和规范的 Java 应用服务器平台。但 WebSphere 正逐渐成为基于开放标准的集成平台(如 Web 服务、BPEL、SCA、SDO 等)。基于 WebSphere Application Server 和 WebSphere Enterprise Service Bus 的 WebSphere Process Server 为面向服务的模块化应用程序提供了基础,并支持符合业务规则的应用程序,促进了支持业务流程的应用程序的发展。
WebSphere Application Server 支持全部的开放标准编程接口。从 J2EE 角度来看,WebSphere Application Server 完全支持 J2EE 1.4 API:
- JDK 1.4、EJB 2.1、Servlet 2.4、JSP 2.0、JMS 1.1 和 JDBC 3.0
- JAX-RPC、SAAJ、Web Services for J2EE、JAXR
- Java Authorization Contract for Containers
- J2EE Management (JMX) 1.0、J2EE Deployment 1.1
- J2EE Connectors 1.5
除了开放标准支持外,WebSphere Application Server 和 WebSphere Process Server 还具有满足高级应用程序要求和新出现的用于 SOA 开放标准的 API 扩展支持:
- 编程模型扩展,包括异步 Bean、工作区、动态缓存、ObjectGrid 等
- WebSphere 平台消息传递:WebSphere Application Server 通过使用 JMS 提供程序及其相关的消息传递系统支持异步消息传递。当您配置了可以通过提供的缺省消息传递程序访问的服务集成总线时,IBM WebSphere Application Server 的服务集成技术可以充当消息传递系统。
- Service Component Architecture (SCA):SCA 为实现 IT 服务提供了一个开放的、与技术无关的模型,它根据业务功能定义服务,使应用程序开发人员更易于访问中间件功能。SCA 还为单个服务集合的业务解决方案的组装提供了一个模型,并控制解决方案的各个方面,如访问方法和安全。
- Service Data Object (SDO):SDO 提供了访问许多不同种类数据的公共方法,从而对 SCA 进行了补充。
从客户端应用程序角度来看,WebSphere Application Server 和 WebSphere Process Server 承载了各种组件和资源。其中包括:
- Web 服务
- Servlet/JavaServer™ Pages (JSP™)
- Portlet
- Enterprise JavaBeans™ (EJB)
- SCA 组件
- 服务集成总线消息传递资源
- 消息传递资源
- 数据访问资源
- BPEL 流程
通过不同的协议和传输可访问上述服务。我们将重点介绍以下传输:
- HTTP、
- SOAP/HTTP、SOAP/JMS
- RMI、RMI-IIOP
- TCP
传统上,WebSphere 平台客户端应用程序主要是在 WebSphere 或一些其他应用服务器内部运行的基于 Web 的应用程序。它们大多数是基于 Servlet、JSP 或 Portlet 的程序。它们可以满足许多客户应用场景和需要。但是,正如我们在前一部分所讨论的,某些类型的应用程序并不像 Web 应用程序那样能够很好地运行,无论它们使用何种 Web 技术。所以需要让 WebSphere 平台服务更适用于独立应用程序。
而且,如果我们观察建立良好的服务器平台,可以了解到大多数都紧密集成了富桌面客户端平台,无论是 IBM Domino、Window Server 还是 SAP 平台。
由于 Eclipse RCP 的出现,带有 RCP 前端和 J2EE 中间件后端的企业应用程序成为最佳组合。确实,我们已经开始看到一些基于这种体系结构的商业产品。其中一个示例是 IBM Sales Center for WebSphere Commerce(以下称为 Sales Center)
IBM Sales Center for WebSphere Commerce:
从图 5 可以看到,Sales Center 充当客户端应用程序,与构建在 WebSphere Application Server 之上的后端 WebSphere Commerce Server 进行交互。所使用的通信协议是 SOAP/HTTP。
图 5. Sales Center 客户端/服务器体系结构
使用 Eclipse 富客户端接口的好处
Sales Center 利用 WebSphere Commerce 的目录、订单管理、促销和销售策划功能,向联系中心代表提供他们为跨渠道客户提供服务和追加销售所需的功能。它通过为提高工作效率和多任务而设计的可自定义、高性能用户界面支持大量联系中心所需的速度和工作效率。
图 6. IBM Sales Center for WebSphere Commerce
其主要特性包括:
- 富客户端、高性能用户界面。
- 基于 Eclipse 的解决方案,易于自定义。
- 利用用于 Windows 和 Linux 的 WebSphere Everyplace Deployment。
- 客户端计算机上安装完整的应用程序
- 集中式客户端管理、部署和更新
如果以前使用过 WebSphere Application Server,您就会知道 JNDI 命名库对应用服务器是多么重要。在许多情况下,您可能需要浏览 JNDI 名称树,以了解应用程序或调试应用程序的问题。在 WebSphere Application Server 中有一个命令行命名空间转储实用工具,但是我希望使用图形较多、用户友好的界面。这是我决定编写 RCP 应用程序以探索 JNDI 树的原因。它仅使用 Eclipse RCP 框架。它仅有一个名为 JNDIExplorer 的视图(图 7)。但是,有了 Eclipse 插件体系结构,您可以对此框架的外观进行更多的自定义。从内部机制看,它使用 JNDI API 与 WebSphere Application Server 命名服务进行通信,以检索信息。
它是一个在许多情况下都可以使用的小巧的实用工具。在没有 Web 服务器的情况下,它可以单独运行,而无需安装到 Web 服务器。您不需要将其部署到许多最终用户。所以,它是桌面客户端应用程序的优秀用例。
图 7. 示例 RCP 应用程序
在本文中,我们讨论了在开发某些类型的 WebSphere 平台客户端应用程序时,为什么应该重点考虑将 Eclipse RCP 作为可行的、有吸引力的选项。WebSphere 平台提供了经验证的服务器端技术,而 Eclipse RCP 是流行的客户端框架。使 WebSphere 服务器承载的某些企业服务用于 RCP 客户端可以得到更好的性能和交互,从而可以更好地满足最终用户的需求。
- 您可以参阅本文在 developerWorks 全球站点上的 英文原文 。
- It's Not Over Till the Fat Client Sings
- Eclipse Rich Client Platform
- Eclipse RCP Tutorial on developerWorks - Part 1
- Eclipse RCP Tutorial on developerWorks - Part 2
- WebSphere 新手入门
- 评论: Bobby Woolf:从何学习 WebSphere?
- WebSphere Everyplace Deployment
- IBM Workplace Managed Client