InfoQ

InfoQ

新闻

我的书签

登录注册 以永久保存书签。

该内容已经被标记书签!

标记书签错误,请重试!

Flex RIA生态圈现状分析

作者 Moxie Zhang 译者 张龙 发布于 2010年1月13日

领域
语言 & 开发
主题
RIA ,
Java
标签
Flex

2004年3月,Macromedia(2005年被Adobe收购)发布了Flex 1.0。从那时起,基于Flex的RIA开发获得了越来越多的动力,RIA也已经成为广泛接受的Web应用开发方式。今年,Adobe将发布Flex 4,随之而来的是Flash Builder 4以及Flash Catalyst,他们都将成为Adobe Flash Platform技术的组成部分。最近InfoQ回顾了当前的Flex RIA生态圈以明晰Adobe Flex的现状。

Flex开发环境

Adobe Flex Builder仍然是使用最为广泛的商业Flex IDE。它构建在开源的Eclipse IDE平台之上。在Flex 4发布后,Flex Builder即将更名为Flash Builder。除此以外,Adobe Flash Catalyst目前还处在beta版,这是一款设计工具,旨在通过集成设计与编程以将Flash设计人员与Flex开发人员联系起来。

除了Adobe的工具外,Flex开发也已经深入到了现有的各种IDE中。

应用框架

开发软件框架的目的在于实现常见的软件开发模式以提高编程生产率及改善质量。InfoQ注意到2008年推出的一些Flex/ActionScript框架对于Flex使用率的提升功不可没。他们是CairngormPureMVCModel-Glue:FlexFoundryGuasax Flex Framework、ARPFlest FrameworkEasyMVC以及Adobe FAST。从那以后涌现出了越来越多的框架,这些框架丰富了Flex开发生态圈:

  • Ruboss这个Flex框架集成了Ruby on RailsMerb。它还有一个RESTful接口以与Adobe AIR的嵌入式SQLite数据库进行通信。Ruboss框架与Rails和Merb应用的关系就好像是Adobe LiveCycle Data Services ES与J2EE应用的关系一样。
  • Mate Flex框架发布于2008年,其目的是简化事件驱动的Flex应用开发。
  • Swiz是个面向Flex的IoC框架。它并没有太多的强制要求,比如目录结构或是样板代码等,这一点与其他框架如JEE大不相同。
  • Prana是又一个面向ActionScript的IoC框架。它基于Spring框架的XML方式进行开发。
  • JumpShip是个ActionScript MVC框架,包含了标准的数据模型以进行自动化的数据分类、枚举以及搜索。它反对在框架中使用单例模式,而单例模式在现代的软件框架中得到了广泛的应用。
  • GAIA是个面向Adobe Flash的前端ActionScript框架,支持Flex Builder。
  • Razor是个ActionScript组件框架,对常用的Flex组件提供了另一种选择。
  • Flight Framework是又一个ActionScript框架,支持MVC及其他设计模式。

Flex与AIR开发工具支持

如果没有调试、测试、日志以及文档,软件开发怎能进行下去。在过去几年中,Flex/ActionScript社区创建了大量的开发支持工具。

  • RIATest是个面向Flex的GUI自动化测试工具。它支持Windows以及Max OS X。
  • Flexcover是个面向Flex、AIR以及ActionScript 3的开源代码覆盖率检测工具。
  • Alcon是个轻量级的调试工具,支持ActionScript3、Flex及AIR开发。
  • Fluint(Flex unit and integration的简称)是个面向Flex 2/3应用的测试框架,无论应用是通过Adobe Flash Player部署在Web浏览器中还是通过Adobe AIR部署在桌面上。
  • Arthropod是个面向Flex和AIR开发的调试工具。凭借Arthropod,开发者可以在运行期轻松调试应用。
  • De MonsterDebugger是个面向Adobe Flash、Flex及AIR项目的开源、轻量级,但功能完善的调试器。它完全使用Adobe AIR开发
  • ASTUce是个衰退测试框架,其灵感来源于xUnit架构,如JUnit。它支持对ActionScript 3的单元测试。
  • AsUnit是个面向ActionScript  3的开源的单元测试框架。AsUnit 2.x已经完全集成了Flash IDE。
  • FlexMonkey是个面向Flex应用的测试框架,它可以对Flex UI功能进行捕获、重放以及确认。FlexMonkey可以记录并回放Flex UI的交互并生成ActionScript测试脚本,这些脚本可以轻松集成到持续集成过程中。
  • Xray是个Flash应用检测工具,用于在运行期调试应用而不会增加应用负载。
  • FlexPMD是由Adobe创建的,旨在通过审查AS3/Flex源代码目录来改进代码质量和检测常见的最差实践。
  • Natural Docs是个文档生成工具,支持多种语言,包括ActionScript 3。

Flex企业级开发

Adobe在企业应用系统开发上投入了大量的人力物力。大多数企业系统都需要服务端开发和集成,Adobe的开源产品BlazeDS及商业产品Livecycle DS在这其中扮演着重要的角色。此外,Flex/ActionScript社区也开发出了各种服务端集成工具以支持Flex企业级RIA开发。

  • Potomac framework for Flex用来开发大规模的Flex应用,它利用了模块化方法而没有使用Flex模块框架。其灵感来源于OSGi,后者则被众多的应用服务器厂商使用以支持服务端的模块化功能。
  • FluorineFx提供了一个Flex/Flash Remoting、Flex Data Service以及实时消息功能的.NET框架实现
  • FxStruts则是一个开源的程序库,提供了与Struts中的bean:write相同的功能,但其输出格式为AMF或是XML。
  • X2O是面向Adobe Flex应用的基于Web的数据建模平台。它会生成一个远程托管框架,这样开发者只需编写客户端即可。
  • Spring BlazeDS integration是个Spring组件,用于简化以Adobe Flex作为前端的基于Spring的RIA开发。
  • Spring ActionScript以前叫做Prana framework(上面提到过)。
  • Granite Data Services是个免费(基于LGPL)的组件,作用与Adobe LiveCycle Data Services一样。
  • Red5是个开源的Flash服务器,使用Java编写。
  • AmFast是个面向Python的Flash Remoting框架,支持NetConnection与RemoteObject RPC。
  • Exadel Flamingo可以将Flex、JavaFX、Swing、J2ME以及Android SDK粘合到Seam、Spring及JEE中。
  • 还有面向各种脚本语言的Flash Remoting支持:面向PHP5的PHPObjectSabreAMF、面向JEE的OpenAMF、面向Perl的AMF::Perl以及面向Python的AmFast

展望未来,Flex RIA开发的下一领域将是移动平台。一系列事实表明即将发布的Adobe Flash 10.1将能够运行在大量的智能设备上,比如将要发布的Google Nexus One phone将安会安装Flash 10.1。一旦Flash移动技术横空出世,Flex社区将会大举进军移动平台。

InfoQ将会持续关注并报道Flex RIA领域的最新进展。

查看英文原文:The State of Flex RIA Development Ecosystem

译者 张龙 热衷于编程,乐于分享,对新技术有强烈的探索欲,对Java轻量级框架有一定研究。

分析得不错 发表人 Angel Black 发表于
Re: 分析得不错 发表人 Angel Black 发表于
Re: 分析得不错 发表人 yang tede 发表于
纯粹扯淡 发表人 Adams Xu 发表于
Re: 纯粹扯淡 发表人 lou Luax 发表于
基于RIA Flex Flash 平台开发的进销存企业信息管理系统开发经验 发表人 tangu soft 发表于
  1. 返回顶部

    分析得不错

    发表人 Angel Black

    Flex 的确是一个非常优秀的平台,相对各个平台来说,它是找到了他的优势(跨浏览器和平台)不过就目前的应用情况来说,未来应该还是很乐观的。但是确实在网速效率低下的时候用起来是折磨。

  2. 返回顶部

    Re: 分析得不错

    发表人 Angel Black

    不知道真的是不是如预言说所,在未来的5-10年之内 Adobe 的地位不会被撼动。

  3. 返回顶部

    Re: 分析得不错

    发表人 yang tede

    最近看韩国的网站,很多都采用flash,不是那种豆腐块,是全站用flex开发。
    这就是带宽带来的优势啊。

  4. 返回顶部

    纯粹扯淡

    发表人 Adams Xu

    Flash和Flex如果再以这么慢的速度发展下去,过不了三年就消亡了

  5. 返回顶部

    Re: 纯粹扯淡

    发表人 lou Luax

    同意。
    不会得到广泛应用。执行效率比不过传统软件,桌面程序跟系统交互比较弱,门槛没有传统web那么低,web应用又做不好seo,编码方式过分死板(指的是mxml),非常尴尬。
    唯一看好的是webgame应用,也就是说他只适合于特殊应用,比如全站flash这种少数群体的需求。

  6. 返回顶部

    基于RIA Flex Flash 平台开发的进销存企业信息管理系统开发经验

    发表人 tangu soft

    基于RIA Flex Flash 平台开发的进销存企业信息管理系统开发经验

    (欢迎转载,转载请注明作者,尊重版权)

    作者www.tangusoft.com



    关键字: RIA Flex 应用成功案例 实际项目

    四,基于Flex的进销存系统演示地址


    www.tangusoft.com/Demo/


    一.中小企业进销存系统和运行平台以及技术架构



    1. 中小企业进销存系统特点:

    a. 目标客户

    零售批发中小企业,企业规模人数500人以下,销售额1500万元以下。

    b. 数据操作频繁

    每天频繁操作销售和采购以及仓库出入库,经常需要查看企业基本信息,包括商品信息,客户供应商信息,应收应付。并且需要快捷的操作系统。

    c.存储数据量有限

    商品信息大概5000条,客户供应商大概1000,

    每天单据信息大概50条,每年单据信息大概20000条

    d.并发操作用户数量固定

    销售员,采购员,经理,财务,大概20人左右。

    e. 用户使用地点不同

    需要直接方便浏览器访问系统

    f. 客户浏览器处理功能强大

    目前客户电脑普遍内存1G, 处理器 双核2.0 以上

    g.中小企业普遍软件预算不高

    同时也尽量避免盗版软件引起的法律诉讼和纠纷。



    2. 运行平台和系统架构

    根据中小企业进销存系统的众多特点,同时考虑技术成熟度和新技术风险,我们决定采取以下运行平台和系统架构

    运行平台 Linux Apache Tomcat Mysql

    系统架构

    表现层Flex 3

    数据处理和控制层Blazds + Spring + Ibatis



    Flex/Flash 具有以下优点

    客户端 界面友好,数据表现能力强大,处理能力强大,有一定的缓存数量的能力,减少服务器请求次数,节省不必要的网络传输。

    BlazDS 能够处理并发用户的请求,并且能够压缩数据。

    Spring 声明性的代码配置,减少系统维护工作量

    Ibatis 减少实际编码,考虑以后支持多种商业数据库



    运行平台免费,企业零预算。



    二,框架和代码生成器





    1. 选择成熟的Flex 框架



    cairngorm 和 pure MVC 是目前成熟的open source 框架。

    基于Adobe 支持和维护cairngorm,所以采用cairngorm

    同时cairngorm 对view 表现层 和 control 控制层 的 隔离和耦合没有成熟的解决方案,开发过程我们曾经使用ViewControllerHelper ,用addListener监听器监听event 事件的执行,实际过程发现代码维护成本太高,遂中途放弃。

    最后我们同时引进universal mind cairngorm作为补充辅助框架。

    2. Ibatis 代码生成器

    选择Abator





    三,解决方案

    1. 客户端尽可能使用单例模式

    减少不必要的客户端内存开销

    2. 适度利用客户端缓存

    对于商品以及客户供应商, Flex 缓存这些数据,各模块共享数据。

    3. 尽可能的采用lazy load 惰性载入数据

    很多Flex 系统采用初始化时候一次性载入系统所需要数据,结果导致延长用户登录时间,用户体验非常的差。

    4. 不要过度依赖客户端处理能力

    特别是大数据排序或者处理请求大数据能力的时候,flex 很容易导致浏览器停顿和不响应。请把大数据排序放在Java或者数据库端,适度的分页分段向服务器请求数据。

    5. 最大有效的利用Flex 3新的类库。

    减少开发工作量。

    例如利用arraycollection 内置的filerfunction 进行查找数据。

    6. 定制开发一些特有的控件

    带合计栏的datagrid

    能模糊查询的combobox

    7.报表开发

    使用成熟的jasper report 框架。

    8. 用户权限的开发

    动态创建用户所能操作的模块,而不是简单控制模块的可见和不可见属性

    9. 减少生成swf 大小

    使用runtime shared library 编译swf

    10. 开发模块组件化

    判断标准是没有出现冗余重复模块代,application mxml 文件代码简洁

    11. 模块之间的数据和方法调用



    A模块引用B模块的数据d和方法f,避免简单的调用B.d 和 B.f

    需要采用数据和方法的传递,以免多层次的模块数据和方法调用导致代码的复杂。

    12 使用resource bundle

    标签和文本以及提示从resource 文件读取。

深度内容

应用云平台的可用性——从新浪SAE看云平台设计

云计算平台的可用性,相比传统互联网服务而言,更加复杂和困难,也更具有挑战性。本文借助新浪SAE云平台为读者讲述了云平台可用性的定义、如何打造高可用的平台,以及对云计算的用户提出了建议。

JVM定制改进 @ 淘宝

淘宝高度重视Java平台的健康发展,组建了一个团队专注于Java平台的底层部分的性能、功能与稳定性改进;工作主要基于OpenJDK中的HotSpot VM开展,其中一些通用的功能随后也会逐渐反馈给OpenJDK社区。希望能与使用Java平台开发应用的大家交流经验。
本次演讲视频录制于QCon杭州2011

"伤得起"的云计算应用——对云端应用之架构的思考

2011年4月21日至22日是值得云计算从业者纪念的日子。Amazon的IaaS服务出现故障,导致许多商业网站的服务中断,影响非常严重。作为云计算用户,我们需要思考的是,如何保证即便在云服务不可用的情况,我们的应用架构仍然能够屹立不倒?本文正是站在云计算用户的角度试图探讨这一问题。

让交付的速度跟上思考的速度

12人的技术团队,4组刀片服务器,每月20亿的访问量,每日1次准时部署,99.9%的可用性。这可能吗?当然。想知道如何做的吗?百姓网将与您分享他们在DevOps实践过程中的经验和技巧。
本次演讲视频录制于QCon杭州2011

架构之路——穿行在产品和业务之间

篱笆作为一家起源于社区的电子商务公司,反映到技术层面就是同时要面对产品和业务,以及经营战略的变化调整。如何在产品和业务的夹缝之间完成技术架构的抽象与平衡,寻找更有效的价值定位,这当中有些经验教训和个人感悟愿与众人分享。
本次演讲视频录制于QCon杭州2011

特性注入:成功三部曲

本文将对特性注入以及相关方法做一个扫盲性的介绍。我们会解释这个框架的关键要素,并附上实例来证实它们。为了让文章保持相对较短,我们不会深入到某个工具或方法中,而是会给出一些参考资料,以便大家做进一步的研究。

解析JDK 7的动态类型语言支持

随着JDK 7的发布,字节码指令集终于迎来了第一位新成员——invokedynamic指令。这条新增加的指令是JDK 7实现“动态类型语言(Dynamically Typed Language)”支持而进行的改进之一,也是为JDK 8可以顺利实现Lambda表达式做技术准备。在这篇文章中,我们将去了解JDK 7这项新特性的出现前因后果和它的意义。

Java Remoting远程服务(下)

随着互联网应用的发展,Java分布式远程服务技术受到越来越多的关注,本文将对各种相关实现以示例的形式逐一介绍,并总结其中的优缺点,使读者能够在技术选型时有所准备。这是文章的下篇。