1 / 16

第 22 章 Flex 应用程序开发

第 22 章 Flex 应用程序开发. 在本章以前的章节中,花了很大的精力来讲解组件、数据等内容,毕竟大部分的开发者使用 Flex 都是受因为其强大的表示层功能吸引。本章在前面的基础上,进一步介绍 Flex 应用程序的开发。与前面的章节相比,本章将从整体上把握如何开发 Flex 应用,侧重于设计模式问题、安全、性能优化等。. 22.1 设计模式. 在面向对象的程序设计中,总是反复的提到设计模式。毫无疑问,设计模式对于开发者还是程序,乃至整个应用,都是多赢的。设计模式实现了代码复用,是软件工程的基础。本节简要的设计模式的基础。. 22.1.1 什么是设计模式.

latona
Télécharger la présentation

第 22 章 Flex 应用程序开发

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第22章 Flex应用程序开发 • 在本章以前的章节中,花了很大的精力来讲解组件、数据等内容,毕竟大部分的开发者使用Flex都是受因为其强大的表示层功能吸引。本章在前面的基础上,进一步介绍Flex应用程序的开发。与前面的章节相比,本章将从整体上把握如何开发Flex应用,侧重于设计模式问题、安全、性能优化等。

  2. 22.1 设计模式 • 在面向对象的程序设计中,总是反复的提到设计模式。毫无疑问,设计模式对于开发者还是程序,乃至整个应用,都是多赢的。设计模式实现了代码复用,是软件工程的基础。本节简要的设计模式的基础。

  3. 22.1.1 什么是设计模式 • 人们在生活中,模式是无处不在的。例如高考前,总要做无数经典的题目,但是考试中不会有这样的题目出现。不过,这些经典的题目可以对我们做题进行启发,从而达到举一反三、融会贯通的作用。设计模式不是解决问题的方法,而是经典的解决问题的套路。模式是不能直接套用的,具逦侍饩咛宸治觥I杓颇J骄褪蔷涞纳杓品椒ā • 目前,设计模式被定义为一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。

  4. 22.1.2 了解MVC模式 • 对于Web应用而言,用户对应用界面的接受程度直接关乎应用的成败。人人都喜欢使用漂亮、互动性好的界面。随着Web应用的深入和广泛的使用,用户对于界面的需求越来越高。越来越多的用户要求“定制界面”,实际上只是图形界面的变更,系统的功能仍未改变。如何做到在不改变系统模型、功能的基础上,根据不同的需求获得不同的界面呢? • 从系统角度看,上述的问题可以进一步转化为在满足对界面要求的同时,如何使软件的计算模型独立于界面的构成。MVC的出现很好的解决了这个问题。 • 模型-视图-控制(MVC:Model-View-Controller)就一种交互界面的结构组织模型。也是目前广泛流行的软件设计模式。MVC模式包含3个元素:视图(view)、模型(Model)、控制器(Controller)。

  5. 22.2 开发前的准备 • 经过漫长的学习,终于可以开发自己的Flex应用程序了。开发可以看作简单的工作,最终还是归结为编码。但是,从整体上看,开发应用的流程是个复杂的过程,要经过需求分析、建模、编码、测试等等流程。要想开发出好的应用,需要进行充足的准备工作、精确的设计、规范的代码。 • 1.需求分析:整个应用要实现什么样的功能,每个功能的运行流程等。Flex本身更侧重于用户界面的开发,所以对于界面背后的业务逻辑,仅仅依靠ActionScript是不实际的。 • 2.软件设计:软件设计建立在需求分析的基础上。在需求分析中,已经解决了应用要实现什么功能,每个功能的流程等。软件设计的任务就是讲这些功能合理在组合,规划。例如整个界面的划分。每个页面实现什么功能,每个功能采用什么样的方式实现。 • 3.编写代码:根据软件设计的框架编写界面、业务逻辑、数据库访问等代码。对应应开发人员来说,编写代码相对于前面的需求分析和软件设计简单了很多。但是要注意的是,养成良好的编码习惯,编写出稳定、安全、高效的代码。

  6. 22.3 模块化开发 • 在前面讲述创建自定义组件时,曾经讲过将复杂的应用分为多个模块,然后将模块加载进去,其中的模块讲的是使用Flex Builder创建的Flex Component。使用这种方式创建的模块在加载后是与整个应用文件一起编译。如果模块过大,编译的文件也会增大,于是打开的速度就慢了。为了方便与其他模块区分,这种模块简称为MXML模块。 • Flex中还有另外一种模块,与上面的模块不同。该模块在MXML以<mx:Module>作为开始和结束的标记,而不是使用组件标签。这种模块最终需要编译为SWF文件。与Flex 1.5中的load方式不同,它不能直接运行,但是可以在应用中动态载入,即在需要的时候加载,不需要的时候释放。在这里简称为SWF模块。SWF模块的创建相对于MXML模块要复杂些。需要将编写好的MXML文件编译成SWF文件,但其与MXML模块相比,它还是具有一定的优势。 • 减少初始下载SWF文件的大小。 • 更小的SWF文件就带来了更短的载入时间。

  7. 22.4 使用共享对象 • 在Web应用中,运行时有些数据需要暂存到本地磁盘中,可以被整个应用获取,也可以在下一次打开应用时获取。Flex中,可以使用共享对象(Shared Object)来实现这样的功能。共享对象有点类似浏览器的cookies,可以为应用暂存一些数据。它与cookies相比,具有如下的优势。 • 它是不会过期的。 • 共享的内容,可以由用户指定,可以是字符,可以是数组。 • 存储位置也可以由应用定义,但必须在用户目录下。 • 默认情况下,可以使用的存储空间为100K,该数值可以利用Flash Player中的Global Storage Settings panel设定。 • 只作为本地数据,不会被传输到服务端。该共享对象可以被同一域中的Flex应用共享。

  8. 22.4.1 SharedObject类 • SharedObject类的常用属性如表所示。 • SharedObject类的常用方法包括创建共享对象、删除共享对象等,如下所示。 • clear():清除共享对象数据。 • flush():将共享对象写入客户端的文件中。 • getLocal():该方法用来获取共享对象,其接口如下所示: • public static function getLocal(name:String, localPath:String = null, secure:Boolean = false):SharedObject

  9. 22.4.2 创建共享对象 • 创建共享对象不能使用MXML,只能在ActionScript中创建。创建共享对象时使用getLocal()方法,该方法接口如下所示,其中pathName为可选项。 • SharedObject.getLocal("objectName" [, pathname]): SharedObject • 下面的例子创建了一个共享对象myShare。 • public var myShare:SharedObject; • myShare = SharedObject.getLocal("myData"); • 在创建了共享对象后,需要为共享对象进行赋值,格式如下所示: • sharedObject_name.data.variable = value; • 例如下面的代码为userName赋值。 • myShare.data.userName = “silence”;

  10. 22.4.3 删除共享对象 • 删除共享对象时,需要使用ShareObject()类中的clear()方法。 • mySO.clear();

  11. 22.4.4 使用共享对象 • 共享对象常用来保存应用的一些数据,如用户名、密码。下面的例子在用户登录中使用共享对象,如图所示。当用户登录时选择记录用户名时,则创建共享对象记录用户名和密码。在本地次方上创建了myData.sol,如图所示。登录后显示欢迎界面,如图所示。当用户再次从本机登录时,程序自动读取共享变量的内容进行登录,并在欢迎界面下方显示“您已经自动登录”字样,如图所示。

  12. 22.5 优化Flex应用程序 • 性能对于应用来说,是非常关键的因素。良好的编程习惯、合理的使用组件都能减少应用在性能上的损失,谁也不想使用花了3、5分钟才能打开的页面。在编写Flex应用中,应尽可能避免那些影响性能、效率的因素。本节主要讨论如何提高应用的性能即效率,如缩短打开页面的时间等。

  13. 22.5.1 合理使用布局 • Flex程序最初始状态还是由各种各样的组件组合而成的。无论怎样嵌套,所有的组件都放置于容器内。哪个组件位于哪个位置有组件布局负责。所以优化应用程序的第一步是合理的使用布局。在使用布局时,应注意以下几点: • 1.避免多层嵌套容器 • 2.使用绝对定位和缩放 • 3.导航式容器推迟实例化

  14. 22.5.2 使用动态样式 • 在初始化过程中尽早设定样式,可以避免不必要的样式通知和查找。在使用样式时,第一次为对象设定样式不要用setStyle()方法,应使用<mx:Style>标签中,或作为MXML标签的一个属性。通过外部CSS样式表,或作为全局样式来设定。避免对setStyle()方法的过度使用,或者不必要的使用,都会影响效率。仅在需要改变现有对象的样式时使用setStyle()即可。 • 某些应用程序在应用过程,或对象实例化过程中必须调用setStyle()方法时,可在实例化阶段较早调用setStyle()方法。即从组件或应用程序的initialize事件开始设定样式,而不是从creationComplete,或其他事件开始设定样式。

  15. 22.5.3 减少SWF的体积 • MXML文件在显示的时候总是要编译成swf文件在Flash Player中显示的,查看MXML页面也就是将该页面的SWF文件下载到本地然后打开观看。用户打开页面的速度由以下2个因素决定。 • 网络速度 • SWF的大小 • 网络的速度因不同的地域而不同,但无论对于多少的带宽,越小的SWF体积越好。减小SWF体积可以从以下几个方面入手: • 在编译MXML文件的时候使用-optimize编译参数。 • 禁止调试,可以减去一些专门记录调试环境的数据。 • 避免引入一些不必要的包和类,不要将包内所有的类都添加,如: • import mx.controls.* • 减少内置资源的加载,例如使用[embeded]。可以使用外部文件,在运行时载入,而不是在编译时载入。

  16. 22.6 应用跨域访问 • 安全对于应用来说是非常重要的。Flex应用的运行是依靠Flash Player,可以把Flex应用看作SWF文件,由Flash Player播放。Flex应用文件存放在服务端,当用户浏览器请求查看时,需要把应用文件下载到本地才能查看,类似于许多使用flash开发的网站,在打开时显示“正在加载”或者显示进度条,此时,就是将SWF文件从远程下载到本地。所以Flex应用的安全分为2部分。 • 客户端:由Flash Player中的沙箱负责。 • 服务端:验证和授权用户获得服务端资源。 • Flash Player允许访问、修改本地的文件,其自动检测应用中是否不符合正常运行的因素,例如无限循环,超出使用硬盘空间,默认情况为100k,当然,可以手动修改。 • 在考虑客户端安全问题时,主要面对客户端与服务器之间的安全问题,通常包含如下2个方面。 • 用户是否可以访问该资源,即站点。 • 用户是否可以下载该资源。

More Related