Flex编程思想

一、为什么会产生这门语言

Flex是一门前台RIA语言,主要用于企业级开发,与传统的构建web页面语言有以下几个特点(JSP,JSF)

1.有复杂的交互界面,有良好的跨平台性

2.客户端能处理一些逻辑,而不像(HTML/Servlet)那样,“把所有逻辑放在服务器,客户端只接受页面”,这点带来的一个问题就是要保证客户端数据和服务端数据的一致性,这里的一致性是只要保证客户端和服务器的对象之间能进行序列化和反序列化,要做到完全一样是很难的

3.客户端和服务器运行在不同的CPU和虚拟机中,典型的分布式异构系统

4.与传统web页面不同,除了HttpService和Webservice两种通信组件外外,还有一种RemoteObject的通信组件,传递的是AMF格式的二进制数据,主要用于客户端和服务器的对象之间进行序列化和反序列化,以上三种组件都是基于Http协议的


二、编译、运行机制

Flex有自己的虚拟机AVM,用来编译和运行ActionScript文件和MXML文件,具体机制还不清楚,应该和JVM差不多,AVM和GR(图形渲染引擎)共同组成Flash Player,即Flash虚拟机

1.Flash Player的帧执行模型
与Flash动画一样,ActionScript代码和图形渲染是以帧为单位执行的,ActionScript代码和图形渲染分开执行,虽然一帧的时间都经过设定的,但这个时间其实是个弹性跑道,跟ActionScript代码和图形渲染执行时间有关

2.Flash Player的渲染模型
以Stage为根,到swf文件主类中的显示对象(包括Container和UIComponent ),一个 树状结构进行渲染

3.swf和swc
ActionScript文件和MXML文件最终会编译成swf文件在虚拟机运行,swc相当于C++中的.dll文件

由于客户端要下载服务器传来的swf,在本地虚拟机运行,对于一个应用,如果把它所有的资源都编译成一个swf文件,那么这个swf文件将会比较大,swf的大小影响页面打开的速度,Flex利用运行期共享库的技术(RSL)来把一些公用的类编译成公用的swf文件,整个交互过程就只需下载一次这种文件,每个应用再对共享的swf文件进行动态链接即可(Java也没把相关的Class文件编译成一个Class文件啊,都是进行动态链接的)


三、基本语法

1.变量之间可以自动的相互转换,比如:
var  s:String = "123 ";
var  i:int = s;。//此时的i变成了123

由于是前台语言,这种字符串转化成整型的需求有很多,但是这是自动完成的,会给程序的安全性和代码的可读性带来影响
类似的情况还有很多,Object,Array,Boolean,Date,Number,int,null,两两之间都是可以转化的

2.几个运算符
is:与Java中的instanceof功能一样
as:用来判断某引用是否为指定类型,返回的是该引用或者null
in:判断某类型是否有相应的属性

3.Array类
很少有语言把数组提出来作为一个类,该类和Flex中的ArrayCollection作用是一样的


四、特色语法

1.事件
由于传统的观察者模式是两个类之间的关系,但是由于页面交互情况有很多,无法抽象出观察者和被观察者这两个类,所以引入了一个中间层,即事件
事件可以让两个毫无关系的类发生(触发--响应)关系,即“被观察者”让自己在某个函数内被某一事件监听,而不是被某个“观察者”监听,同时注册响应函数,同样,在某个函数内触发该事件,响应函数被调用,这样就使得(响应--触发)机制很灵活的被使用

2.Module类加载
一般企业级应用都会分成很多小功能模块,这样可以把每个小功能模块编写出一个Module类,在进入该功能模块时候再把它加载进来,这样可以防止把所有功能模块编写成一个swf文件,导致主swf类过大

3.数据绑定
数据绑定很好的帮助Flex实现了客户端的MVC,被绑定的数据一般都是界面显示V的数据M,界面产生一个事件后,事件类会把相应的显示数据M传给服务器类,服务器根据传来的数据进行操作C,把返回的数据又传给M, 同时带动页面显示V的变化,完成整个MVC

4.异步调用
对应前台页面产生的某个事件,触发远程调用,在远程调用返回结果前,Flex是不会阻塞当前用户的线程,如果这时候不耐心的客户继续点击其他按钮,形成事件序列,可能就会造成死机或者返回不匹配数据,这时候可以通过进度条机制来防止这类事发生

5.组件生命周期与实效机制
当组件的属性更改时,都会调用相应的方法使其属性失效,等到下次组件布局时,或者在用户代码里面调用相应函数使组件重新布局,集中对实效的组件进行处理

五、通信框架BlazeDS
Java中的类和Flex中的类的相互转化就是靠这个框架实现
Flex类--->AMF3格式--->Java类

FlexSession和Session功能是一样

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值