[转载]深入浅出Flex Viewer 2.1(一)——概述 – enjoyInGIS-智慧点亮生活 – 博客园.
一、Flex Viewer简介
Flex Viewer是ESRI公司推出的可以高效开发基于WEB的地理信息应用系统的一种完全免费的应用程序框架。业务人员使用该框架可以无需任何额外的编程就 能够通过简单配置的方法快速搭建起一个基于ArcGIS Server的、以地图为中心的富客户端(RIA)应用的原型。该框架中还自带了大量的能够满足各种地图应用需要的Widget,如Identify、 GeoRSS、DataExtract、BookMark、NetworkAnalyst、MapSwitcher等地图交互和分析等工具。同时,如果需 要增加新的Widget,则开发人员只需在自定义的Widget中实现框架要求的接口,然后再将该Widget配置到框架中的Config.xml文件 中,就能在无需修改框架代码的情况下轻松地完成独立Widget与框架的无缝集成。框架运行界面如下图所示:
图1 运行界面
二、Flex Viewer实例的运行周期
Flex Viewer是基于Adobe公司推出的Flex开发出来的典型的Flex应用,它拥有和其它所有Flex应用程序相同的生命周期,即均由浏览器中 Flash Player进行加载和管理,如下所示步骤1。在Flex Viewer启动后,Flex Viewer会自动加载相应的配置文件,,并根据该文件中的各种配置项来初始化系统的功能、界面,以及加载和显示相关组件对应的flash文件(步骤 2)。接着,系统初始化地图窗口,并根据配置文件中配置的图层从运行于ArcGIS Server(也可为其它数据源,但需扩展)中获取地图数据(步骤3)。最后,系统根据配置信息及用户操作动态加载对应Widget相关的Flash文件 (步骤4),并在用户与该Widget交互的过程中向外部服务器获取数据和分析服务(步骤5)。
图2 实例的生命周期
三、Flex Viewer的价值
Flex Viewer这个框架的核心价值将程序员各种复杂的编程细节中解放了出来,如地图的管理、地图的浏览、应用的配置、内部组件的通信、数据的管理等。它允许 Web开发人员,特别是那些使用ESRI的ArcGIS技术的开发人员,能够得以专注于他们自定义的应用程序的核心业务功能的开发上。另外,也正是这个原 因,使得开发人员能够以配置的而非编程的方式将含有新功能的Widget快速地继承到已有的Flex Viewer框架中。
四、目标读者
1、使用Flex Viewer搭建原型的业务人员;
2、开发Flex viewer Widget组件的开发人员;
3、以及希望改造Flex Viewer已有框架的架构师等。
五、本系列的写作目的
由于Esri免费开放了Flex Viewer的源代码,所以开发人员可以对该框架拥有更细粒度的控制权。因此,笔者希望通过本系列文章向读者深入介绍该框架的架构和设计原理,以使得读者 能够全面、透明地掌握该框架,从而使其能够结合具体的业务需求以最简洁、最合理的方式对框架进行配置、开发或改造。
另外,由于本系列的定位主要是针对那些对Flex Viewer的使用有所了解,并希望进一步深入理解其内部设计原理的读者,所以Flex Viewer工程的配置,以及基本功能的使用,本文将不会涉及,请有需要的朋友查阅相关的帮助文档(http://help.arcgis.com/en/webapps/flexviewer/help/index.html)。
六、系列文章简介
该框架从2008年9月推出1.0版以来至今已近发展到了2.1版,本系列将针对当前最新的2.1版陆续推出另外六篇文章来向读者深入介绍Flex Viewer的设计原理:
1、在《深入浅出Flex Viewer 2.1(二)——体系结构》中,笔者从该框架的架构入手,深入依次介绍关键构件的设计原理和其相互关系,使读者能够对系统的架构拥有一个整体、清晰地理解;
2、在《深入浅出Flex Viewer 2.1(三)——Config的原理》中,笔者将介绍Config文件所支持的所有配置项,以及用于解析该配置项的构件,及其相应的设计原理和数据结构, 从而为读者对下篇《深入浅出Flex Viewer 2.1(四)——系统初始化的那些事儿》的理解作铺垫;
3、在《深入浅出Flex Viewer 2.1(四)——系统初始化的那些事儿》中,笔者将详细介绍从Flash Player加载系统对应Flash文件开始到系统初始化完成的全过程,读者通过这篇文章能够掌握系统在初始化的过程中涉及到了哪些构件、做了哪些事、如 何做到的,以及初始化后得到了哪些后期可重复利用的数据结构;
4、在《深入浅出Flex Viewer 2.1(五)——Widget的原理》中,笔者将深入介绍Widget的开发和其所需的关键抽象类和接口,以及Widget与框架能够无缝集成的原理;
5、在《深入浅出Flex Viewer 2.1(六)——如何增加新的数据源》中,笔者将以google map的底图数据作为新的数据源为例,向读者介绍数据源的扩展方法。
七、系列文章目录
《深入浅出Flex Viewer 2.1(二)——体系结构》
《深入浅出Flex Viewer 2.1(三)——Config文件详解》
《深入浅出Flex Viewer 2.1(四)——系统初始化的那些事儿》
《深入浅出Flex Viewer 2.1(五)——Widget的原理》
《深入浅出Flex Viewer 2.1(六)——如何增加新的数据源》