欢迎来到天天文库
浏览记录
ID:34365834
大小:1.21 MB
页数:11页
时间:2019-03-05
《eclipserap-rich ajax platform-第2部分-开发应用程序》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、RichAjaxPlatform,第2部分:开发应用程序http://www.ibm.com/developerworks/cn/opensource/os-...RichAjaxPlatform,第2部分:开发应用程序基于Eclipse开发模式的Web2.0BenjaminMuskalla(bmuskalla@innoopract.com),软件工程师,InnoopractInformationssystemeGmbH2008年1月14日RichClientPlatform(RCP)是一项用于构建企业应用程序的强大平台技术。在RichAjaxPla
2、tform(RAP)的帮助下,它将变得更有趣,因为可以重用Web应用程序的现有代码库和开发技巧,如“富客户端平台”系列的第1部分中所述。RAP有一些值得注意的功能使Web开发更具吸引力。本文将超越HelloWorld示例,并说明一些关键概念以及如何使用RAP所提供的高级功能。在开始研究新功能之前,我们希望大致介绍RAP的组织方法及其重要性。然后,我们将讨论一些有趣的主题,如后台作业、用户界面(UI)自定义,并且将介绍更加高级的主题,例如自定义小部件和主题。如果这些讨论超出了您所掌握的现有RAP知识,请返回到第1部分或查看参考资料。RAP的架构请访问A
3、jax技术资源中心,这是有要高效地开发基于RAP的应用程序,在某些情况下您需要知关Ajax编程模型信息的一站式中道它的工作原理。我们不希望介绍过多内部机制让您感到厌心,包括很多文档、教程、论坛、烦,但是必须说明一些基本概念来帮助您用RAP进行开发。blog、wiki和新闻。任何Ajax的新下面的示意图通过对比RCP的方式介绍了RAP组织方式。信息都能在这里找到。订阅Ajax相关文章和教程的图1.RCP和RAP的对比RSS提要正如您所看到的,RAP分为两部分。一方面,有运行在Equinox(OSGi规范的Eclipse实现)之上的服务器端部分。而另一方
4、面,有客户机部分,这部分是您在浏览器中看到的内容。两端将交换事件,各自的UI将相应更新。这意味着大部分代码在服务器上执行,而瘦客户端仅在必要时更新。这样做的好处是可以运行干净的Java™应用程序而无需在客户机上安装应用程序本身。RAP不是RCP此部分的标题应该不会吓到您,但是您必须了解它。如第11of112008年12月12日16:10RichAjaxPlatform,第2部分:开发应用程序http://www.ibm.com/developerworks/cn/opensource/os-...部分中所示,将RCP应用程序迁移到启用Web的RAP副
5、本中非常简单。开发RCP应用程序时,通常的情况是一次将只有一个用户使用该应用程序。相反地,运行在服务器上的RAP应用程序将由多个(或者上千)用户同时使用。这种情况将导致重新思考RAP应用程序开发中的一些概念。一个有趣的方面是实现单例(singleton)模式的类的单例性。在所谓的“应用程序范围”内,单例是惟一的。在RAP应用程序中存在几个范围:应用程序范围应用程序范围是适用于所有用户的最大范围。单例对于整个应用程序都是惟一的,并且因此存在于应用程序范围内。这意味着应用程序的所有用户都将使用单例的同一个实例。这可能非常有益,但如果实例保存一些用户特定的
6、信息,那么也不总是一件好事。会话范围会话范围仅与当前用户可用的当前用户会话绑定。要实现一个仅绑定特定会话的单例,可以使用RAP提供的SessionSingletonBase类。通过扩展该类并覆盖其getInstance方法,该类将像单例一样运行,但是仅可用于会话范围内。请求范围请求范围是三个范围中最小的范围。只有在处理请求时它才可用。大多数时间里,此范围实际上与普通开发人员无关(除非需要了解RAP的生命周期概念)。后台作业RAP最令人激动的功能之一是支持EclipseJobs框架。通过作业的帮助,可以在后台运行需要长期运行的任务,而UI仍然可以做出响
7、应。为了了解其工作原理,我们将用一个安排作业的新操作来扩展第1部分中的邮件应用程序(参见清单1)。清单1.添加操作(ApplicationActionBarAdvisor.java)....privateActionprogressAction;...protectedvoidmakeActions(finalIWorkbenchWindowwindow){...progressAction=newSampleProgressAction();progressAction.setText("Countme!");progressAction.setI
8、d("progress.action");register(progressAction);}...prot
此文档下载收益归作者所有