近期一个flex 项目的心得体会

最近完成了一个flex 的项目,客户端使用flex3 实现,服务器使用struts2,spring,hibernate,客户端-服务器通信数据格式使用自定义的xml文档.通过这个项目,对flex/flash 平台有了更深入的认识,记录下来,希望能够对准备采用flex进行开发的同志(不要误会哈)有所帮助.在进入正题之前,先秀张截图:

 

 

下面转入正题:


Flex ria在界面方面和传统的webapp 界面是两种截然不同的架构.
在传统的java web 应用中,无论是struts 这样的mvc 框架,还是jsf,wicket这样的服务器组件框架,状态都是在服务器端保存和管理,界面组件在服务器端根据数据生成所有的在浏览器显示需要的内容,包括html,css,javascript 等.虽然在一些javascript 的框架(例如,dojo,gwt)支持下,也可以实现”one page application”,但你仍然可以选择状态由服务器管理这种方式.
使用了flex 以后,没得选择了,所有flex 中的组件都是和本地的数据进行绑定, 整个应用也变成了一个swf文件(模块化的可能有多个swf文件),你必需考虑

  • 如何用”navigation container”,”view state”等来构造视图导航;
  • 设计一套数据通信格式(无论是基于xml或者json)用于flex和服务器通信,即使是准备用blazeds这样的数据通信技术,也需要服务器和客户端有一套符合amf协议要求的可以系列化的数据传输对象(dto),即如果你客户端需要一个User 对象保存用户信息,那么服务器也需要有一个兼容的User 对象,手工的方法就是在服务器创建一个java 对象,在客户端创建一个兼容的as3 对象,有一些工具可以帮助简化这个过程,例如服务器创建java对象后,自动帮你创建客户端的as3对象,但这明显增加了工作量.而且对于一些复杂的对象结构,要为其设计一个dto映射,更是麻烦.
  • 哪些数据缓存在客户端,这些数据如何同服务器进行同步.

总结:在flex ria这种客户端保持状态的模式下,需要考虑的问题和服务器端保持状态的模式有较大的不同.工作量一般也会大一些.

flex 应用开发的工作内容主要包括两部分:
一部分是程序开发,包括

  • 使用mxml和框架提供的界面组件构造用户界面,或者对系统组件进行适当的合成和扩展,以满足自己的要求.
  • 使用as3 面向对象的程序设计语言实现服务器交互,客户端数据管理,应用逻辑,事件处理等.
  • 使用某种mvc框架优化系统结构,flex 的应用程序可以在客户端缓存数据,自己管理状态,不是每个用户交互动作都需要和服务器通信,所以mvc架构的引入对于稍大一些的应用是必需的.

一部分是ui视觉效果设计和图形制作
Flex 界面外观的定制可以使用css和skin,不过css能够提供的定制功能有限,如果需要完全控制flex程序的外观,就需要用skin机制.skin 可以编程用矢量图形api绘制来实现,也可以用image 实现.一般情况下,出于时间和成本的考虑,都会采用image实现.这就要求ui设计人员理解flex 中skin 的概念和要求,将效果图切割,整理成为符合flex 要求的资源,并在程序中用css设置,应用这些资源.
总结:Flex/flash 平台除了流媒体支持外,最大的优势就是视觉效果的制作能力,如果没有好的的视觉效果,flex/flash 就失去了它的主要优势, 我认为这甚至比程序还重要.所以团队中需要有优秀的,懂flex 的ui设计人员.

 


Flash 平台有潜在的功能和质量缺陷
flash 平台可能在某些细节的部分存在缺陷或者bug,不遇到则罢,遇到了则有可能打乱你的项目计划,因为这些bug甚至在官方文档中都不曾提及,能否解决看你的能力和运气了.

  • 和java 平台庞大的类库相比,flash 平台的功能显然要弱很多,很多东西都要自己开发.即使是系统提供的api接口,可能也会存在某种缺陷.例如,服务器想以rest 的架构方式实现?那么先看看这个讨论
  • 另外一个曾经遇到的问题是使用flash 的FileReference.上传文件.服务器开发完毕后,用html form 测试上传无任何问题,但是使用FileReference 问题就来了.最后使用fiddler监控http 通信,发现FileReference 居然在上传时自动添加了一个”upload”参数,而服务器接收文件恰好也使用upload作为参数名!!按照我的看法,浏览器实现的html/http规范显然更权威,如果浏览器无问题而flash 有问题,那么结论就是flash 对规范的实现有缺陷.
  • 此外还碰到过其它一些问题,无一例外都是在文档中查不到的,好在团队中有对flash 非常熟悉的人,这些问题最终都得到了解决.

总结: 细节是魔鬼,使用flex/flash 开发时要对可能遇到奇怪的问题做好充分的思想准备.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值