当前位置: 代码迷 >> Web前端 >> RAP 与 RCP的差别
  详细解决方案

RAP 与 RCP的差别

热度:198   发布时间:2012-08-21 13:00:21.0
RAP 与 RCP的区别

RAP?可以让开发人员使用 JAVA?API 和按照 Eclipse? 插件的开发模式构建基于 AJAX Web?2.0 应用程序,是的,你没有看错,其实 RAP 的工作原理是采用交叉编译的方式将? Java? 代码生成html、 JavaScript和CSS 文件,底层基于 Qooxdoo?AJAX 框架,这样,我们就不必接触 JavaScript CSS 和处理 Http 的细节了,可以让我们更关心程序的功能实现,想起来的觉得很幸福。

??RAP RCP? 一样,运行在 Equinox 框架上, Equinox OSGI?R4 规范的实现,是一个非常优秀和成熟的 OSGi 框架, Eclipse? 是通过这个框架实现灵活的扩展性和插件的热部署。 RAP 也支持 Eclipse 的大部分扩展点,其实 RAP RCP 在架构上非常的类似,下图分别为 RCP RAP 的架构图:

?? 可以看出,这之间的整体架构差别不大,RCP 是基于 SWT 的, RAP 是基于 RWT 的,?? RWT 是实现了 SWT 功能的一个子集。其实这之间的使用方式都差不多。比如 RWT 也能和 SWT 一样使用 MVC 的方式来创建表格。

???RAP可以使用 Servlet? 编译,支持 Servlet?2.3 2.4 2.5 规范,并且可以通过打包成 war 文件部署在服务器上,客户端通过浏览器直接访问,不过这里的客户端和服务器的实现也不一样,。下面分别是服务器和客户端的实现。

???服务器端:

?

?

?

?

? 客户端的功能比较简单,是通过Qooxdoo 程序从服务器上更新信息并绘制出相应的组件显示在浏览器中。基本上只是负责提交和更新显示数据的功能,服务器端的功能就比较复杂,比如要管理插件的生命周期,寻找新的插件并加载和管理系统的资源,还要处理多用户环境,在不同 Sessions 之间处理? OSGI?bundles? 的关系。

?

?

?

??

?控件:

?

?

?

?

?

?

?

?

?

?

? GridLayout, RowLayout FillLayout FormLayout StackLayout

?

HttpServletRequest request = RWT.getRequest(); String var1 = request.getParameter( "var1" ); String var2 = request.getParameter( "var2" );


?

RAP.JFace?vs?RCP.JFace

?

?

?

?

?

? RAP的JFace实现了RCPJFace的所有视图查看器,比如TableViewer、TreeViewer等;
? 支持大多数的视图概念,像:ContentProvider、LabelProvider、ColorProvider、ViewerFilter、DecoratingLabelProvider,
? 支持文本装饰,比如文本框前面加个小灯泡提示
? 支持所有JFace的标准对话框,也支持自定义对话框。
? 支持向导页
? 支持附加视图,比如 Outline,Properties视图
? 编辑器支持:可使用多页编辑器,支持继承自ISaveablePart的视图
? 支持透视图:可支持透视图切换器,透视图扩展点。
? 支持Eclipse 3.3的菜单框架:包括Commands和Handler,支持采用表达式来控制菜单是否可见和是否可用
??支持Form表单样式?

?

?还有一个杀手级的特性: 支持在后台运行Job,可以通过UI界面执行长时间任务,支持Progress View 视图。

?

? 如果你很喜欢RCP中JFace的Data Binding功能的话,在RAP中也可以实现,通过RAP的附加插件可以让你拥有RCP的数据绑定功能,并且可以运用到目前所有的RAP控件中,

?

? 也许你看到这里的时候,上面的信息有些过时了,那有什么办法呢,Eclipse 组织的动作发展太快了,而且理念也非常的超前,应该听说过E4吧,Eclipse 的下一代开发工具,可以在Web 浏览器中打开Eclipse 进行开发了。持续关注Eclipse的发展,希望NetBeans不要落后的太远。


?RWT中布局采用的计算算法和 SWT 一样。

?

?

?

?

?

SelectionListener ControlListener ShellListener MenuListener ModifyListener VerifyListener

?

?

?

?

? RWT提供了附加的 API 可以方便 管理web? 环境,我们可以调用 RWT.java getLifeCycle 静态方法 获得程序的生命周期控制类,直接操作程序的生命周期;? 可以通过 getResourceManager 静态方法获得资源管理的控制类,手工管理系统资源,通过 getSessionStore 方法管理session 资源;通过 getRequest ? 方法处理用户的请求 getResponse 处理服务器的响应。假如我们 下面URL 中得到请求的参数内容

http://localhost:8080/rap?startup=foo&var1=value1&var2=value2

可以调用

?


?

?RWT 附加 功能:

? 目前RWT支持以下事件类型:

?事件处理:

? RWP同样可以像 SWT 一样使用布局,布局的数据在服务器上计算处理,我们基本上不用担心跨浏览器出现布局混乱的问题了,目前 RWP 支持下面的布局:

?布局

? RWT实现了 SWT? 中的大部分基本控件,使用方法大同小异,也提供了 CTabFolder CBanner 自定义控件, RWT 中的 Tree Table 功能和 SWT 的的差不多,支持排序、过滤和直接编辑单元格,使用方式也一样的。可以直接从 SWT 代码复制到 RWT 程序中使用。

?

RWT?VS?SWT

客户端:

  相关解决方案