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面向对象编程
为了增强系统的复用性和可维护性,采用具有良好体系架构的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 Remote Object中直接使用HttpSession的方法|
Flash Remoting 教学 1 - 下载、安装与hello world|
在Flex Data Services 2中使用RPC服务(简体)|
Flex 2 Advanced: Using Data Services|
Flex 答客问2:Flex 2 and .NET, a nice pair ?|
DevelopingFlexApplications.pdf 8050k
免费培训Flex的站点|www.freeflextraining.com RIAMeeting成员进行翻译录制后的版本:http://video.anyflex.cn