Flex_3_RIA___解与精深_践_第三部分(精)
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
7.1.2 Struts,外表-思想-内心
在程序设计的过程中,设计模式应该是开发者谈论最多的话题之一。作者认为,设计 模式就是一套被反复使用的、针对某一特定场景或解决某一类特定问题的代码设计经验的 总结。使用设计模式是为了代码复用,因为设计模式是被很多开发人员反复使用,经过实 践证明是有效而且可靠的,将某些为开发人员广泛认可的设计模式应用到自己的系统当中, 能够增加代码的可读性、高效性。
7.1.1 Flex 与 Java,自然又必然
然而,与 Java 数十年辉煌的行业地位极不协调的是,在 UI(User Interface)设计领域, 无论是基于 AWT 或 Swing 的桌面应用,还是以 JSP(Servlet)或 JSF 为前端的企业级应用, 都或多或少地让人们感觉到了 Java 在界面展现和用户体验方面有点力不从心。 AWT 和 Swing 最为让人诟病的就是程序的响应速度和内存泄露等诸多问题,而 JSP 在 “富客户端”的互联网应用盛行的今天并没有提供多少可供开发人员使用甚至扩展的页面 组件,JSP 程序员仍然需要花大量的时间去开发标签库,需要在并不熟悉的 JavaScript 上面 耗费大量的开发和调试时间,因此多年来 JSP 始终只能作为各种商业控件的“载体”,始终 在 JSP+标签库+表达式语言的前端开发模式中扮演“绿叶”。 而 JSF 技术,是 Sun 公司力图使 Java 互联网应用从“请求-响应”机制向“事件处理” 机制进化跨出的革命性的一步,其特点为强大的事件处理功能和界面组件支持及其对 Request 和 Response 对象处理细节的隐藏,应该说 JSF 代表了未来互联网应用的方向,但 是 JSF 对开发人员的角色区分较为细致, 例如分网页设计人员、 应用程序设计人员和组件设 计(集成)人员等,要想精通 JSF,就必须深入了解 JSF 标准标签的使用、自定义标签开发、 事件驱动模型、UI 组件开发等技术细节,学习的难度较大,周期较长。 在 RIA 领域,最近几年最为风生水起的技术就要算是 Flex 了。相信通过前面章节的介 绍,读者已经对 Flex 的基本概念有了了解。在当今流行的 RIA 解决方案中,不乏 Applet 这 样成熟稳重的老兵,也不乏 Ajax 这样风风火火的新贵,而 Flex 却是独树一帜,稳健而不失 犀利。 作者认为,Flex 会在未来几年成为 RIA 平台的领航者,理由有两条: 第一是其基于 Flash Player 的开发模型。Flash Player 提供了 Flex 应用在不同操作 系统和不同浏览器之间整合的能力。据统计,全世界 84%的个人计算机上安装有 Flash Player,并保有 80%的升级率。这使我们在几乎所有的互联网用户的运行时 中发布跨平台的 RIA 应用成为可能,因为应用的最终形式只是一个 swf 文件,而 这个文件能在任何安装了 Flash Player 的浏览器中运行,无论用户使用的是 Windows、Linux 还是 Mac OS。
[
232
]
第 7 章 Flex 企业级开发实践— — Flex + Struts
员迅速建立起自己的项目的一个半成品框架。就是说,如果基于 Struts 开发应用,开发者 只需要做下面几件事情: 为应用开发视图。通常是 JSP ,将界面上的表单对应到 Struts-config.xml 中的 ActionForm 中,以处理用户输入。 为应用设计业务逻辑处理程序。Struts 框架中的控制器是一个 ActionServlet(确切 地说是 RequestProcessor)实例,一般不需要开发者自己定义或修改控制器,但是 必须设计业务处理逻辑,控制器会将相应的请求映射到这些处理程序中(Action), 相应的配置也在 Struts-config.xml 中。 开发模型层。这是几乎所有应用都要做的,可结合一些 ORM 框架(如 Hibernate) 简化这一层的工作 综上所述, 开发基于 Struts 框架的应用非常简单, 主要是管理好 Struts-config.xml 这个 文件,实际上,这个配置文件就像一瓶“胶水”,将界面和业务逻辑处理“粘合”在一起, 隐藏了 ActionServlet 这个请求的核心控制者,只要读懂 Struts-config 文件,你就能很清楚, 你页面上的请求由谁来处理。 Struts 框架还为互联网应用面临的一些共通的问题提供了解决方案,诸如国际化支持、 页面重用与复合(tiles 框架)等。 尽管 Struts 大大地方便了开发人员的工作,但是在改善用户体验这一点上并没能有革 命性的突破:使用的仍然是“请求-响应”的传统的处理机制,每当客户端发起请求,服务 器端会根据请求进行计算并产生结果,重新生成 HTML 页面发回客户端。这样,用户会感 到页面“刷新”了。相比而言,Flex 应用中的文件会最终编译成一个二进制的 SWF 文件, 发送到客户端,当其发送请求到服务器的时候,服务器仅仅传送所需的数据回客户端,并 不会重新编译 SWF 文件,也不会刷新页面。这也正是 RIA 的优势所在。 其实,Flex 本身也是一个 MVC 架构的产品,只不过更多地关心 MVC 中“View”的实 现,而 Struts 的业务处理应该是核心,视图层使用了大量的标签库以简化开发人员的工作。 所以,如何能将 Flex 在视图设计和 Struts 在业务处理方面的优势结合到一个应用当中,应 该是读者此时考虑并亟待获得答案的问题。
图 7.1 MVC 模式
将应用按 MVC 模式进行分层可以给我们带来相当多的好处: 允许同样的信息(模型)产生不同的表现(视图),例如,对于同样一组数据,我们可 以在界面上将其展示为饼图,体现其中每项数据占总值的比例;也可以将其展示 为柱状图,体现每项数据之间的比较关系。 开发人员能在编译时或运行时随意增加、替换或删除视图。 弱耦合,开发人员可以轻易地对处理用户输入的逻辑进行修改或替换。 代码重用,可以将商业软件集成到自己的应用中,例如,可以购买一套非常漂亮 和复杂的 UI 代码,将其作为视图层放到系统中 可以将开发团队按 MVC 三层进行分组,例如,精通 HTML 和 JavaScript 的开发人 员可以专注于 UI 设计,而数据库人员可以专注于模型的设计,精通程序设计的人 员可以专注于业务逻辑的编写。 由于 MVC 能够清晰地为应用进行分层并因此带来很多优势,很多大型的项目都会基于 MVC 模式进行架构。在作者曾经参与的几家世界 500 强公司的互联网应用项目中无一例外 地采用了 MVC 架构。更确切地说,都采用了 Struts 框架,那么 Struts 是什么呢? Struts 在最近几年的 Java 互联网应用领域中可以说是占有举足轻重的地位,它是 Apache 基金会 Jakarta 项目组的一个开源项目,采用了 MVC 模式,是一个能够帮助开发人
关键词 Flex 与 Struts Flex 与数据服务
Flex 3 RIA 开发详解与精深实践 企业级 Web 应用与 AIR 桌面应用
7.1 Flex 与 Struts
提到企业级应用开发,就不能不提近十年来发展迅速、风光无限的程序设计语言—— Java。在 Java 领域,为寻求创建用户界面的最佳方式所作的努力从未停止过。Java 作为一 门高级编程语言,其强大的语言特性,丰富的数据结构,浩瀚的各类 API 支持及成熟的跨 平台能力使其成为 IT 行业的领跑者和事实上的行业标准之一。基于 Java 三大平台 (J2ME/J2SE/J2EE 或 JavaEE)所开发的各类产品和项目在各个行业都拥有无数成功的案例。
第 7 章 Flex 企业级开发实践—— Flex + Struts
在当前 IT 行业最热门的技术中,我 们认为有两者极为重要: 一是如日中天的 RIA(Rich Internet Application)技术, 另外 就是企业级应用开发技术。在 RIA 领域, 相信大家对 Ajax、Flex、JSF 等技术已耳 熟能详;而.NET 和 JavaEE 也早已成为企 业级开发平台的两大阵营。 事实上,RIA 和企业级开发并不是完 全独立的两种技术。可以说,RIA 和企业 级开发的关系极为密切:首先,大多数企 业级开发都是基于 Intranet 或 Internet 的 B/S 架构的应用,在这些应用中,用户界 面设计常常成为被忽视而往往给用户带 来不佳体验的瓶颈;其次,尽管 RIA 的核 心是用户界面, 业务逻辑的计算和处理往 往才是应用的“用”之体现。毕竟,强大 的功能才是衡量应用成功与否的标准。 所 以, RIA 常常需要强大的计算和处理能力, 而企业级应用常常又需要穿上更加亮丽 的外衣。如果两者能有机地结合起来,一 定能迸发出激动人心的火花。
[
231
]
Flex 3 RIA 开发详解与精深实践 企业级 Web 应用与 AIR 桌面应用
MVC 模式是“Model-View-Controller”的缩写,意即“模型-视图-控制器”。MVC 模 式在 IT 行业中被广泛应用(特别是在互联网应用当中),因为它能将复杂应用有效地进行分 层,从而达到“分而治之”的目的。按照 MVC 的设计思想,应用程序的代码可以分为如下 三层。 模型:为界面存储数据和应用逻辑。 视图:提供用户界面。 控制器:对用户输入进行处理,修改模型。 MVC 的基本思想是分离责任。 在 MVC 应用当中, 模型层只关心应用的状态和业务逻辑。 它并不关心状态如何展现给用户及用户输入是如何接收的。而视图层关心的是如何根据模 型的改变创建用户界面,并不关心应用逻辑和用户输入最终的处理,它仅仅确保反映出当 前模型的状态。控制层负责将视图层提供的用户输入进行处理,将更改作用到模型,它不 关心输入是如何接收的,也不管这种改变如何作用到模型的状态上(见图 7.1)。
[
230
]第 Βιβλιοθήκη 章 Flex 企业级开发实践— — Flex + Struts
第二是框架的成熟度。Flex 开始进入人们的视野是在 2004 年,最初作为企业级应 用服务器打入市场。从那时起,Flex 根据技术和市场的需要进行了一系列的改进。 升级了 Flash 运行时、 ActionScript 语言和服务器组件的 Flex 2.0 于 2006 年 6 月发 布,Adobe 于 2007 年 4 月宣布 Flex 框架开源。Flex 使得软件开发人员为增强用 户体验开发稳健、开源的框架成为现实。开源社区也会为 Flex 技术的成熟与高速 发展提供强大的技术支撑。 Java 技术非常成熟,大量的企业级应用采用 Java 技术构建。Java 能为这些复杂的应用 提供强大的业务计算能力,但却往往不能为其提供完美的界面和良好的用户体验。对于技 术人员来说,保留 Java 强大的业务逻辑处理能力,以非 Java 技术取代其略显晦涩的界面展 现能力,不失为一种好的选择。现在,是 Java 开发人员向 Flex 敞开怀抱的时候了! Flex 基于 Java/J2EE 社区构建, 如果你有过 Java 开发背景, 当你接触 Flex 编程的时候, 你会发现 Flex 其框架、 语言和工具非常易于上手。 反之, 如果你精通 Flex 编程, 在学习 Java 的时候, 你常常会发现某些 ActionScript 的语言特征(诸如面向对象)和 Java 极为相似, 甚至 完全一致。 Flex Builder 是基于 Eclipse 构建的,可以同时以独立产品和插件的形式提供。几乎所 有的 Java 开发人员都使用 Eclipse 进行开发,所以他们自然对 Flex Builder 不会陌生。Flex 还提供了大量 Ant 任务,为自动构建 Flex 工程提供了足够的支持。而 Ant 则早已成为 Java 开发人员和 Java 社区最密切的朋友,这又为 Java 开发人员向 Flex 领域进军提供了天然的 条件。 Flex 的优势在于构建绚丽的用户界面,提供所谓的“富客户端”体验,业务处理并不 是 Flex 的强项,毕竟 ActionScript 的数据结构、语言特性及库函数支持尚不能和成熟的高 级语言(诸如 Java、C++等)相提并论,Flex 的开发者们在 Flex 面世时就考虑到了 Flex 的定 位, 同时推出了其获取后台服务的工具——LiveCycle Data Service ES。 LiveCycle 组件为 Flex 前端提供了多种与 Java 后台交互的方式, 如远程对象调用、Java 消息服务和数据管理服务。 我们将在后面的章节用大量的篇幅介绍这几种与后台服务交互的方式。 综上所述,基于 Flex 框架构建的 RIA 应用允许 Java 开发人员利用强大和成熟的 Java 平台实现复杂的服务器端业务逻辑;同时用 Flex 能取代传统的 Java 用户界面技术如 JSP, Servlet 等,提供极为出色的用户体验和数据展现能力。 可见 Flex 和 Java 的结合实在是既自 然而又必然的事情。