Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2088386
  • 博文数量: 1647
  • 博客积分: 80000
  • 博客等级: 元帅
  • 技术积分: 9980
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-13 15:15
文章分类

全部博文(1647)

文章存档

2011年(1)

2008年(1646)

我的朋友

分类:

2008-10-28 17:46:55

浏览器的局限性

  那么当前的解决方法有什么问题吗?如果应用程序运转正确且允许用户是有生产力的,那么可能没什么错误。但是曾经有很多web开发员抱怨当使用浏览器作为客户机时会限制性能。 这是一些当前开发web应用程序时遇到的问题:

1.浏览器以不一致的方式解释scripting 语言, 譬如 语言。 这迫使开发员多次写同样的代码来调节各个浏览器。
2.简单用户接口会影响到譬如选中, 基于向导的表单, 和大表格数据集的处理,这使得在浏览器上需要更多额外的代码。
3.HTML 是有限的,静态的标记语言是无法是扩展的。
4. 在用户接口之内进行事件处理可能是富挑战性的。 因为被反馈的HTML 页一次只能被显示一页, 而事件没有回到之前又是无法更新其它页的。
5. 只能通过Cookie来达到连续的应用状态,Cookie它是不支持对象的。
6.使用浏览器开发偶尔连接的客户机几乎是不可能。

很多Web开发员都知道这个事实: 当前工具设置有局限性。当在浏览器上工作时开发员必须查找解决方法。 对于开发员和用户来说用一台瘦客户机是承受不了当前的性能的。

Rich Internet Applications

  为了克服这些局限性, 考虑用RIA来开发。 如今RIA给用户一台胖客户机来扩展浏览器所承受不了的性能。 最普遍应用的J2.EE 的RIA 客户机是 和Flash。 当开发大型的数据中心的应用程序时, RIAs 真的是很强的。开发RIA的几个可行方法是JDNC (JDesktop Network Components), 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 Markup Language,它拥有一套丰富的XML 标签,这些标签允许开发员设计用户接口。 MXML 也可以被认为是XUL, 或XML UI 语言。不同于HTML,这些标签是可以扩展的, 它拥有应用程序所需要的额外能力。 其他MXML 结构可以被叫做远程对象, 在model中返回的数据, 并且对MXML 构件可以自定义您自己的感观。

  第二个Flex开发核心语言是ActionScript 2.0, 它是一个ECMA 支持的语言,与JavaScript 语言类似。 ActionScript 原理是被编码在MXML 页里面的。 这是较强的面向对象的语言,这对于java开发者来说是比较熟悉的。 ActionScript 而且有很大的事件处理能力,它允许应用程序回应动态用户交互。 由于ActionScript 运行在Flash插件里面,所以它不同于在浏览器里进行JavaScript编码,不需要重写几个同样编码的版本来支持不同的浏览器。MXML 和ActionScript 是基于文本的语言, 可以写在一个简单文本编辑器或 一个IDE 工具譬如Eclipse, 或一个更加老练的工具象由Macromedia 公司的Flex Builder里。 如果您接触过Java, XML, 和scripting 语言譬如JavaScript 语言的话, 那么您在学习Flex时就要稍微转下弯了。

  Flex服务器负责把MXML 和ActionScript 组件转换成以.SWF 文件的形式的Flash字节码。这个过程类似于用Java Web应用容器把JSP 文件编译成servlets。在Flash运行环境下,SWF 文件被执行在客户机里。 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概念。

[1]  

【责编:Star】

--------------------next---------------------

阅读(437) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~