Flex是咋回事之三 谁用谁知道


  一项技术,从概念提出到技术研发到商业发布,再到实际应用,最终将产品呈现在用户面前,这是一个漫长而复杂的过程。在这当中,很多有创意有生命力的技术因为各种原因小小遗憾地不幸夭折了。Flex能走到今天确实不易,下面让我们从不同的角度来看一下它是如何过关斩将,赢得众多青睐的。
  技术角度:
  (1)具备了RIA时代富客户端的优点(C/S+B/S)
  (2)支持多种服务器语言(JAVA、.NET、PHP)及主流框架(Spring、Hibernate)
  (3)与Java结合后相当强大,能充分利用Java的资源背景
  (4)拥有丰富的组件和第三方组件,对企业级的数据汇总和业务流程展现力较强悍
  (5)借助开源的力量,拥有众多民间组织和牛人支持
  (6)Adobe公司(还有MM多年积累)的强大背景
  (7)源于Flash的天生丽质,轻松使用多媒体资源,动态交互性强
  (8)借助FlashPlayer的安装普及度,轻松实现跨浏览器跨平台
  (9)良好的架构设计和制作精良的文档示例(明年FLEX4同步推出中文版)
  (10)借助于插件丰富的Eclipse开发平台并拥有独立的IDE
  (11)框架设计重用性高,有利于模块化设计
  (12)近几年发展态势良好,获得了广泛认可,产品和技术也越发成熟
  开发者角度:
  (1)开源,透明(国人没有不喜欢开源的,哈哈)
  (2)基于Eclipse开发平台,易上手,且插件丰富(巨人的肩膀啊~)
  (3)基于Eclipse平台,开发调试方便(FB4中的条件断点)
  (4)ActionScript语言与Java的融合度和相似度较高,易学易用
  (5)MXML标签与XML相似,逻辑清晰可读性强
  (6)架构设计良好,耦合度低,有利于组件重用
  (7)无需针对不同浏览器编写代码,摆脱编写和调试的噩梦(针对JS说的)
  (8)类似VB的可视化拖拽组件,快速创建界面
  (9)方便定制及使用第三方的皮肤和样式,无需美工也有好效果
  (10)支持多媒体资源,轻易开发动态交互性强的界面
  (11)众多的RPC组件保障对后台数据访问的安全性和效率
  (12)文档示例丰富,通过网络可以获取大量的学习资源
  (13)近两年发展态势良好,前景光明
  企业角度:
  (1)开源,免费(其实很多时候还是直接用破解的。。。)
  (2)具备了RIA时代富客户端的优点(C/S+B/S)(潮流啊~!)
  (3)项目和组件的重用性高,易于资源积累和快速构建
  (4)Flex提供了与其他语言的结合,能广泛利用已有的资源
  (5)界面华丽,客户认可度高
  (6)学习曲线一般,培训成本低
  用户角度:
  (1)部署和更新方便
  (2)界面漂亮,交互性强
  (3)安全
  说了这么多好话,再来综合说一下缺点。鉴于我着迷于Flex的光环效应,没有看到的缺点还请诸位多多提出。
  缺点:
  (1)不擅长处理复杂的业务流程,主要还是适合展现(Flex不是万能的)
  (2)继承了Flash的诸多优点,却唯独丢掉了Flash的小巧轻盈(减肥是永恒的话题)
  (3)目前尚没有比较好的减肥策略,带宽较好时这不是问题(不是一般的卡。。。)
  (4)对服务器和客户端的硬件设备都有一定要求(CPU和内存占用很生猛。。。)
  (5)运行期内存泄露状况严重,尽管可以通过一定手段改善(这个很崩溃)
  (6)对一些较专业的领域涉及较少,需要第三方组件支持(比如地质方面的)
  (7)Adobe公司对中国分部的支持不够(感觉宣讲和文档都做得不够)
  (8)搜索引擎对swf文件的支持不够(Adobe一直在努力)
  (9)与以往浏览习惯不同,比如右键被屏蔽,图片无法保存(可以改善)
  鉴于Flex生成的swf文件太肥是其主要缺点(加载慢,运行慢,内存占用多),我就主要从减肥和优化的角度来说一下使用心得。
  使用心得:
  (1)Flex只是前台展现,需要搭配强大的后台(注意前后台的均衡和优化)
  (2)考虑异步加载(比如分步加载外部资源)
  (3)界面推荐使用相对布局,合理组合,避免多余嵌套 (4)界面加载图片推荐使用外部加载方式,尽可能多使用矢量图形
  (5)规范CSS样式表,尤其注意使用的外部字体大小
  (6)使用额外的皮肤和特效时需要综合考虑生成的文件大小和执行效率
  (7)适当地考虑延时加载策略,主界面只显示必要的内容
  (8)规范编码,提高执行效率,避免内存泄露
  (9)使用RSL和Module和其他有效方式努力减肥
  (10)尽可能重写一些继承底层类的组件,执行效率更好
  (11)慎重使用重量级组件(比如DataGrid,AdvancedDataGrid)

你可能感兴趣的:(Flex)