从测试介绍到商业供货

2004年3月29日(公历),Macromedia公司在旧金山宣布Flex立即供货。MXML作为这个开发框架的标记语言,进入商业产品的使用阶段。它面向企业应用开发者:用文字描述界面,再借助Flash Player运行,让客户自助服务、产品配置和数据看板具备较丰富的交互操作。

这套方法在供货前已有公开介绍。2003年保存的原厂技术文章已展示MXML程序,并邀请读者加入Flex测试。作者克里斯托夫·科恩拉茨(Christophe Coenraets)是Macromedia的技术推广人员,曾研究把Flash前端与Java服务器连接起来。他讲解的设计把界面排列与交互逻辑分开,让熟悉文本编程的开发者使用公司的组件库。

参考:[1] [2]

用嵌套标签安排界面

MXML以可扩展标记语言(XML)为基础。程序员写出按钮、输入框、列表等标签,设置名称、大小和显示文字;ActionScript则负责点击以后怎样处理数据。Macromedia提供的组件包括树形目录、数据表格和分页面板,开发者可以直接组合这些部件。

科恩拉茨用三窗格邮件界面说明布局:外层HBox容器把目录树和右侧区域横向排开;右侧再放一个VBox,把邮件表格和正文区上下排列。嵌套关系同时表达了界面的结构与排列规则,程序员不必逐个计算所有控件的坐标。需要自由定位时,2004年版本另提供Canvas容器,允许指定横纵坐标。

参考:[2]

一个复制文字的程序

2004年版本所列的HelloWorld.mxml只有两个TextInput输入框和一个标着Copy的按钮。两个输入框分别取名source和destination;按钮的点击处理写成destination.text=source.text。用户输入文字后按下按钮,源框的文字才被赋给目标框。这一小例子把两种语言的分工放在同一文件中:标签创建控件,ActionScript语句处理操作。

如果动作复杂一些,程序员可以把赋值语句放入名为copy的函数,再让按钮调用它。文章还说明,一个MXML文档本身会成为一个类,其中的脚本函数成为这个类的方法。较大的项目也可以把脚本移到独立文件,使界面布置与程序逻辑更便于分别维护。

参考:[2]

服务器编译,客户端执行

早期Flex作为表示层服务器,安装在Java应用服务器或Servlet容器之上。开发者用文本编辑器或集成开发环境编写.mxml文件,再将文件放进服务器的应用目录,也可以随整个网络应用一起部署。产品发布稿列举了WebSphere、WebLogic、JRun和Tomcat等运行环境。

用户首次请求该文件时,服务器把MXML编译为Flash字节码文件,交给客户端的Flash Player执行。服务器保存编译结果;同一源文件没有改动时,后来的请求可以使用缓存,文件改动后则重新编译。界面的交互代码因此在客户端运行,读取业务数据时再调用服务器服务。

参考:[1] [2] [3]

从输入框连接到业务服务

MXML也用于描述非可视的连接。科恩拉茨举出旅行应用:订座、目的地介绍和天气可能来自不同服务,界面需要把这些信息汇集起来。Flex为此提供WebService、HTTPService和RemoteObject三类数据服务组件,开发者用相应标签建立连接。

文章的股票报价例子把输入框里的证券代码绑定到查询参数;用户点击查询按钮后调用服务,再把返回结果绑定到报价标签。绑定使界面值与请求、结果之间的联系可以直接写在标记中。这里有输入送往服务、结果送往显示区两条不同的数据流,查询仍由按钮动作触发。

参考:[2]

组件复用与后续文档

开发者也能把一组控件保存为自己的组件。原文把三个单选按钮放进纵向容器,制成信用卡选择器;保存为CreditCardChooser.mxml后,其他应用便可用同名标签装入它。这样,组件库之外的业务界面也可以反复使用。

开发工具与文档随后继续变化。3月的发布稿仍把代号Brady、基于Dreamweaver的可视化工具列为当年稍后推出的计划;同年11月初版的Flex 1.5入门手册已把Flex Builder列入编辑环境。该手册继续用文字复制和数据绑定解释MXML:一个文本区可以跟随输入框的值更新。商业供货、开发工具以及后续手册由此构成几个相接但不同的阶段。

参考:[1] [2] [3]