最近完成了一个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 开发时要对可能遇到奇怪的问题做好充分的思想准备.
- 大小: 229.7 KB
分享到:
相关推荐
在深入探讨Flash与Flex3结合学习的心得体会之前,我们首先要理解这两个技术的基本概念。Flash是一种用于创建互动式矢量图形、动画、视频和应用程序的软件,而Flex3则是一个基于ActionScript3的开放源代码框架,用于...
描述中提到的“博文链接”指向了一个ITeye上的博客文章,虽然具体内容未提供,但通常博主会分享一些学习Flex的心得体会或者教程。博客编号“1674004”可能是该文章的唯一标识,用于在网站上查找。遗憾的是,由于实际...
这篇“Flex学习笔记”可能是作者在深入研究Flex技术过程中整理的心得体会和实践案例,结合了《Flex3权威指南》这本书的内容。 在Flex中,ActionScript是核心编程语言,它是基于ECMAScript的一个版本,专门针对富...
这篇博文可能是作者在进行一系列Flex应用测试后的心得体会和经验分享。 在描述中提到的“NULL”,可能意味着博客原文没有提供具体的描述信息,或者该字段在压缩包中为空。通常,这样的描述会包含一些关于博客内容的...
这篇博文链接(https://java-007.iteye.com/blog/168760)可能包含了博主对于Flex学习和实践的心得体会,或者是对Flex某些特性的深入解析。由于无法直接访问这个链接,我们将主要围绕Flex框架本身的知识点进行展开。...
总的来说,前端开发是一个持续学习的过程,不仅要掌握基础知识,还要不断跟踪新技术和最佳实践。同时,理论学习与实际项目经验相结合,才能更好地提升技能。希望这些知识点和书单能对你在前端开发的道路上提供帮助。
首先,建立概念模型,包括供货商一、供货商二、供货商三、库存一、库存二、库存三、销售商一、销售商二、销售商三等。 2. 建立Flexsim模型 其次,建立Flexsim模型,包括加入实体、连接端口、发生器的参数设置、...
对于开发者来说,微信小程序的开发门槛相对较低,加之庞大的用户基数,使其成为了一个极具吸引力的开发平台。 ##### 2.2 开发工具的强大 微信开发者工具为开发者提供了一站式的开发服务,包括代码编辑、实时预览、...
### DIV+CSS布局大全 #### 一、引言 在网页设计与开发过程中,页面的美观性和用户体验至关重要。DIV+CSS作为一种高效的布局方式,能够...希望本文能对大家有所帮助,也欢迎各位分享更多关于DIV+CSS布局的心得体会。
无论遇到技术难题或是其他问题,我们都会互相帮助,不让任何一个人成为项目进度的阻碍。这种团结一致的精神,使得我们的团队能够迅速解决问题,保持项目的顺利进行。 此外,良好的沟通也是我们团队成功的关键。我们...
#### 四、心得体会与总结 通过本次实验,不仅学会了如何使用`cross-tools 4.3`搭建交叉编译环境,更重要的是在这个过程中学会了一种解决问题的方法。遇到问题时,应该积极寻求解决方案,而不是轻易放弃。此外,良好...
- Flex是一个灵活的词法分析器生成器,用于识别输入文本中的词法单元。 2. **使用Bison和Flex的意义:** - 在处理复杂的语言结构时,Bison和Flex可以帮助生成高效的解析器。 - 对于开发gSOAP这样的工具而言,能够...
在本文中,作者分享了基于Vue、iView、Less和ECharts开发实战项目的心得体会,以下是关于这些技术栈的一些关键知识点和经验总结: 1. **Vue与iView的结合使用**: Vue是一个轻量级的前端框架,提供组件化开发能力...
1. **词法分析**:设计并实现一个词法分析器,识别并处理源代码中的关键字、标识符、常量和运算符。 2. **语法分析**:构建上下文无关文法(CFG)并使用解析器生成器(如yacc/bison)生成语法分析器,确保源代码符合...
6. **建议与体会**:提出改进编译器的建议,分享实验过程中的心得和经验,如调试技巧、团队协作经验等。 ### 综合分析与结论 通过编译原理实验,学生不仅能深入理解编译器的工作原理,还能掌握软件工程实践中的...