`
duker
  • 浏览: 105880 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

近期一个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 开发时要对可能遇到奇怪的问题做好充分的思想准备.

  • 大小: 229.7 KB
8
1
分享到:
评论
5 楼 徐晶鑫 2009-05-02  

用户在登录界面登录成功后。转向程序主要界面 。

你能解惑吗?

答:这可以在主程序的初始化方法时 弹出一个模态对话框(登陆) 登陆不成功 就无法继续操作,成功就关闭释放内存 
-------------------------------------------
问题:楼主 关于上传文件与struts交互 能否贴个例子  我有些疑问    如果是struts1 怎样自动将文件域和flex中的文件对应(html中是用name对应控制)
我对flex文件那块不太熟
4 楼 duker 2008-12-02  
qichunren 写道

引用”one page applicationFlex是这个样子的,但是我们在项目中不可能将所有的UI元素都写在一个MXML文件中,怎么样分开写呢?我们总不能通过as来控制这个嘛。以上是我很困惑的一点。举一个最简单的例子就是用户在登录界面登录成功后。转向程序主要界面 。你能解惑吗?

你说的这个就是界面的导航,一般是使用ViewStack 或者view states 来实现.
3 楼 qichunren 2008-12-02  
引用
”one page application

Flex是这个样子的,但是我们在项目中不可能将所有的UI元素都写在一个MXML文件中,怎么样分开写呢?我们总不能通过as来控制这个嘛。
以上是我很困惑的一点。
举一个最简单的例子就是

用户在登录界面登录成功后。转向程序主要界面 。

你能解惑吗?
2 楼 duker 2008-12-01  
h819 写道

呵呵,看来,还是等 javaFx 吧,最怕自己还要研究。

刚出现的东西,估计还是要观察观察..
1 楼 h819 2008-12-01  
呵呵,看来,还是等 javaFx 吧,最怕自己还要研究。

相关推荐

    Flash与Flex3结合学习心得体会

    在深入探讨Flash与Flex3结合学习的心得体会之前,我们首先要理解这两个技术的基本概念。Flash是一种用于创建互动式矢量图形、动画、视频和应用程序的软件,而Flex3则是一个基于ActionScript3的开放源代码框架,用于...

    Flex学习第一章

    描述中提到的“博文链接”指向了一个ITeye上的博客文章,虽然具体内容未提供,但通常博主会分享一些学习Flex的心得体会或者教程。博客编号“1674004”可能是该文章的唯一标识,用于在网站上查找。遗憾的是,由于实际...

    Flex学习笔记

    这篇“Flex学习笔记”可能是作者在深入研究Flex技术过程中整理的心得体会和实践案例,结合了《Flex3权威指南》这本书的内容。 在Flex中,ActionScript是核心编程语言,它是基于ECMAScript的一个版本,专门针对富...

    flex测试总结

    这篇博文可能是作者在进行一系列Flex应用测试后的心得体会和经验分享。 在描述中提到的“NULL”,可能意味着博客原文没有提供具体的描述信息,或者该字段在压缩包中为空。通常,这样的描述会包含一些关于博客内容的...

    Flex中文文档

    这篇博文链接(https://java-007.iteye.com/blog/168760)可能包含了博主对于Flex学习和实践的心得体会,或者是对Flex某些特性的深入解析。由于无法直接访问这个链接,我们将主要围绕Flex框架本身的知识点进行展开。...

    前端热门图书推荐,含个人心得体会.docx

    总的来说,前端开发是一个持续学习的过程,不仅要掌握基础知识,还要不断跟踪新技术和最佳实践。同时,理论学习与实际项目经验相结合,才能更好地提升技能。希望这些知识点和书单能对你在前端开发的道路上提供帮助。

    基于Flexsim的仿真实验报告.docx

    首先,建立概念模型,包括供货商一、供货商二、供货商三、库存一、库存二、库存三、销售商一、销售商二、销售商三等。 2. 建立Flexsim模型 其次,建立Flexsim模型,包括加入实体、连接端口、发生器的参数设置、...

    微信小程序开发实践:图书借阅小程序实践心得与案例解析

    对于开发者来说,微信小程序的开发门槛相对较低,加之庞大的用户基数,使其成为了一个极具吸引力的开发平台。 ##### 2.2 开发工具的强大 微信开发者工具为开发者提供了一站式的开发服务,包括代码编辑、实时预览、...

    DIV+CSS布局大全

    ### DIV+CSS布局大全 #### 一、引言 在网页设计与开发过程中,页面的美观性和用户体验至关重要。DIV+CSS作为一种高效的布局方式,能够...希望本文能对大家有所帮助,也欢迎各位分享更多关于DIV+CSS布局的心得体会。

    2019年软件开发程序员年终工作总结的范文.doc

    无论遇到技术难题或是其他问题,我们都会互相帮助,不让任何一个人成为项目进度的阻碍。这种团结一致的精神,使得我们的团队能够迅速解决问题,保持项目的顺利进行。 此外,良好的沟通也是我们团队成功的关键。我们...

    使用cross-tools4.3构建交叉编译环境

    #### 四、心得体会与总结 通过本次实验,不仅学会了如何使用`cross-tools 4.3`搭建交叉编译环境,更重要的是在这个过程中学会了一种解决问题的方法。遇到问题时,应该积极寻求解决方案,而不是轻易放弃。此外,良好...

    gsoap网络资源汇总和相关连接

    - Flex是一个灵活的词法分析器生成器,用于识别输入文本中的词法单元。 2. **使用Bison和Flex的意义:** - 在处理复杂的语言结构时,Bison和Flex可以帮助生成高效的解析器。 - 对于开发gSOAP这样的工具而言,能够...

    vue+iview+less+echarts实战项目总结

    在本文中,作者分享了基于Vue、iView、Less和ECharts开发实战项目的心得体会,以下是关于这些技术栈的一些关键知识点和经验总结: 1. **Vue与iView的结合使用**: Vue是一个轻量级的前端框架,提供组件化开发能力...

    编译原理 随课实验模板1

    1. **词法分析**:设计并实现一个词法分析器,识别并处理源代码中的关键字、标识符、常量和运算符。 2. **语法分析**:构建上下文无关文法(CFG)并使用解析器生成器(如yacc/bison)生成语法分析器,确保源代码符合...

    编译原理实验

    6. **建议与体会**:提出改进编译器的建议,分享实验过程中的心得和经验,如调试技巧、团队协作经验等。 ### 综合分析与结论 通过编译原理实验,学生不仅能深入理解编译器的工作原理,还能掌握软件工程实践中的...

Global site tag (gtag.js) - Google Analytics