胡晓婷
(西北大学城市与资源学院 陕西 西安 710127)
摘要:随着计算机网络技术的高速发展,互联网已经日益成为应用程序开发的默认平台。但是,在当今的GIS领域中,用户对GIS系统要求越来越高,如在用户有复杂交互、地图无缝平滑缩放等需求的时候,传统的Web技术很难满足用户的要求。Flex(最新版名为 Flash Builder)是优秀的RIA开发技术之一。本文首先分析RIA相比传统Web应用的优势,引入基于RIA的Web开发平台;然后结合 Flex 的特点基于ActionScript 脚本语言和MXML标签语言,对Flex RIA的软件框架、设计模式以及数据交互等进行探讨;最后引用一些实例,展示基于Flex的RIA技术和REST架构实现完美的WebGIS开发,并对RIA的发展趋势浅谈GIS的发展方向。
关键字:RIA,Flex,MXLM,ActionScript脚本语言,WebGIS开发
1 引言
随着计算机网络技术的告诉发展,面对日新月异、纷繁复杂的新技术、新方法,对于正处于转型期的GIS技术,我们很难预测它在未来十年内的走向,但是,回顾其发展历程启发了我们一下几点:首先,目前推动IT技术进一步发展的驱动力有:硬件性能、网络宽带和微型化;其次,IT发展历史从大型机到小型机再到微型机,从基于主机模式到C/S模式再到B/S模式的开发模式,经历了几次系统结构方面的重要转变,从面向专家型到面向大众化普及,几十年的发展,极大地推动了世界的进步且丰富了我们的生活。
在这一发展过程中,用户界面表现形式也从DOS到桌面再到Internet,它随着应用需求的日益复杂性进一步向前发展。而现在的发展趋势即是互联网软件在向客户端整合、客户端在向互联网融合。RIA 作为一个互联网领域越来越火的术语,究其根本在于它相对传统Web应用的诸多优势。RIA 作为“富互联网应用”的代名词(Rich Internet Application),从名字上就已经可以看出它最大的特点:Rich,这个Rich是多方面的,包括丰富的表现力、富有交互、内容丰富、基于富客户端引擎等等。采用丰富互联网应用程序技术,网络应用程序可以提供更具有交互性和响应性的用户体验,其研究是非常有意义的。Adobe Flex则是一套完整的综合性RIA技术解决方案,Flex提供了一种高效的开发模型,能够很容易地与过去很多年积累下来的标准及最佳实践相集成。Flex开发模型使用MXML来设计和布局用户界面,ActionScript来创建客户端逻辑。因此RIA时代已经到来,对该技术进行学习和研究,构架新时代完美的WebGIS系统是十分有必要的。
2 RIA介绍
2.1 RIA相比传统Web应用的优势
传统Web应用的很多不足都来源于HTML的静态性,虽然由于JavaScript脚本的存在可以在浏览器中实现一些客户端交互和效果;同时,Web2.0浪潮推广的 AJAX 技术也使浏览器和服务器的通讯更及时、页面表现也更友好。但是,传统Web 的根基使这些进步都是局限的,在声音、视频、Socket通讯、本地存储这些方面它都捉襟见肘。
RIA 则在某种程度上了传统Web应用的理念和设计。为了能提供客户端更优秀的表现和交互能力,RIA 一般会在客户端添加一个引擎,这个引擎和Java虚拟机的作用很相似,RIA 则会在返个引擎中运行所有编译过的脚本及相关的资源。通过这个引擎的中介作用,RIA 就把传统Web应用中很多在服务器上执行的功能(比如输出页面)转移到了客户端。一方面减轻了服务器的压力,另一方面也提高了客户端的处理和交互能力。
通常,RIA一般会提供比较出色的表现能力,这也是RIA之所以被称为“Rich”的最重要原因。 传统的Web页面即使通过JavaScript脚本的帮劣也很难达到RIA 能做到的页面效果和功能,特别是 GIS领域,在用户有复杂交互、地图无缝平滑缩放等需求的时候, RIA 的这个优势尤其突出。 由于RIA在表现方面的特色,用户在RIA与传统Web站点之间能感到明显的体验上的差距,返是RIA 受欢迎的重要因素之一。
另外值得一提的是 RIA 的标准性。传统Web应用在面向不同的操作系统和浏览器的时候,呈现出的页面可能千差万别;RIA则不同,由于操作系统或浏览器中都会有一个客户端引擎来运行我们的RIA,因此在各种支持的操作系统和浏览器中都没有差别,也就是说,你设计好的 RIA 在各种环境下表现地都会很标准。
总的来说,RIA相比传统Web应用的优势主要集中在以下几点:
具有更加丰富的界面,在不重载界面的情况下可提供更多迷人的用户体验;
可向用户提供由用户事件触发的实时反馈和验证;
可实现与传统桌面应用程序一致的感官;
包含完整的多媒体体验 如音频和视频。
2.2 RIA的局限性
当然,RIA 也并不是没有缺陷,它也有它的局限性。RIA 的局限性主要在两方面:其一,是客户端引擎的下载和安装;其二,是目前难于做SEO(搜索引擎优化Search Engine Optimization)。
事实上RIA的概念和若干年前的 Java Applet 很相似,但是Java Applet已经基本消亡,如今的RIA 却突然火爆,这和 RIA的缺陷在目前得到某种程度的补偿有关系。 首先,客户端引擎的下载和安装。比如Flex,由于Flash在互联网的应用极其普遍,其赖以生存的Flash Player 在各种系统的占有率在 97%左右;Silverlight 则估计会随着下一版本操作系统的推广成为将来Windows用户的标准配置,因此,客户端引擎对它们来说都不是很大的障碍。 而对于搜索引擎优化,一方面,另有面向公众的网站对这方面要求比较高,其它业务型的企业级应用则并不很关心,即使关心也可以把一些无需被搜索的内容放到 RIA中(比如地图) ,而在Web页面中保留需要被搜索的内容;另一方面,Google等搜索引擎也正在和Adobe等公司进行深入合作,将RIA中内容的索引提上了日程, 可以看到,RIA 的迅猛发展使搜索引擎也开始关注这块重要领地了。
3 ArcGIS Server的REST接口
REST(Representational State Transfer)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。REST本身并不涉及任何新的技术,它基于HTTP 协议,比起SOAP和XML-RPC 来说它更加地简洁、高效,越来越多的大型网站正在使用REST风格来设计和实现。
REST最突出的特点就是用 URI 来描述互联网上所有的资源,Roy Fielding博士通过观察互联网的运作方式对其进行了抽象,他认为:设计良好的网络应用表现为一系列的虚拟“网页” ,或者说这些虚拟网页就是资源状态的表现(Representational);用户选择这些链接导致下一个虚拟的“网页”传输到用户端展现给使用的人,而返正代表了资源状态的转发(State Transfer)。
REST主要有以下的特点:
资源通过URI来指定和操作
对资源的操作包括获取、创建、修改和删除资源,这操作正好对应 HTTP协议提供的 GET、POST、PUT和DELETE方法
连接是无状态性的
能够利用Cache机制来提高性能
ArcGIS Server原生地支持REST,也就是说在安装完ArcGIS Server后 REST接口已经存在。 使用REST接口最重要的就是 REST服务目录,它是将ArcGIS Server提供的REST资源通过HTML表现出来的 URL。
4 RIA应用利器Flex
4.1初识Flex
Flex是Adobe公司为支持RIA而开发和部署的一系列发展中的技术和产品线的概括,其中包括:Flex SDk、Flex Builder、LiveCycle Data Services等。Flex就是使用 ActionScript脚本语言和MXML标签语言制作SWF类型的应用。
Flex的前身是Flash,Flash是极为流行的互联网矢量动画解决方案,目前据统计97%的浏览器都安装有Flash Player插件用以播放swf动画,其中未安装的3%还有很多是因为某些场合的安全导致的,可以说Flash是极为普及的RIA平台。但是由于Flash 是一个动画制作软件,其中有很多比如时间轴、影片剪辑等程序员不容易理解的概念,因此Macromedia公司推出了Flex。Flex抛弃了许多动画设计术语,转而使用程序员喜欢的方式开发RIA应用,并且Flex能编译生成可以在Flash Player中运行的swf文件,这无疑吸引了大量程序员,并实现了和 Flash 平台的无缝拼接,从而利用Flash平台多年积累的大量素材、美工和设计者。
Adobe公司在2005年收购了Macromedia公司,并在第一时间将Flex/Flash冠以 Adobe的商标推向市场,可见其对RIA市场和 Flex/Flash的重视。目前,可以说Adobe Flex/Flash是最流行且最成熟的RIA平台。
4.2 Flex 的语言
Flex主要采用MXML+ActionScript来编写程序界面,然后通过编译器编译成Flash Player能够执行的SWF文件并发布使用。
4.2.1 MXML 语言标签
MXML 语言是专门用于Flex程序中,描述界面表现的一种XML 标记语言。MXML是Flex特有的,是区别于Flash的标志。我们可以通过它来描述程序的整体布局,控制组件的样式和外观,也可以构建非可视化的对象,比如XML数据与服务器端通信的WebService组件的数据源等。MXML是XML的扩展,Adobe的XML。
例:
以上就是MXML其中的mx是Adobe默认的Flex框架的命名空间。第1行声明XML的编码为utf-8,使程序支持大部分语言编码。第4、5行放置了两个显示控件,一个是按钮 Button,id指定为“bt1”,按钮上显示“欢迎学习flex”;另一个是文本输入框TextInput,id指定为“tx1”,该文本框的指定宽度为“100”。 在以上的代码中像 mx:Button、mx:TextInput即是MXML的语言标签。众多的语言标签有机结合在一起就构成了一个完整的应用界面。 4.2.1 ActionScript 语言 Flex=ActionScript+MXML。如果说MXML是描述界面的语言,那么ActionScript就是描述逻辑的语言。AS (ActionScript)作为Flash/Flex中的编程语言,经历了1.0 到3.0 版本的转变 从最初的脚本语言演变为面向对象的编程语言AS是由 Flash Player中的 AS 虚拟机(AVM)来运行的,通过AS,Flex/Flash中的内容和应用拥有了交互性和数据的处理及其他功能。 4.3 基于FLEX的RIA典型应用:Adobe Photoshop Express Photoshop Express(http://www.photoshop.com/express/)是使用FLEX技术开发的影像编辑器,在网页浏览器内利用 Flash player 运行,我们可以将它理解为“Photoshop 在线版”。可以使用Photoshop Express直接在线编辑图片,虽然功能没达到专业人员的需求,但 Photoshop Express 的预设功能已经足够强大和完善 ,能够解决修图中 90% 以上的需求。这个经典案例充分体现了“FLEX 技术是将传统的桌面应用程序搬到浏览器里运行的技术”这一说法。 5 基于RIA的网络GIS应用实例——青海省森林基础信息服务系统 5.1 系统架构 系统在逻辑上设计为3层架构,即前台地理信息应用表达层、中间件地理信息应用服务器层和后台地理数据库服务器层。 5.1.1前台地理信息应用表达层 前台地理信息应用表达层基于Internet/Intranet ,通过智能客户端(如Flash Player) 和浏览器(如IE)以2维的形式显示、查询和分析地理信息。各种系统功能通过中间件应用服务器的Web服务组件来实现。中间件应用服务器实时响应前台的应用请求。各种地理信息或者以文件的形式存储在Web 服务器上,或者以数据库的形式存储在数据库服务器上。 5.1.2 中间件地理信息应用服务器层 中间件地理信息应用服务器是整个系统的核心,所有地理信息系统功能在该层实现。该层由各种构件组成,构件分为. Net 组件、Windows 控件、Web 控件和Web 服务组件等4 种类型。 5.1.3后台地理数据库服务器层 主要完成多源、多尺度数字地图、数字正射影像等地理空间数据的存储和管理。该层分别由地图数据库和遥感影像数据库组成,通过文件和大型关系数据库管理系统进行一体化存储和管理,并提供数据备份、数据存档、数据服务、数据安全等机制。 5. 2 基于RIA的网络GIS的功能 系统使用Flex开发客户端程序,采用功能模块化思想,每一功能模块以Web 组件形式存在,主要包括以下3个模块。 2 维地图显示。实现2 维地图的显示、放大、缩小、漫游、量算、图层控制等功能。 地图要素查询。实现地图要素、空间坐标等查询功能。 报表统计。实现森林资源专题信息统计功能,并生成特定格式报表文件,打印输出。 RIA 通过以上Web 服务组件完成对各个地理信息系统功能的调用,通过自身强大的表达能力实现丰富的用户界面。 暂缺 6 结论 人们对开发具有高度互动性、丰富用户体验以及功能强大的客户端的追求是不变的。因此有理由相信,拥有成熟技术和极高市场占有率的Flash客户端将会在RIA道路上越走越远 ,基于RIA的网络GIS极有可能成为未来网络GIS的主流。 参考文献: [1] 董龙飞,肖娜.AdobeFlex大师之路[M].电子工业出版社,2009.5 [2] 汪林林,胡德华,王佐成,宋华.基于Flex的RIAWebGIS研究与实现[J]. 计算机应用, 2008.12(12) [3] ArcGis RIA开发实践[M].2009 [4] 宋朝晖,刘晓菲.浅谈基于Flex技术的RIA设计[J]. 电脑知识与技术,2010.1 [5] 陈显军.基于Flex的RIA应用于研究[D].电子科技大学,2007下载本文