首先,我们来"统一口径"。说到的Flash是狭义的Flash技术,即Flash设计者(所谓的"闪客"),利用Flash制作工具,比如Flash Professional 等创意软件设计,通过逐帧绘制、编写ActionScript脚本而创作Flash作品。这些作品大多数是动画、广告、网站美工作品等。
从技术角度来看,Flex和Flash是融合在一起的。确切地说,Flex是Adobe Flash技术平台架构的重要组成成员。这里的Flash平台架构即广义的Flash。
在应用技术选型的时候,Flex和Flash二者的区别非常明显。
我不想把Flex和Flash的关系类比成Java和Photoshop,但其实很大程度上,确实是这样,即使他们的区别没有这么巨大。
Flex是面向开发者社区的,专注于企业应用的表现层解决方案,提供了大量的通用组件用于构建前端页面、通过数据服务技术帮助你更好的分离表现层、业务层和数据层。同J2EE或.Net项目类似,Flex应用是由开发者利用集成开发环境(基于Eclipse的Flex Builder)通过代码和相关配置编写、编译和部署的。
Flash是面向设计者社区的,设计师使用Flash Professional创意制作软件,像制作电影一样,在时间线上,逐帧绘制Flash。熟练的Flash设计师也使用ActionScript语言,但更多的是实现动画、特效等更多美工类型的工作。
使用Flex还是Flash,回答下面的问题:
1. 你需要开发的是RIA项目吗?
2. 是否需要同后端业务集成?
3. 是否需要同后端数据关联?
4. 界面上需要大量应用成熟的组件吗?例如按钮、文本框、下拉框?
如果你即将开发的是RIA项目或应用,Flex将是你明确的选择。
如果你在考虑使用一种技术构建业务前端,需要同后端业务逻辑关联,Flex将是你明确的选择。
如果你在考虑使用一种技术展现后端数据,例如数据仪表板(Data Dashboard),那么Flex将是你最好的选择。
如果你的应用由大量成熟的、用户熟悉的组件构成,例如文本框、按钮、下拉组合框等,那么Flex将是你更好的选择。
如果你需要为网站提供绚丽的装饰、动画或者广告,那么请使用Flash。
需要特别说明的是,在Flex项目中,我们依然会需要传统的Flash技术。利用Flex Builder,可以直接嵌入并调用Flash设计作品。