`
lizhensan
  • 浏览: 378481 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

RAP源码泛读及分析

 
阅读更多

SWT、RWT如何保证大部分API的一致?

 RWT对关键的方法进行了重写:渲染、事件处理,增加了适配模型AbstractWidgetLCA

 在SWT、RWT中看似同样的处理,其实意义已经不同

       while( !shell.isDisposed() ) {

        if( !display.readAndDispatch() ) {//1

          display.sleep();//2

        }

      }

 SWT中

 1:触发控件事件

 2:基于OS,捕获系统事件、渲染UI

 RWT中

 1:触发后台控件事件

 2:基于HTTP,借助WidgetLCA适配模型,捕获WEB中的事件、渲染WEBUI

 

 

把前台括事件  映射到后台控件事件中,后台控件的响应在前台进行表现

前后台通宵通过JsonObject通讯

 

RAP总体分2个线程

1:http请求线程

2:后台UI处理线程(基于会话,保证多用户的安全性)

org.eclipse.rap.rwt.internal.lifecycle.RWTLifeCycle.UIThreadController

 

如何扩展RAP控件控件?

1:首先找个第三方的控件,比如:jquery的tree,把js拿过来

2:实现后台Wight把后台调用的方法通过RemoteObject与js进行映射

3:打包插件供别人使用

这样别人就可以像开发swt一样去实现一个jquery的树

 

 

 

 

RAP的一个响应流程:

比如在单机按钮弹出对话框的这个动作原理:

(WEB)单击按钮->触发js->ajax后台发送请求->

(后台处理)后台将request适配为对应控件的事件->后台弹出对话框(逻辑调用)->适配为前台动作(json的形式)->发送前台->

(WEB)动态调用js方法(弹出对话框)

 

RAP核心的代码

1:适配控件的处理(前后台的映射)

2:主逻辑的控制、WEB与OSGI的集成、一些WEB服务机制的搭建等

 

 

前台为什么选择Qooxdoo 

Qooxdoo并没有jquery、ext有名气,为什么还要选择它呢?个人觉得是因为它的设计思路与SWT比较接近,适配控件比较容易写

 

 

RCP RAP 有大部分的交集,但各自都有各自各特有的API

RAP 优势

1:把rcp的优秀的平台,无缝的迁移到了web中,可以搭建自己的WEB平台,具有极大的扩展性,eclipse的成功已经证明了这一点

这个我觉得是它最大的优势,它是个WEB平台不仅仅是个web框架,它可以把Ext、Flex、Jquery等作为一个插件或组件来使用

目前已经有很多插件供RAP使用,RAP项目的定位可能与当初RCP类似,要打造一个web生态,比如:

可以将共性的模块开发插件并提供扩展点,对外发布使用,这样你的开发就是在某个功能模块上再次开发,而不需要从头开发了

对于公司来也可以在技术上形成沉淀

 

 

2:保持与RCP的开发模式,这样可以将RCP的开发经验及封装的API使用到RAP中,但也有些不同:

   Web是一个多用户环境,所以在一个静态对象中(如singleton)保持应用状态是有可能引起问题的。

   现有的RAP是RCP的一个子集——如果期望得到超出RAP支持的RCP附加功能,这里推荐的做法是通过插件来引入它们。

   因为应用是在服务器上执行,开发者不应给每个用户分配大量的内存(这同样也是桌面应用的最佳实践)

 

3:开源便于研究内部实现,与一般框架一样都具有丰富的组件

 

RAP 缺点

1:使用人比较少、网上的相关资料也很少与RCP一样

2:不试用用户量大的项目,架构已经决定了

因为对于后台控件会为每个会话缓存一份,这样用户量大了服务端的内存消耗也是成正比的上升

不过它的懒加载机制会弥补下这种不足

 

 

RAP1例子说明

如果有发布应用为war,需要下载eclipse插件

用到了RCP中的视图、编辑器(tab)、form、菜单、Jface中的控件(List、Table)、带搜索的弹出对话框等进行了测试

结果:效果很不错,并且部署到tomcat中局域网访问也很流畅

 

 

 

 

http://www.blogjava.net/vwpolo/archive/2009/05/21/271911.html

 

http://www.blogjava.net/vwpolo/archive/2010/06/04/284577.html

如何发布rap

http://blog.csdn.net/luoww1/article/details/16880631

支持gef

 

RAP现有的客户端表现是基于qooxdoo

 

GWT是整个在浏览器执行的,而RAP的执行被分成了服务器端和客户端两部分

 

org.eclipse.rap.rwt.service.ServiceHandler

service  client(所有内容都是从服务端请求过来的(servet))

org.eclipse.equinox.http.servlet.internal.ResourceServlet

org.eclipse.equinox.http.servlet.internal.ServletRegistration 

org.eclipse.rap.rwt.internal.service.StartupPageTemplate

rap-client.js

resources.js

org.eclipse.rap.rwt.internal.protocol.ProtocolMessageWriter

org.eclipse.rap.rwt.application.Application

org.eclipse.rap.rwt.application.ApplicationConfiguration

org.eclipse.rap.rwt.remote.RemoteObject org.eclipse.rap.rwt.internal.remote.DeferredRemoteObject

org.eclipse.rap.rwt.remote.Connection

org.eclipse.rap.rwt.internal.protocol.ProtocolMessageWriter

org.eclipse.rap.rwt.internal.protocol.Operation

org.eclipse.rap.rwt.lifecycle.WidgetAdapter

org.eclipse.rap.rwt.internal.remote.LifeCycleRemoteObject

org.eclipse.swt.internal.widgets.buttonkit.ButtonOperationHandler

org.eclipse.rap.rwt.lifecycle.WidgetUtil.getLCA(Widget)

org.eclipse.rap.rwt.internal.service.UISessionImpl

org.eclipse.rap.rwt.internal.lifecycle.RWTLifeCycle.executeUIThread()

org.eclipse.rap.rwt.internal.lifecycle.UIThread

org.eclipse.rap.rwt.internal.service.LifeCycleServiceHandler.writeProtocolMessage(ServletResponse)

org.eclipse.rap.rwt.internal.service.ContextProvider.getProtocolWriter()

org.eclipse.rap.rwt.internal.service.LifeCycleServiceHandler.handlePostRequest(HttpServletRequest, HttpServletResponse)

org.eclipse.rap.rwt.internal.service.ContextProvider

org.eclipse.rap.rwt.internal.lifecycle.RWTLifeCycle.createUIThread()

org.eclipse.rap.rwt.internal.lifecycle.RWTLifeCycle

org.eclipse.rap.rwt.internal.lifecycle.RWTLifeCycle.executeUIThread()

org.eclipse.rap.rwt.internal.lifecycle.UIThread.switchThread()

org.eclipse.rap.rwt.internal.service.ServiceStore

org.eclipse.rap.rwt.internal.lifecycle.RWTLifeCycle.UIThreadController

org.eclipse.rap.rwt.internal.lifecycle.RWTLifeCycle.createUI()

org.eclipse.rap.rwt.lifecycle.AbstractWidgetLCA.readData(Widget)网页中的事件适配到后台控件中

org.eclipse.rap.rwt.remote.OperationHandler



 

以上都是个人在看源码的时候随笔记下的,比较乱,可能也有理解不对的地方望多指教

 

  • 大小: 18.5 KB
分享到:
评论
2 楼 lizhensan 2014-04-28  
RAP 本身所有的UI都是惰性加载的,只有你真正用了才会去加载对应的Class
1 楼 cxman 2014-04-25  
请教一个问题:
RAP如何实现数据的懒加载,就是界面先显示出来后有什么方法自动去触发加载数据,就像html中的onload方法可以调用加载数据,但在rap上就不知道怎么调用了。

相关推荐

    新编商务英语泛读bookunitB分析解析PPT学习教案.pptx

    《新编商务英语泛读bookunitB分析解析》的学习教案主要涵盖了经济学中的核心概念,特别是与市场垄断、价格调控和法律框架相关的知识点。本篇内容深入浅出地讲解了这些概念,旨在帮助学习者理解商务环境中如何运用和...

    泛读教程第四册答案.pdf

    泛读教程第四册答案.pdf

    英语泛读技巧总结PPT课件.pptx

    1. 预测文章的内容:通过浏览文章的总体结构安排或文章的标题,可以预测文章的内容及深层含义。 2. 掌握英文文体的结构特征:不同的英文文体有其特有的结构特征,掌握这些特征可以帮助我们更好地理解文章的内容。 3....

    大数据-算法-汉语中级泛读教材难度定量分析.pdf

    本篇论文针对中级汉语泛读教材难度的定量分析,提供了基于大数据算法的解决方案。在汉语学习过程中,合适的教材难度是确保学习效率和质量的关键因素。但是,当前市场上的中级汉语泛读教材在难度控制方面存在一些普遍...

    英语泛读教程2:(第三版刘乃银).pdf

    本教程分为语法基础和阅读理解两大部分,旨在为学习者打下扎实的英语语言知识基础,并通过大量的阅读实践,提升理解力与分析力。 语法基础部分作为整个教程的基石,对英语语法进行了全面而深入的探讨。从基础的时态...

    英语泛读教程1:(第三版刘乃银).pdf

    英语泛读教程1:(第三版刘乃银).pdf

    英语泛读教程UnitFool'sParadisePPT课件.pptx

    英语泛读教程UnitFool'sParadisePPT课件.pptx

    Android 小米便签源码-IT计算机-毕业设计.zip

    在Android平台上,小米便签...通过分析小米便签的源码,不仅可以学习Android应用的基础开发,还能深入理解高级特性,如数据持久化、多线程、网络请求等。这对于提升个人技能,完成毕业设计或撰写相关论文具有极大帮助。

    UnitClimate泛读教程实用教案.pptx

    酸雨对水体、土壤及生物的负面影响不容小觑,而臭氧层的破坏则直接威胁到人类健康和生物多样性。通过对这些气候变化相关问题的探讨,学生能更好地理解环境问题的紧迫性和全球性的挑战。 在教学策略上,该教程通过...

    高二英语泛读PPT课件.pptx

    这篇高二英语泛读PPT课件主要围绕一次伦敦之旅展开,通过快速阅读和仔细阅读的形式,引导学生了解关于伦敦的历史文化、名胜古迹以及奥运会的相关知识。 1. **奥林匹克运动会相关知识**: - 29th Olympic Games(第...

    大学英语泛读第一册答案{全)知识讲解.docx

    这篇文档是关于大学英语泛读课程的知识讲解,包含多个课时的练习答案和重点词汇解析,旨在帮助学生巩固阅读理解能力和学习英语常用短语及表达。 在Lesson 1的Comprehension of the text部分,主要涉及对文章的理解...

    雅思阅读之精读泛读结合法.docx

    【雅思阅读之精读泛读结合法】 雅思阅读考试中,精读与泛读的结合是一种有效的备考策略,旨在帮助考生提升词汇量、积累背景知识并增强阅读能力。以下是这两种方法的具体应用及其益处。 一、精读的重要性 精读指的...

    大学英语泛读_第一册_答案{全)..docx

    【大学英语泛读】课程是大学英语教学的重要组成部分,旨在提升学生的阅读理解能力和词汇量,同时帮助学生掌握常用短语和表达。以下是针对四课内容的解析和知识点总结: 第一课: 1. 阅读理解题目测试了学生对文章...

    绝对真实英语泛读教程刘乃银三二册全册所有单元答案PPT课件.pptx

    刘乃银三二册英语泛读教程课件PPT概述 本资源是《刘乃银三二册英语泛读教程》的课件PPT,共16页,涵盖Book 2的Unit 1-9。每个单元包括Text、Fast Reading和Home Reading三部分,每部分都提供了答案.keys和解释。 ...

    英语泛读教程1课文翻译.docx

    这篇文档讲述了《英语泛读教程》第一课的内容,是一篇关于美国作家劳拉·英格尔·威尔德生活故事的翻译。这个故事发生在19世纪70年代的威斯康辛州,描绘了劳拉一家在大森林边上的小木屋生活的情景。故事的核心事件是...

    大学英语泛读教程二Getting enough sleepPPT课件.pptx

    "大学英语泛读教程二Getting enough sleepPPT课件.pptx" 本资源围绕"Getting enough sleep"这个主题,旨在帮助学生掌握相关的英语阅读和理解技巧。下面是从该资源中提炼出的知识点: 1. Sleep Debt的概念:Sleep ...

    大学英语泛读教程UnitPPT课件.pptx

    在中国文化中,数字有着深远的影响,特别是在日常生活中。这些数字不仅仅是数学上的概念,它们与预兆、幸运和传统文化紧密相连。 首先,数字“一”(ONE)象征着开始和独立。它代表单一、纯粹,有时也被用来祈求...

    英语专业泛读读物.doc

    英语专业泛读读物.doc

    商务英语泛读PPT课件.pptx

    【商务英语泛读PPT课件】主要涵盖了广告和广告媒介相关的专业知识,旨在帮助学习者掌握广告领域的基础知识、相关表达及术语,并提升阅读理解能力。课程结构包括预读、阅读中和阅读后三个阶段,旨在逐步引导学生深入...

Global site tag (gtag.js) - Google Analytics