站内搜索: 请输入搜索关键词

当前页面: 开发资料首页Eclipse 专题Eclipse RCP:用于构建平台的平台 - 组件

Eclipse RCP:用于构建平台的平台 - 组件

摘要: 技术存在着一定的周期性。在经历了一段由瘦客户端统治的时期后,富客户端技术开始了它的回归。

  技术存在着一定的周期性。在经历了一段由瘦客户端统治的时期后,富客户端技术开始了它的回归。大量的组织正在将它们的应用程序构建成富客户端,其中许多组织将其应用程序建立在RCP(Eclipse Rich Client Platform)的基础上。术语富客户端首先表明此应用程序为用户提供丰富的体验;其次,它还表明此应用程序是某台服务器的客户端。虽然富客户端并不必须具有对应的服务器组件,但是它们通常会有对应的服务器组件。

  富客户端在很多方面与胖客户端类似。它们两者都能为用户带来本地桌面体验,并提供那些通过瘦客户端技术很难、不方便或不可能交付的信息和功能。然而,富客户端可提供更多好的特性。胖客户端通常是一个难以部署和更新的大型单体应用程序,而富客户端在体积上更为轻巧,并且是基于部署和更新相对容易的组件模型的。从历史上来看,胖客户端是特定于平台的;而当今的富客户端技术发挥了底层平台的强大功能,同时隐藏了底层平台的细节,从而允许开发人员将精力集中于任务而不是各种特殊平台的特殊细节。

  相对于胖客户端,富客户端还具有更好的可伸缩性。传统上,胖客户端直接与数据库相连接。这样就限制了胖客户端的运行环境(防火墙可能会限制胖客户端与数据库之间的连接),同时应用程序的可伸缩性(客户端与服务器之间的连接总数)也可能会受到数据库的限制。富客户端通常利用应用服务器,后者负责建立到数据库的连接。这种配置非常灵活(防火墙友好的)并且具有高度的可伸缩性。当然,技术中并没有必然限制胖客户端与应用服务器进行通信的东西,只不过在胖客户端技术流行的时候,应用服务器还没出现罢了。

  没有规则规定富客户端应用程序必须是某台对应服务器的客户端。许多利用富客户端技术的组织正在构建健壮、可扩展、可更新、本地化的独立应用程序。同样,虽然富客户端通常利用应用服务器,但是并不存在要求必须这么做的规则或技术限制。没有理由说富客户端应用程序不能直接访问数据库。

  富客户端技术代表了胖客户端与瘦客户端二者优势的结合:丰富的用户体验、高可伸缩性、平台独立,以及非常易于部署和更新。

  Eclipse RCP是一项位于Eclipse平台核心的功能。大多数人想到Eclipse时,他们会想到Java集成开发环境(IDE)。如果您将Eclipse中关于IDE的内容剥去,剩下的就是一个提供基本工作台功能的核心,这些功能包括对可移动和可叠加的窗口组件(编辑器和视图)、菜单、工具栏、按钮、表格、树形结构等等的支持。这个核心功能就是Eclipse RCP。

  Eclipse RCP为应用程序开发人员提供了:

  ·应用程序和特性的一致且本地的外观

  ·公共应用程序服务,例如窗口管理、更新管理、帮助和选择管理

  ·本地的外观,利用Windows、Mac OS X、Linux、Solaris、HP-UX、AIX和嵌入式设备上的实际平台窗口部件

  ·标准化的组件模型

  ·普及的可扩展性

  ·整合的更新机制

  ·顶级开发工具(Eclipse 软件开发包(SDK)是世界级的软件开发环境)

  尽管使用这个术语事实上是不合适的,但Eclipse RCP仍可以被视为构建富客户端应用程序的中间件。它提供应用程序所需的基础设施,从而允许开发人员将精力集中于核心应用程序功能而不是细节。别再浪费时间了:立即使用Eclipse RCP吧。

  组件

  Eclipse RCP由许多组件构成,每个组件负责整个环境中相应部分的功能。事实上,Eclipse RCP几乎所有的部分都是由组件构成的;除了少量的引导代码,RCP的每一部分都是一个组件。在Eclipse世界中,组件更多时候是被称为插件(或者在OSGI词汇中被称为包裹)。术语“插件”表明了这项组件功能在某种程度上属于二级功能,或者它只是内置功能的一个附加物。但事实并非如此;Eclipse RCP对待所有的插件都是平等的,内置和定制插件之间并没有明确的概念界限。您创建的用于实现应用程序行为的插件可与构成Eclipse RCP的插件一起运行。

  通常,富客户端应用程序的开发都是从单一插件开始的。在一个单独的插件中,您可以为您的应用程序定义整个用户界面、业务逻辑和对象模型。创建一个新的Eclipse RCP应用程序非常容易,您只需选择菜单项File>New>Project...、选择创建新的Plug-in Project(插件项目)、然后遵循出现的向导中的步骤。在向导的Content(内容)页面上,对于问题“Would you like to create a rich client application?(您是否希望建立一个富客户端应用程序?)”,记得选择“Yes(是)”。图1中显示的是向导的Templates(模板)页面;在这里我们选择创建“RCP application with a view(带有视图的RCP应用程序)”。

  
  图1. New Plug-in Project向导的Templates页面

  这将创建一个包含RCP应用程序所需部分的新插件,其中包括工作台(菜单栏和工具栏)设置和包含一个表格的单一视图(参见图2)。

  
  图2. 向导创建了一个具有全部功能的RCP应用程序

  向导生成了以下类:

  Application.java

  生成的Application类包含一个单一方法,run(Object args),此方法负责运行应用程序(真奇怪)。这个方法引导并打开工作台窗口,当它退出时,应用程序将关闭。

  ApplicationActionBarAdvisor.java

  ApplicationActionBarAdvisor类负责构建菜单栏、工具栏和状态行。这一生成的类会创建一个带有单一File菜单(其中包含Exit项)的菜单栏。您可以利用fillCoolBar(ICoolBarManager coolBar)方法为您的工作台窗口添加一个工具栏。类似地,您也可以用fillStatusLine(IStatusLineManager statusLine)来为工作台窗口添加一个状态行。

  ApplicationWorkbenchAdvisor.java

  ApplicationWorkbenchAdvisor类提供大量到应用程序生命周期的钩子。例如,您可以添加程序启动或关闭时调用的方法。生成的实现只是指定呈现给用户的初始视图。

  ApplicationWorkbenchWindowAdvisor.java

  和ApplicationWorkbenchAdvisor类似,ApplicationWorkbenchWindowAdvisor类提供到工作台生命周期的钩子。您可以添加创建、打开、还原或关闭工作台窗口时调用的方法。生成的实现提供一个preWindowOpen()方法,此方法设置窗口的初始大小和标题,以及是否隐藏工具栏和状态行(二者都是隐藏的)。

  Perspective.java

  Eclipse SDK提供了大量的视图。生成的应用程序包括一个视图;您可以根据要求指定额外的视图。生成的视图隐藏了编辑器区(即,编辑器在视图中是隐藏的)并且会添加由向导生成的视图。这种视图被设置为固定的:它的视图没有熟悉的标题栏,而且不能移动。用户可以通过将设置从false修改成true(和为应用程序添加一些新的视图)来随意调整视图的位置。

  View.java

  生成的View类包含了一个带有少量硬编码条目的表格。您可以利用它来制定您的应用程序外观。如果表格是您所需的,您可以通过将其与您的对象模型相连接来定制它,或者使用一个或多个窗口组件彻底替换掉它。

  下一步我们将根据要求,通过更改或增加菜单、菜单项、工具栏、视图,以及编辑器来修改生成的代码。


↑返回目录
前一篇: Eclipse中使用Junit插件测试
后一篇: 开发工具王者之战:.NET PK J2EE