Online Book Reader

Home Category

Beautiful RIA [7]

By Root 421 0
getPage().getViewReferences()[ 0 ] ); assertEquals( 0, getPage().getViewReferences().length ); }

private IWorkbenchPage getPage() {

案例研究:Eclipse富 Ajax开发平台在 CAS Software AG项目中的应用

IWorkbench workbench = PlatformUI.getWorkbench();

IWorkbenchWindow window = workbench.getActiveWorkbenchWindow(); return window.getActivePage();

}

}

这个例子展示了如何测试一个实际的 UI组件来验证可视视图的数量。而这也正展示了如何 正确地测试基于 RAP应用程序测试的一个步骤,然而,它并没有提供自动化用户驱动交互。 通过模拟一个用户点击按钮或者在输入框中键入值这样的测试 UI的能力将会是 CAS在未来 所研究的目标。

定制用户界面组件

除此而外, RAP还提供了还提供了用 SWT构建的一个超大的组件子集,称为 RAP控件工具 箱,或者称为 RWT,这套工具箱可以满足许多应用程序的需要。然而,当有“标准”以外的需 求时,Eclipse RAP也支持开发和使用定制组件。开发定制组件的第一步是确定这是一种什么 类型的控件,在 RAP中,有两种控件,izhong是“复合”式 ("compound")另外一种是“自构建” 式("owner drawn")。复合控件是把已有的 RAP组件组合到一起来提供一种新的 UI功能。而 自构建式组件则源于 JavaScript,通常需要许多重型开发,有时则需要第三方库。RAP开发 向导提供了一个一步步教你如何创建“自构建”定制控件的教程,教程中用截屏和例子代码阐 述了整个过程。对于定制组件的开发流程,教程中列出了四个主要的步骤:

 为组件创建一个运行在服务器上的 Java实现

 为组件创建一个运行在浏览器上的 JavaScript实现

 用 Java创建一个适配器,这个适配器把 JavaScript组件和 Java组件连接起来

 通过在 org.eclipse.rap.ui.resources扩展点上增加插件的方式注册该 JavaScript文件

CAS 的开发人员必须开发一些自定义控件包括一个日历、日期选框、工具条和可折叠的导航 控件,看起来像 Microsoft Outook。这个日历和工具条就是用 JavaScript加上 CSS和 HTML开 发的“自构建”组件的例子,转化而成为 CAS PIA所用的 RAP组件。Qooxdoo提供了很多功能 来开发控件,这些功能可以大大的降低开发的难度。下图是展示了一组“自构建”组件的截屏, 特别是一个日历和一个工具条。

案例研究:Eclipse富 Ajax开发平台在 CAS Software AG项目中的应用

可以看到日历组件提供了很多功能比如左上角的一个迷你日历,中间的一个比较详细的日 历,可以加入任务,而且可以定制视图来显示(例如,“所有的任务”)。 这个特殊部件由大 约 20000行代码构成,实现它需要大量时间和精力。上图中所示的另一个“自构建”组件是一 个工具条,它提供的功能类似于很多应用例如 Microsoft Office和 Microsoft Outlook的工具 条。组合组件的例子是一个时间选择器,我们可以在 CAS PIA中看到它,如下图所示。

这个复合组件由一组控件包括一个 对话框,若干按钮以及可选框构成, 他们一同构建了这 个时间选择器。在 CAS PIA的拷屏图中另外值得注意的一点是应用的整体样式或者说主题。 RAP通过使用层叠式样式表(CSS)提供了主题功能,同时使应用可以接受加在 org.eclipse.rap.ui.themes扩展点和 plugin.xml file扩展点上的扩展。

开发定制的 RAP组件时,在设计和开发阶段必须对下面几点加以考虑。首先,开发人员必 须熟悉 HTML、JavaScript、CSS和 Qoodoo。我提到这个是因为 RAP的一个优越之处就是开 发人员可以用 Java来编程而可以避开 JavaScript,但是在开发定制组件时却不是这样。其次, 开发人员必须设法使控件具有跨浏览器特性。写过 RAP核心组件的开发人员竭尽全力来确 保控件的浏览器兼容性,而在未来版本的 Qooxdoo中有望在这方面得以增强从而使开发人 员可以免于考虑浏览器兼容性问题。最后,另外一个需要注意的问题是在 RAP中的 Qooxdoo 和你从网站上下载的不是同一个版本。极端情况下,对 RAP的开发人员来说,这意味着一 些特定功能和类可能不能使用,尽管它们出现在 Qooxdoo的 API中。

案例研究:Eclipse富 Ajax开发平台在 CAS Software AG项目中的应用

开发中遇到的问题

对开发人员来说任何新技术都一定要有一个学习曲线,发展过程中也会有很多问题。在 CAS PIA的开发过程中开发团队陷入了一些与性能和部署相关的问题当中。

他们马上遇到的第一个问题就是客户端和服务器端都出现较低的性能和高的资源开销。 CAS 利用可以复用 GUI控件而不是反复创建它们的对象池和缓存来提升一些性能。尽管 CAS所 做的努力有所帮助,但是对于完全解决他们在 Internet Explorer上的性能问题还远远不够, 这也使得 CAS PIA不能支持 IE。然而 CAS对短期内 Qooxdoo框架的性能提升和 Internet Explorer8的即将发布对 CAS PIA表现出可接受的性能和对 IE的支持相当有信心。另一方面, 在别的浏览器上特别是 Firefox,都已经在近期取得性能和资源开销问题方面的提升。

另外一个令人头痛的问题是用一种连续累计的构建过程开发和部署整个应用程序的 RAP组 件。由于 CAS选择将 Eclipse Equinox部署到 Tomcat中而不是将 web服务器嵌入到 Equinox, 所以这是唯一的问题。CAS使用了 Eclipse中的 Releng- Tools,这个工具可以支持夜间自动构 造,然而它们在使用 Ant的过程中发现文档太少而且有很多奇怪的问题(比如,动态生成构 建脚本)。最终确保夜间构建的正常运行花费了大量的监控和测试。

与此同时 CAS不得不解决将 Equinox部署到 Tomcat中的问题。对这个配置问题提出的解决 方案是,生成一个单独的 WAR文件,这个文件中包含了所 有的商业组件、运行时环境、 Equinox和 RAP。但是,CAS PIA也需要 EIM这么一个非 OSGi组件和 RAP部分一起集成到应 用程序当中,从而使得两个部件之间可以不通过 web服务和 RMI直接通信。解决这个问 题 需要分两步,首先必须把 EIM服务器组件放到 WAR文件的"lib"目录中。第二步涉及到对 web.xml中 servlet bridge的特殊配置。CAS用到了 servlet桥中的“extendedFrameworkExports” 参数,这个参数能使 EIM和 RAP组件根据需要集成在一起。

经验教训

CAS Software 积极致力于开发和部署 Eclipse RAP应用程序,即便在开始的时候碰到很多问题, 他们仍然非常乐于使用 Eclipse RAP来开发产品。他们发现用 Eclipse RAP后开发人员的效率 得到显著提高,这主要是因为 Java程序员已经习惯于 Eclipse的集成开发环境、调试工具和 组件模型。

一旦 CAS克服了以上提到过的问题而走过了陡峭的学习曲线,每个人都会乐于使用 RAP来 做开发。CAS希望 RAP在未来产品中增加的唯一功能是从服务器端来触发客户端动作的能 力。目前 CAS PIA使用自主开发的一套方案,其实实际上称不上真正的解决方案,但 CAS对

案例研究:Eclipse富 Ajax开发平台在 CAS Software AG项目中的应用

RAP的未来充满信心。

未来发展方向

CAS Software AG 目前在中小企业 CRM市场上居于领导地位,他们计划到 2010年时把这种领 导地位拓展到整个欧洲。CAS PIA在 2009年第一季度将会面试并且推广。最终目标是成为 SaaS CRM产品欧洲地区供应商的前 20位。

CAS会继续在使用和支持 Eclipse RAP上发挥他们重要的作用,他们还将于 2009年 2月在匈 牙利的赛格德大学开办有关 RAP的课程。

参考链接

• CAS PIA

• Eclipse RAP Book(2008年 12月)

• http://rapblog.innoopract.com/2007/12/rap-deployment-part-2-deploying-your.html

• http://www.eclipse.org/equinox/server/http_in_container.php

• GUI测试工具

o QF-Test o Squish for Java o QA Wizard Pro

原文链接:http://www.infoq.com/cn/articles/eclipse-rap-casestudy

相关内容:

 Ajax、Comet、HTML 5 Web Sockets技术比较分析

 Eclipse RAP 1.0给Ajax带来了RCP和OSGi

 Grails Ajax富客户端插件大比拼  选择你所需要的Ajax框架

使用 Flash Builder 4 beta进

Return Main Page Previous Page Next Page

®Online Book Reader