




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘摘要要 Rich Internet Application RIA 技术的涌现解决了表示层的限制 这篇文章实实在在地介绍 了什么是 RIA 怎么把 RIA 集成到你自己的系统结构中去 并且将识别当跟一些现在普遍的公 开的框架结合时所存在的潜在的挑战 现今我们用 J2 EE 服务器开发互联网应用 通常包括一个表示层譬如Struts Tapestry Web Work or Spring 这些工具一般按照 Model View Controller MVC 结构并以 HTML 的形 式输出 到浏览器 Web 开发典型的编程模式是允许用户在应用中为每一次action 向一个应用 服务器发布请求 为每次 action 用户 发出请求 服务器会生成一个新的应答 这个应答允许用 户为了更多信息递交一个新请求 浏览器一般被用作提交给用户的用户界面 但是 浏览器是 瘦客户机 它有影响扩展和终端用户体验的局限性 Rich Internet Application RIA 技术的涌现解决了表示层的限制 这篇文章实实在在地介 绍了什么是 RIA 怎么把 RIA 集成到你自己的系统结构中去 并且将识别当跟一些现在普遍的 公开的框架结合时所存在的潜在的挑战 浏浏览览器器的的局局限限性性 那么当前的解决方法有什么问题吗 如果应用程序运转正确且允许用户是有生产力的 那么可能没 什么错误 但是曾经有很多web 开发员抱怨当使用浏览器作为客户机时会限制性能 这是一些 当前开发 web 应用程序时遇到的问题 1 浏览器以不一致的方式解释scripting 语言 譬如 Java 语言 这迫使开发员多次写同样的代 码来调节各个浏览器 2 简单用户接口会影响到譬如选中 基于向导的表单 和大表格数据集的处理 这使得在浏览器上 需要更多额外的代码 3 HTML 是有限的 静态的标记语言是无法是扩展的 4 在用户接口之内进行事件处理可能是富挑战性的 因为被反馈的 HTML 页一次只能被显示一 页 而事件没有回到服务器之前又是无法更新其它页的 5 只能通过 Cookie 来达到连续的应用状态 Cookie 它是不支持对象的 6 使用浏览器开发偶尔连接的客户机几乎是不可能 很多 Web 开发员都知道这个事实 当前工具设置有局限性 当在浏览器上工作时开发员必须查找 解决方法 对于开发员和用户来说用一台瘦客户机是承受不了当前的性能的 Rich Internet Applications 为了克服这些局限性 考虑用 RIA 来开发 如今 RIA 给用户一台胖客户机来扩展浏览器所承受不 了的性能 最普遍应用的 J2 EE 的 RIA 客户机是 Java 和 Flash 当开发大型的数据中心的 应用程序时 RIAs 真的是很强的 开发 RIA 的几个可行方法是 JDNC JDesktop Network C omponents Laszlo Thinlet Java Web Start 和 Macromedia Flex RIA 能解决问题前面已经说过了 下面是 RIAs 的一些特征 1 RIAs 提供了和浏览器一样的 UI 组件 而且它还提供新的本地的更加丰富的组件 比 如包括一个数字步进 滑动控制 一个轴向数据网格要素和菜单栏 2 成熟的 RIA 应用允许布局管理器由如下构成 譬如制表符浏览器 折叠 树结构和其它能 和 AWT and Swing 开发相媲美的布局控制 3 RIAs 提供拖放能力 4 RIA 里的语言是一致的 它贯穿于所有客户机 不必为不同的实施而重写 5 在用户接口 不必每个 action 都是请求 回应模式 通过富互联网应用 用户与UI 相 互对话 如果需要也只需要向服务器发出请求 RIAs 会运用 HTTP 协议方法把数据提交给应用 服务器 但是 通常更好的用 RIAs 的机制是远程 它会根据 RIA 来支持不同的方式 RIAs 提 供扩展的与 HTTP 进行通讯的协议 6 事件处理横跨多个组件是可能的 7 RIAs 允许您不使用 HttpSession 就可以在客户机存储更多信息 这减少了在应用服务 器里所占的内存 8 状态的连续广播 通常是以对象的形式 它提供了创建偶尔连接的客户机的可能性 RIA 是相当新的技术 它介绍了开发时涉及到的应用 它不能解决所有应用 它是要依赖某种实 现 但是 如果您认为您的应用可受益于一个更加富有的UI 设计 那么 RIA 也许就可以为您 服务 本文现在将集中于一个 RIA 解决方法 Macromedia Flex 并且集中讨论一下 Macromedia Flex Macromedia Flex 是 RIA 的一台商业表示层服务器 因为这是Flex applications 用的环境 所以必需要安装 Flash 插件 多数浏览器已经装备了 Flash 插件 对于 RIA 来说这也有助于正当 使用 Flex 我们来讨论一下不用 Java 插件而使用 Flash 插件来与 J2 EE 应用服务器通话的意 义所在 开发员使用二个核心语言创建Flex 应用 第一核心语言是 MXML 即 Macromedia Flex Mar kup Language 它拥有一套丰富的 XML 标签 这些标签允许开发员设计用户接口 MXML 也 可以被认为是 XUL 或 XML UI 语言 不同于 HTML 这些标签是可以扩展的 它拥有应用程 序所需要的额外能力 其他 MXML 结构可以被叫做远程对象 在 model 中存储返回的数据 并且对 MXML 构件可以自定义您自己的感观 第二个 Flex 开发核心语言是 ActionScript 2 0 它是一个 ECMA 支持的语言 与 JavaScript 语言类似 ActionScript 原理是被编码在 MXML 页里面的 这是较强的面向对象的语言 这 对于 java 开发者来说是比较熟悉的 ActionScript 而且有很大的事件处理能力 它允许应用程 序回应动态用户交互 由于 ActionScript 运行在 Flash 插件里面 所以它不同于在浏览器里进行 JavaScript 编码 不需要重写几个同样编码的版本来支持不同的浏览器 MXML 和 ActionScri pt 是基于文本的语言 可以写在一个简单文本编辑器或 一个 IDE 工具譬如 Eclipse 或一个更 加老练的工具象由 Macromedia 公司的 Flex Builder 里 如果您接触过 Java XML 和 scri pting 语言譬如 JavaScript 语言的话 那么您在学习 Flex 时就要稍微转下弯了 Flex 服务器负责把 MXML 和 ActionScript 组件转换成以 SWF 文件的形式的 Flash 字节码 这个过程类似于用 Java Web 应用容器把 JSP 文件编译成 servlets 在 Flash 运行环境下 S WF 文件被执行在客户机里 Flex 服务器提供其它服务譬如缓存 并发 和处理远程对象请求 给给您您现现有有的的结结构构介介绍绍一一个个 RIA 框框架架 现在你对 RIA 概念的已经有些了解了 让我们看看怎么把 RIA 引入到您现有的结构中去 其 中我们也将着重论述怎样把RIA 表现在一个层状应用中 此外 也会讲到当用 Flex 与一些普遍 的公开的框架的结合开发时存在的一些潜在的问题 这些实例将有助于引入 RIA 到您的结构中 去 就让我们先由辨认层状结构开始 一个结构可能包括以下几层 表示层 业务代表层 业务综合 服务层 和持久层 这是各自层的基本实现 Flex Business Delegates Spring Framework Hibernate 接下去的内容将集中讲解每一层 我我现现有有的的 MVC 表表示示层层是是怎怎么么样样的的 在 Web 应用程序中表示层是用来给用户传递用户界面 处理后端服务请求 并且存储信息数据模 型用的 对刚接触 RIA 的开发员最初可能会倾向于重新使用现有的Struts 但是 象 Flex 这 些开发产品都提供了他们自己的MVC 结构 难道您真地需要维护一个包括二个MVC 结构的表 示层吗 以下是当 Flex 客户机通过 Struts 组件向 Java 服务器作出请求时的实例 在被更高层接收之前 Flex 客户机的请求会先被发送到Struts 表示框架 图 1 显示了哪些是不做的 图 1 怎样不集成 Flex and Struts 和其它 Java 组件 表示框架譬如 Struts 是由 HTTP 传送 HTML 请求来运行的 当用 Flex 客户机来使用 HTTP 协议时 开发员就会出于对性能和面向对象的优点考虑 通过HTTP 来使用远程对象而反对提交 请求的方式 所以 有序化的使用这两个表示框架会提供协议配错 除非您有特定需要直接地 用 RIA 来集成 Strut 这样才可以避免 图 2 显示一个当使用 Flex 和 Struts 时更好的解决 方法 图 2 介绍 Flex 和 Struts 与其它 Java 组件 图 2 建议怎么安排分离的 Flex 组件 和 Struts 组件共存 但这是有条件的 这需要在当应用程 序请求并行 RIA 组件和轻量 Struts 组件的时候 开发员应该运用 RIA 客户机来做点什么 对于那些熟悉页面请求应答模式的传统Web 开发员来 说 这是一个明确的思想上的转变 象Flex 这样的 RIA 产品并非像 Struts 一样是请求或回应驱 动 RIA 客户机负责在任何情况下更新UI 而不必回到服务器 当使用 RIA 时 Struts 不只是您唯一想的事了 熟悉这类型技术需要时间 在经历这些曲折以 后 最大的问题是 Java 服务器端组件的综合化 这也并非是针对 RIA 概念 Flex 与与业业务务层层集集成成 前面我们已经讨论了一些表示层相关的 下面我们讨论其它层在我们的应用结构是怎么受影响的 我 们已经重置了我们的表示层组件 我们怎么把它与业务层集成在一起呢 Flex 是一个可扩展的 RIA 框架 它提供了很多方式与您的J2 EE 组件通信 Flex 提供了 HTT P 通信 万维网服务通信 还有Macromedia 的私有的 AMF ActionScript 传讯格式化 网 关 AMF 网关是一个高性能二进制协议 它近似于Flash remoting 协议 远程对象运用 HTT P 协议被发送到 AMF 网关 Flex 为每个这些通信协议提供MXML 标签 这样一来极大的减少 编制程序复杂度 此外 Flex 允许您以或异步或同步方式对您的企业等级启用远程调用 通过 使用一种异步远程购买权 用户就能够对客户机进行一些操作并且即使当发生在传统万维网应用中 时也不被拦截 您能阻拦用户与使用同步调用的UI 交涉 让我们来考虑一下怎么让Flex 和我们的业务综合化层集成呢 为这我们将使用 Spring 框架作 为我们的综合化层 但这对您选择实施什么综合化层并没有限制 让我们假设一下您有您的服务运 行在 Spring microcontainer 里 并且您需要由 Flex 调用远程对象 因为 Flex 对 Spring 完全不了解 您也许可以考虑添加一个separate 即一个薄层作为代表您的 service components 并且 因为 Spring 对 Java 接口起到了很大作用 所以我们可以建立一 个代表对象 这个代表对象实施着和Spring 服务一样的 Java 界面 这些代表对象将提供一个 减弱了的网关 它从 Flex 和综合化层中分离 您需要做的唯一的事是在Flex 配置文件中配置这 些对象因此他们能与 AMF 网关共同操作 这里有一个实例将说明代表对象是怎样被配置在ser ver side flex config xml Flex 配置文件里的 com meagle flexro FlexBusinessDelegate stateless class true false OrderUser Admin 初看 Flex 你会发现它一些有附加能力 类似于像设置安全性啦 决定委派对象是否申明啦 当F lex 发一个远程的对象呼叫到内层时 它将会干扰一个 Flex 的委派 Java 对象 委派对象将会负责对 呼叫内层或者服务层 比如 Spring 作为结果的对象将通过 AMF 网关返回到 Flex 客户端 这个 对象被称为 ActionScript 对象 这里是一个 MXML 代码的例子 Flex 客户端用 MXML 代码来远 程调用并将结果存储到一个数据模式中 用 ActionScript equivalents 写的 Java 的域对象在 AMF 网关里来回传递 这个过程开始于一个 请求 这个请求是从 Flex 服务器通过 AMF 网关到应用程序的其他层 一个返回对象的图 将会被 通过其他 Java 层 最后通过一个 AMF 网关返回到服务器 一旦这个对象通过网关他们就将被转变 为 ActionScript equivalents 图 3 详细说明了这一过程 图 3 Overview of the AMF gateway 更多关于在 Flex 和 Java tier 之间的来回传递对象的说明是 因为 ActionScript 2 0 是一种 面向对象的语言 它是可能生成有 Java equivalents 的 ActionScript 对象的 这使在 AMF 网 关之间来回地传递对象变得比较容易和一致 被送回到Flash 插件的 ActionScript 对象类似数 据传送对象 DTO 这是必要的因为这个 Flash 插件没有任何 Java 运行时间构成要素 下面 是一个用 Java 写成的一个 Order domain object 的一个熟悉例子 package com meagle bo import java util ArrayList import java util Collections import java util List This object represents an order hibernate class table TestOrder author meagle public class Order private int id private double total private int version private String userName private List orderLineItems new ArrayList other fields and getter setter methods not shown to save space Here is the ActionScript equivalent Generated Action Script Object for com meagle bo Order Do not edit class com meagle bo Order extends Object public function Order public static var regClass Object registerClass com meagle bo Order com meagle bo Order var id Number var orderLineItems Array new Array var total Number var userName String var version Number other fields and getter setter methods not shown to save space 在 ActionScript Order 对象里你应该注意 Object registerClass 这个特别方法 AMF 网关用 这个 Object registerClass 方法在 Java 和 ActionScript 之间来拆整对象 这个方法把客户端 的 ActionScript 类注册到对服务器端的 Java 类 因 为这些对象是很相似的 所以你在一个稍 微不同的格式里不想重写你的域对象也是可理解的 像XDoclet 和蚂蚁之类的工具允许你自动地 产生这 些 ActionScript 对象而不是手动地编码 现在你能像在Flex 客户里的 ActionScript equivalents 操作你的 Java 对象了 Flex 与与持持久久层层集集成成 在使用一个在 web 上定义好的耦合的体系结构的应用程序中 你不直接和你的持久层对话 使用Fl ex 不应该改变这个体系结构 在大部分情况下 集成层将代替你和你的持久层对话 通常是使用Da ta Access Object DAO 来完成的 Data Access Object DAO 是用来连接诸如数据库的 永久存储的数据的 Flex 客户端不直接访问集成层甚至不直接了解这个层 因为它构筑了一个紧密 的联结 让我们用 Hibernate 来作为持久层的一个例子 当在 Macromedia s AMF gateway 环境下使用 Hibernate 和远程对象时 会有一对错误 Hi bernate 用户知道你不能访问一个不含有已初始化Hibernate 会话对象的集合 访问一个没有被 初始化的动态代理对象的集合会导致运行时错误 The AMF 网关不知道如何特定的去寻找Hib ernate 动态代理对象 一个潜在的方法是面向方面的编程 AOP 即将一个即将传送给 AMF 网 关的对象作为委代对象 移除动态代理 这是一个包含传递结果对象给拦截器 反复寻找使用映射并 没有被初始化的代理对象的过程 如果找到什么无用的代理对象或集合 将他们设置为null 这 是一个 cro
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 内部审计风险控制案例分析
- 学前教育心理发展报告
- 医院接待服务质量提升方案
- 小学五年级数学教学计划详述
- 行政岗位职责与绩效考核标准
- 店铺转让法律协议及注意事项指南
- 屋顶隔热保温施工技术方案指导
- 煤矿安全生产风险隐患排查表
- 建筑工地安全技术交底示范
- 课堂评课高效方法及实例
- 《研究生入学教育》课件
- 汽车行业中的环境保护与可持续发展
- 打起手鼓唱起歌混声合唱简谱
- 空调安装免责协议
- QGW 201175-2019-金风陆上风力发电机组 塔架通用防腐技术规范
- 老友记第一季字幕
- 输电线路风偏计算基本方法
- 骨科概论课件
- 第5章光电成像系统
- GB/T 9117-2010带颈承插焊钢制管法兰
- GB/T 5455-2014纺织品燃烧性能垂直方向损毁长度、阴燃和续燃时间的测定
评论
0/150
提交评论