基于Flex的WebGIS开发
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.1 了解Flex

1.1.1 RIA概述

在学习Flex前,我们首先要了解一个在Web开发中高频出现的名词——RIA。

RIA的全称为“Rich Internet Application”,其意思为“富互联网应用程序”。它具有高度的用户互动性和丰富的用户体验。RIA是企业级应用程序客户端的最新技术,RIA技术的出现是企业级应用程序经历了几次系统构架方面转变后的必然结果。

IT业的系统架构重要转变为:基于主机模式→C/S模式→B/S模式→RIA模式。目前系统架构发展趋势是RIA模式,最大程度地提高了广泛性和丰富性。RIA技术集成了桌面应用程序的最佳用户界面功能、Web应用程序的普遍应用、快速且低成本的程序部署、互动多媒体通信的实时快捷等特性,是一个潜力巨大的新一代网络应用程序。

1.RIA的出现

传统的基于HTML的应用程序,采用的是基于页面的、服务器端数据传输的模式,将网络程序的表现层建立在HTML页面之上,而HTML适用于文本,缺乏生动的交互性与表现力。传统的基于页面的系统已经逐渐不能满足网络浏览者更高的、全方位的体验要求。而RIA的出现就是为了解决这个问题。

RIA的出现,赚足了大家的眼球,成为网络浏览者与开发者的焦点。RIA的特点体现在一个“富”字,网络应用程序的界面表现完全能够达到桌面程序所能表现出来的效果。

2.RIA的特点

● RIA具有更加丰富的界面,在不重载页面的情况下可提供更多迷人的用户体验;

● RIA可向用户提供由用户事件触发的实时反馈和验证;

● RIA可实现与传统桌面应用程序一致的观感;

● RIA还能包括完整的多媒体体验,如音频、视频等;

● RIA具有很多功能,如实时聊天和协作,使用传统的Web应用程序是难以或者不可能实现这些功能的。

3.RIA的应用

RIA技术可以像Web一样很简单地部署用户客户端程序,同时在交互性和表现力等方面也大大超过了传统Web应用系统。

RIA开发技术已经有很多种,Adobe公司的Flex发展日趋成熟,是一种创建RIA快速有效的方法之一,微软公司的SilverLight及Sun公司的JavaFX也崭露头角。Flex技术的优势得天独厚,有强大的Flash平台作为后盾,SilverLight和JavaFX在RIA的实现上则各有侧重。SilverLight作为一个浏览器插件支持广泛,而且可以和JavaScript、微软的.NET技术无缝结合,而JavaFX体系不仅可以利用编写更容易的JavaFX Script取代JavaScript,而且提供了JavaFX Mobile,为手机及移动设备增加了应用程序支持。

1.1.2 Flex简介

Flex通常是指AdobeFlex,是涵盖了支持RIA的开发和部署的一系列技术组合。Flex最初由Macromedia公司于2004年发布,基于其专有的网络动画平台——Macromedia Flash平台,后由Adobe公司冠以商标。近年来,Flash动画应用广泛,为互联网增添了绚丽的色彩,其播放器Flash Player已经成为浏览器上首选的、不可或缺的插件,绝大部分用户的机器上均会安装Flash Player,通过Flex技术开发的网络应用程序将会编译成Flash文件,对于大部分浏览器而言不需要安装额外的客户端支持,这是一个很大的优势。

Flex是一个基于组件的开发框架,可以生成一个由Flash Player运行的富互联网应用程序。Flex将基于标准的语言和各种可扩展用户界面及数据访问组件结合起来,使得开发人员能够构建具有丰富数据演示、强大客户端逻辑和集成多媒体的应用程序。Flex继承了Flash在表现层得天独厚的优势,动感绚丽的视觉效果给大家带来了强大的视觉冲击,其丰富的交互性和表现力吸引了越来越多的浏览者和开发者。

如今,很多开发者或者公司已经开始使用Flex技术,研究并构建了成熟的RIA系统。

Flex是基于组件的开源的开发框架,同时也是一种新的语言。Flex的核心是一种基于XML的标记语言——MXML,使用ActionScript脚本语言来处理业务逻辑,构建富客户端的应用系统。因此,一个完整的Flex应用是由MXML和ActionScript组成的。MXML基于XML标准,用于配置和设计Flex程序的界面及编写表现层数据模型;ActionScript基于ECMAScript,原来用于设计Flash动画,其语法规范类似于JavaScript。这样,两种基于W3C标准的开发语言构成了Flex程序,两者类似于HTML和JavaScript,对开发人员(尤其是传统网页开发者)来说门槛很低,面向各层次的使用者,极易入门。

1.1.3 Flex与Flash

Flash是强大的矢量动画编辑工具。在Flash被Adobe公司收购之后,Flash一直在谋求RIA的霸主地位。最有影响的是已经推出了面向对象的编程脚本ActionScript 3.0,并且建立起类似于Java Swing的类库和相应组件(Components)。

Flex通过Java或者.NET等非Flash途径解释MXML文件,通过组件构建界面,并生成相应的SWF文件。Flex的组件与Flash的组件很相似,但是有所改进与增强。

Flash和Flex主要的区别如下所示:

● 实现方式不同:在构建程序界面时,Flex使用MXML描述语言来构建用户界面,而Flash使用影片剪辑、按钮和图形等元件,结合动作(Motion)来构建动画界面;

● 使用对象不同:两者面向不同的使用者,Flash主要面向美工设计人员,而Flex主要面向程序开发人员。

1.1.4 Flex与其他技术比较

Flex是一种混合的技术,这种语言技术的设计借鉴了其他标准语言,如XML、Java等。

1.HTML/JavaScript/Ajax

Flex技术是在Web技术发明之后开发出来的。Flex技术中的MXML语言就是基于XML的,并且借鉴了HTML描述语言。所以,MXML和HTML的作用在实质上是一样的,都是为了更好地描述界面布局和组件样式。不同的是,MXML采用了更加先进的设计模式,使得MXML源代码更容易阅读和编写。

Flex中的ActionScript是一种脚本语言,用来处理客户端的逻辑运算。ActionScript的设计同样也参照了JavaScript,与JavaScript作用一样。并且,ActionScript和JavaScript两者的语法也极其相似,这使得开发者学习ActionScript语言的门槛降低。

Ajax是利用JavaScript和XML技术,出现的一种代码框架技术。与Flex一样,它在客户端可以实现很多功能。不同的是,Ajax最终还是使用XML来描述界面的,而Flex则是编译成SWF控件运行在浏览器上。所以,Flex具有更好的表现性能以及更好的兼容性。

2.Java/Java FX

Flex是一个类似于Java和Java Swing的平台。Flex中的脚本语言ActionScript与Java上的语法和结构都极其相似。它继承了Java中包的概念,在设计中,参照了Java的大部分特性。

同Flex一样,Java也可以把应用程序部署到Web上运行。但是编译之后的文件却远比Flex大,因为Java的运行环境JRE和开发包JDK拥有比Flex多得多的类库,而且这些类库在客户端可能不需要。所以,很多Java开发者开始了解并学习Flex,计划把Flex和Java更好地结合起来。

3.Silverlight/XAML

Silverlight是微软公司的富网络应用程序的解决方案。Silverlight的XAML描述语言同样也是基于XML设计的。XAML相当于Flex中的MXML,两者不仅功能一样,而且语法也类似。Silverlight客户端所使用的逻辑语言更加广泛,因为它是基于.NET框架设计的。这些语言包括C#、JScript、Visual Basic等。

不过Silverlight技术刚刚推出不久,其中的很多功能有待完善;而且,在客户端需要安装Silverlight控件。

1.1.5 Flex的技术特点

1.增强用户体验

丰富的交互性与表现力是Flex最突出的特点之一。与传统的基于HTML的网络应用程序相比,基于Flex的富客户端应用程序提供了丰富的图形界面、图表、进度表等,具有强大的交互性和实用性。

2.完善的开发环境

Flex是用来创建和发布企业级富互联网应用程序的强大应用程序解决方案,提供了标准的语言与程序模型,支持公共设计模板,包括开源的集成开发环境产品——Flex Builder。Flex Builder是基于Eclipse开发的,开发环境界面与Eclipse类似,庞大的Eclipse用户群体对此不会陌生,容易上手。

3.标准的开发架构

Flex中的MXML是基于W3C标准设计的,是对XML的扩展;所使用的ActionScript语言,是欧洲计算机制造商协会(ECMA)制定的标准脚本语言,支持基于对象的开发。标准的开发架构可以让更多的开发者能够快速掌握。

4.跨平台、跨浏览器

运行Flex应用程序依赖于Flash的播放器,Flash Player是Flex与Flash程序运行的载体,具有跨平台的特性,可运行于Windows、Linux等系统中。目前的浏览器都支持Flash Player插件,包括IE浏览器、FireFox浏览器等,兼容性强。全球绝大部分计算机上都安装了该播放器插件,因此使用Flex开发的应用程序能通畅地运行于几乎全部的计算机中。

5.消除页面加载

应用程序会先将RIA应用程序进行缓冲下载,这样访问运行程序时就像执行本地程序一样,而不是一系列的链接页面。Flash Player管理客户端接口就像管理一种单一的、不间断的流,当客户端从一个场景到另一个场景时不需要页面从服务器中加载,从而减小了服务器端的负载。

6.具有企业级应用扩展能力

Flex是富客户端的一种开发技术,具备企业级应用特性,可以无缝集成现有的开发模式。开发人员可以使用Flex Data Services、WebService等服务来处理同步数据和支持实时数据,客户端缓冲与消息传递的能力使得在断网的情况下也能执行程序。Flex可与.Net、Java结合,支持与客户端、服务端的数据通信,可与外部的Flex应用程序或RIA应用程序等进行通信。