Flex

一,概述

Flex是基于Adobe Flash平台的开发与部署跨平台的RIA应用(rich internet applications)的软件开发工具包.它是一系列发展中的技术和产品线的概括词,包括Flex Framework, Flex Builder 2, Flex Enterprise Services 2等。

Flex应用程序可以通过Adobe Flash Builer(前身为Flex Builder)的IDE编写,也可以直接使用Adobe的免费编译工具编写.

FLEX试图通过提供一个程序员们已经熟知的工作流和编程模型,让程序员比从前更快更简单地开发动画及RIA应用。在多层式开发模型中,FLEX应用属于表现层。FLEX的语言和文件结构也试图把应用程序的逻辑从设计中分离出来。

二,Flex的版本历史

版本

推出日期

售价

简介

Flex 1.0

2004年3月

-

FLEX首发版包括一个软件开发工具包,一个IDE,和一个J2EE集成应用即Flex Data Services.FLEX最初是作为一个J2EE应用,或者可以说是JSP标签库而发布的。它可以把运行中的MXML (FLEX标记语言)和 ActionScript编译成FLASH应用程序(即二进制的SWF文件).Flex Server 1.0 and 1.5的目标市场是企业应用开发,US$15000 每CPU。每个许可证包含五个Flex Builder许可证。使用收费的Flex Framework技术。

Flex 1.5

2004年10月

-

Flex 1.5的重点在于表现层,由于SWF客户端只需要载入一次,大大改善工作流。Flex Builder 1.5 是基于Dreamweaver编码环境的服务于Flex 1.5的编程环境,实现了设计/代码视图,高亮语法显示,代码缩进和应用预览等功能。

Flex 2.0 (Alpha)

2005年10月

-

Flex是第一个被Adobe冠上Adobe商标而重新命名的原Macromedia 产品。Flex2和AS3的巨大变动在使用者社区引起了巨大的争议。2005年后,由于Adobe收购了Macromedia,所以Flex后续版本无需Flex Data Services许可证,而Flex Data Services也被发布成了一个独立的产品LiveCycle Data Services.

Flex 2.0 Beta 1/2/3

2006年2月/3月/5月

-

Flex 2改变了许可模式,把原Flex Framework技术加入到免费的Adobe Flex 2 SDK,全新于1.5的 Flex Builder 2 基于Eclipse IDE是收费的,但Flex编译器是免费的。

Flex 2.0 Final

2006年6月28日

-

Flex 2并引入了新版本的语言ActionScript3的使用,这需要 Flash Player 9 以上版本作为运行时(runtime)。ActionScript 3是Flex Framework的核心。虽然语法和AS2类似,但它更加面向对象化和类型化。而且因为在新的虚拟机中运行,所以比AS2快得多。

Flex 2.0.1

2007年1月5日

-

当然,对于有特别需要的用户来说,仍提供收费的企业级服务。Flex2.0中把RemoteObject分离成为一个组件单独来收费,称为Flex Data Services 2(FDS,在Beta2之前旧称Flex Enterprise Services 2),是Flex 1.5 server的下一代,提供诸如data push和自动测试等高级功能。但同时提供免费的限制授权用于单一CPU主机的Flex Data Services Express。

Flex 3.0 Beta 1(Moxie)/2/3

2007年6月/10月/12月

-

支持AIR,IDE增加了profiling和refactoring工具

Flex 3.0/AIR 1.0

2008-2-25

-

2008-1,Flex 3 SDK(包括Flex Builder IDE和LiveCycle Data Services)按Mozilla Public License开源发布.其中Adobe Flash Player,Flex Builder保持闭源.

Flex 3.1

2008-8-15

-

-

Flex 3.2

2008-11-17

-

-

Flex 3.3

2009-3-4

-

-

Flex 4

-

-

-

三,开发环境

1,Flex的客户端: 须安装Flash Player

Flash Player: 8.5版本开始加入AS3虚拟机,作为FLEX2应用的运行时(runtime)

2, Flex的服务器端:

(1). web服务器端

1). 纯静态web 服务器,仅返回一个简单的静态HTML页面。此时的Flex 应用程序的SWF 文件嵌入到一个HTML 页面中。

2). web应用服务器,如JRun、ColdFusion 或者PHP,它们可以动态地生成页面。在这种情况下,你将使用到与服务器技术相关的库,并动态地处理它们的内容。

3). J2EE应用服务器或servlet 容器。向一个J2EE 应用服务器或servlet 容器发出请求,如JRun、Tomcat 或WebSphere,通常你需要使用Flex Data Services。

(2). 数据服务器端:Adobe Flex Data Services (FLEX服务器):通过使用Flex Data Services,大大地增强了Flex 2 SDK 的功能性。Flex Data Services新增了对企业通信的支持(提供一种发布/订阅的通信架构),以及对于Flex 2 SDK 的数据服务支持(使本地处理的数据和服务器端同步)。你可以在J2EE 应用服务器上或者servlet 容器里将Flex Data Services 发布为一个标准的web 应用程序。Flex Data Services 能够简化操作服务器上数据的编程模式。支持自动测试。支持创建静态文件(使用解释编译方式并且不需要购买服务器许可证就可以在线部署)。它也是客户端和XML Web Services及远程对象(Coldfusion CFCs,或Java类,等支持Action Message Format的其他对象)之间通讯的通路。

www.deepcast.net_deepcast_userfiles_2007-3_9_20073995354548.jpg3,Flex设计开发工具: Flex产品线包括了进行设计、开发、发布整套RIA 所需的一系列产品。它们是:

1). Adobe Flex SDK(Software Development Kit):是技术实现和程序编制的基础集合,它使你可以使用Flex 系列产品来创建应用程序。Flex 2 SDK 包含了Flex Framework构架(类库),Flex 编译器,调试器,MXML 和ActionScript 编程语言,以及其它实用程序。Flex SDK 还包括了核心Flex 构架类库的源代码,使你可以学习这些类的代码并扩展它们以备你自己的使用。

2). Adobe Flash Builder(Flex Builder): FlashBuilder是Flex开发的官方IDE

3). Adobe Flex Charting : Flex Charting 图表组件: 提供平滑的数据可视能力,可看作是Flex Framework的扩展。FLEX还有其它多种组件,可实现Web Services,远程对象,drag and drop,列排序,图表等功能;

www.deepcast.net_deepcast_userfiles_2007-3_9_200739102744474.jpg

四,Flex编程语言

Flex编程语言(编程模型)包括MXML、ActionScript编程语言和 Flex 类库,Flex应用程序会被实施为 ActionScript 类库。 Flex通过将 MXML 和 ActionScript 语言与该类库一起使用来开发应用程序。常用MXML来设置用户界面,并用ActionScript来编写响应用户交互的逻辑。

1,MXML 标签与 ActionScript 类或类的属性相对应。 当您编译 Flex 应用程序时, Flex 会解析 MXML 标签并生成相应的 ActionScript 类。 接着它将这些 ActionScript 类编译成存储在 SWF 文件中的 SWF 字节码。

提示: 若要查看 Flex 生成的中间 ActionScript 文件, 请将 –keep-generated-actionscript 选项添加到 mxmlc 命令中。

www.deepcast.net_deepcast_userfiles_2007-3_12_200731295245981.jpg

2,AS 3 是完全面向对象编程语言。AS3全面兼容ECMAScrip标准(JavaScript 2.0的基础标准)。每个类都继承父类的方法属性等。如以下继承关系:Alert→Panel→Container→UIComponent→FlexSprite→Sprite→DisplayObjectContainer→InteractiveObject→DisplayObject →EventDispatcher→Object

3,Flex 类库包括了Flex 组件类(可视组件,容器和控件)、管理器类、数据服务类(RPC即Remote Procedure Control,Messaging和Data Service类),以及其他功能的类。在Flex Builder 2中,可以充分利用帮助功能查看类对象,可先在源码中选定某类名,然后按F1即可。该类库包含组件 (容器和控件)、管理器类、数据服务类和所有其他功能的类。

4,MXML 和ActionScript的结合: 虽然MXML 和ActionScript编程语言都提供了访问Flex 类库的能力。但通常的做法是:使用MXML 去定义用户界面的组件布局(如果用AS来做也可,但代码更长更复杂),使用ActionScript 去定义客户端的逻辑并进行控制。

1) 可以在MXML中使用Script 标签来包含ActionScript

2) 还可将脚本块分隔到外部 ActionScript 文件中

3) 使用外部ActionScript 类。

5,Flex 类库调用方法:

1), 使用该组件的全名(全路径):

mx.controls.Alert.show("Do you want to save your changes?");

2),导入一次,多次使用:

import mx.controls.Alert; Alert.show("Do you want to save your changes?");

五,Flex面向对象编程

Flex面向对象编程

为了增强系统的复用性和可维护性,采用具有良好体系架构的Model-View-Controller(MVC)开发模型。

1). 模型(Model) 组件封装了数据和与数据相关的行为。

2). 视图(View) 组件定义了应用程序的用户界面和其他数据的显示。Flex 创建一个应用程序时,你使用组件(容器containers 和控件controls)来描述用户的操作界面。例如,容器可以是一个用来进行数据输入的表格容器,如一个盒框Box 或一个栅格Grid;而控件就是该表格中的元素,如一个按钮/Button 或文本输入栏Text Input field。

3). 控制器(Controller) 组件则负责处理程序中的数据连接。

六,Flex的安全机制

出于安全方面的考虑,在客户端的Flash Player 中运行的应用程序,只有在满足如下条件之一的情况时才能访问远程的数据源

1). 应用程序所编译的SWF 文件与远程数据源位于同一个域中。

2). 使用代理(proxy),并且你的SWF文件位于和代理相同的服务器上。Adobe Flex Data Services 为Flex 应用程序提供了一个完整的代理管理系统。同时,你还可以通过使用一种web 脚本语言,如ColdFusion、JSP、PHP 或者ASP 来创建一个简单的代理服务。

3). 安装crossdomain.xml (跨域策略/cross-domain policy)文件在数据源的宿主Web 服务器上。crossdomain.xml 文件允许位于其它域中的SWF 文件对数据源的访问。

参见

《Flex第一步》官方小组| 《Flex第一步:基于ActionScript 3.0的Flex 2应用开发》随书光盘|

Flex之Repeater、XML笔记|

flash 高级编程指南|

Flex Remote Object中直接使用HttpSession的方法|

Flash Remoting 教学 1 - 下载、安装与hello world|

在Flex Data Services 2中使用RPC服务(简体)|

Adobe Flex 快速入门|

Flex 2 Essential Training|

Flex 2 Beyond the Basics|

Flex 2 Advanced: Using Data Services|

创建Flex2组件|

设计松耦合的Flex组件|

Flex中的事件机制|

关于Flex Data Services|

Flex 答客问2:Flex 2 and .NET, a nice pair ?|

Flex体系架构深度剖析.pdf|

DevelopingFlexApplications.pdf 8050k

免费培训Flex的站点|www.freeflextraining.com RIAMeeting成员进行翻译录制后的版本:http://video.anyflex.cn

Flex Application Frameworks Presentation Flex框架比较分析|

Flex 学习站点汇总|

Flex2基础教程系列|

Flex Quick Starts中文翻译|

新版 Flex Style Explorer 推出了|

在Tomcat上设置Flex|

本文最新版出处|