最近完成了一个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文件),你必需考虑
总结:在flex ria这种客户端保持状态的模式下,需要考虑的问题和服务器端保持状态的模式有较大的不同.工作量一般也会大一些.
flex 应用开发的工作内容主要包括两部分:
一部分是程序开发,包括
一部分是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甚至在官方文档中都不曾提及,能否解决看你的能力和运气了.
总结: 细节是魔鬼,使用flex/flash 开发时要对可能遇到奇怪的问题做好充分的思想准备.