现今我们用J2EE 服务器开发互联网应用,通常包括一个表示层譬如Struts, Tapestry, WebWork, 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 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, 并且集中讨论一下。
