ArcGIS Server Web ADF框架与FLEX API的比较与分析
时间:2011-01-24 来源:orchidsure
(武汉市城市规划信息中心,武汉市三阳路13号,430014)
摘 要:近年来,Web服务(Web Service)技术广泛的应用于互联网络的资源共享。随着Web服务标准与技术的不断成熟,面向服务的体系结构越来越多的应用于GIS行业的应用中,开发方式也越来越丰富。为了充分利用现有的软硬件资源,构建满足用户需求的GIS应用平台,本文介绍了.Net环境下Web ADF和Flex API的特点及其适用范围,比较了采用这两种方法开发面向服务的地理空间信息公共服务平台的数据访问方法和功能开发方式,并对其效率和性能进行了分析。
关键词:Web Service; Web ADF; Flex API; SOA
1 引言
Web服务(Web Service)不仅是一种技术,而且还代表了软件产业的新革命,由面向对象的开发方式转为而向服务的开发方式。面向服务开发的核心思想是重用已有服务,在已有服务的基础上进行再组合,形成新的松耦合分布式软件系统。随着Web服务标准与技术的不断成熟,Web服务已经成为互联网上一种重要的资源。
ESRI公司提出的ArcGIS Server体系结构采用的就是面向Web Service技术。ArcGIS Server9.3是一个新的GIS服务器,它主要用于构建集中管理、支持多用户的企业级GIS应用平台。本文介绍了.Net环境下Web ADF和Flex API的特点及其适用范围,比较了采用这两种方法开发面向服务的地理空间信息公共服务平台的数据访问方法和功能开发方式,并对其效率和性能进行了分析。
2 WebADF与Flex框架
ArcGIS Server是一个分布式系统,它由GIS服务器、Web服务器、Web浏览器、桌面产品四个部分组成,可以分别部署在不同的机器,它们分别在进程的管理、启动和关闭以及对象运行的服务器的负载均衡方面起着专门的作用。Web ADF 和 Flex API都是为构建Web应用提供的开发组件。
2.1 WebADF框架
ArcGIS Web ADF for .NET能够集成丰富的GIS功能到Web应用程序中。ADF包含一组和Visual Studio集成的Web控件和组件来开发Web应用。Web ADF建立在.NET框架之上,利用一套定制的Web控件和提供本地和远程数据资源访问的新类来扩展.NET框架。
图1 Web ADF for .NET开发的层次图
ADF提供的是控件和API。控件是提供用户API和Specific API的类来具体完成GIS的功能。Web ADF提供了一个框架使用定制的ASP.NET Web控件合并和使用一个或者多个数据源。Web控件以可视的方式显示地理数据并且和地理数据交互。
图2 Web ADF开发Web应用的体系结构图
2.2 Flex API 框架
ArcGIS API for Flex可以说是ArcGIS Server的扩展开发组件,它可以使你在使用ArcGIS Server构建GIS服务的基础上,开发丰富的因特网应用(RIA, Rich Internet Applications)。它的优点在于可以使ArcGIS提供的各种资源(如Map、GP模型)和Flex提供的组件(如Grid、Chart)相结合,构建表现出色、交互体验良好的Web应用。Flex API通过ESRI提供的ArcGIS Server REST(REpresentational State Transfer,表述性状态转移) API访问Web服务,它继承了Web 服务 REST API 的特征。
REST通过url的方式来访问服务的根目录, REST访问地址中,folder和servicename是对大小写敏感的,folder前面的部分则没有影响。如果folder和servicename中包含有非英文字符,则需对其进行编码,获得一个有效的统一资源标识符。REST里所描述的服务,包含资源和操作两种类型,上面所说的是资源,就是描述该服务的一些属性信息,操作指的是基于该服务能够实现的功能,如导出地图、查询、搜索、生成KML。
图3 资源和操作的整体框架
每一种资源都有统一的URI来标识,资源通过链接被相互关联在一起,如MapService下的各种操作功能,并且资源有多重表述方式,这些都取决于我们的应用和需求。
3 基于WebADF和Flex的地理空间信息共享平台的比较分析
3.1 服务访问方式比较
WebADF中控件和数据源之间的交互由资源管理器负责。资源管理器指定哪些数据源是可用的,Web控件是怎样使用这些资源的和资源是怎样和其它资源进行交互的。如果一个数据源提供了一个资源管理器能够使用的信息,这个数据源能够在这个应用内被增加和发布成一个资源。Web 控件使用资源来访问数据源的能力-在Web ADF中成为功能(Functionality)。
从Web控件的观点来看,不同的控件可以以不同的方式使用相同的资源,因此能够以不同的功能工作。从数据源的角度,资源经常共享某些级别的通用功能,例如,产生一个地图图形,或者查询一个层。 Web ADF提供一个通用的API来访问这些通用的功能,称为通用API(Common API),Web控件使用通用API来实施类似的功能,通过一个资源管理器,合并来自多个数据源的结果。另外,一个数据源可以提供一个能力,这个能力对于其他数据源类型来说是不通用的。在这种情形下,Web ADF包含数据源特定的API(Data Source Specific APIs)访问对于某种数据源唯一的功能。
Web控件作为用户接口组件,通用和数据源特定API类处理绝大部分GIS功能,通过使用Resources来创建Functionalities,使用Functionalities来执行操作。以访问MapServer服务为例,WebADF中采用MapResourceManager管理资源,即可以将资源绑定到Map控件中,也可以动态添加资源,设置资源的名称、定义,其中地图资源的定义包括数据源的位置、类型、名称等。
Flex API通过url的方式来访问服务的根目录,如“http://<host>/<instance>/services/<folder>”。其中“instance”默认为“arcgis/rest”,里面列举了当前服务器上所有已启动的server服务。只需要在控件中添加包含url地址的图层即可,图层分为ArcIMSMapServiceLayer、ArcGISTiledMapServiceLayer、ArcGISDynamicMapServiceLayer、ArcGISImageServiceLayer四种,如
<esri:ArcGISDynamicMapServiceLayer
url="http://whgis.wpl/ArcGIS/rest/services/manchun/MapServer"/>
3.2 开发功能方式比较
图6表示WebADF任务框架的类与接口。总体上讲,Task和FloatingPanelTask抽象类实现了基本ITask接口。另外,为了和其他Web ADF组件的集成,需要选择定制其他的任务组件。TaskDesigner能够定制Visual Studio设计时界面能够选择可定制的任务控件。IWebConfigurator接口定义怎样将定制的任务控件集成到使用Manager的Mananger应用程序中。ITaskResultsContainer接口能够定义一个定制的容器或者控件来显示任务结果。
图6 Web ADF任务框架图
用户自定义任务框架,可以继承某类任务,在此基础上进行扩展,如继承QueryAttributesTask, 则需重写ExecuteTask函数,ExecuteTask函数中主要就是对查询结果的处理。查询结果显示在TaskResultsContainer中,用户也可以自定义一个控件显示结果。
Flex API也可以实现查询、搜索等功能,对于结果的表现相对于WebADF来说要复杂一些,需要用户自己编写代码显示查询结果。以继承IdentifyTask为例,如
<esri:IdentifyTask id="identifytask" identifyComplete="identifyCompleteHandler(event)" url="http://whgis.wpl/ArcGIS/rest/services/manchun/MapServer" />
查询结果的处理在 identifyCompleteHandler(event)中实现。
3.3 性能比较
Web ADF和Flex API之间的关系就是企业级和轻量级的关系,从上面的实验中可以看出,Flex API不论访问数据服务还是开发代码都比较简单,浏览、查询的速度比Web ADF的快,这是因为Flex API 是基于REST的设计,而REST的是无状态的,从客户到服务器的每个请求都必须包含理解该请求所必需的所有信息,并且不能利用任何存储在服务器上的上下文,允许服务器组件迅速释放资源,并进一步简化其实现,因此服务器不必跨多个请求管理资源的使用。对于公众级别的应用,显然使用客户端API将压力分散到客户端更为合适。
然而由于Flex API是基于REST的设计,会受到REST的一些限制,如客户端发送请求的字符串长度不能超过2048字节,因此,受到传递参数长度的限制而无法实现复杂的功能比如复杂的Geoprocessing 服务。Web ADF没有这种限制,并且WebADF自定义控件的灵活性很大,则可以适合用于实现更为复杂的功能。它是基于有状态的设计,可以充分利用AO资源,进行管理员角色的应用开发,适用于企业级的深度GIS应用,充分利用服务器端的资源,如在线编辑等。GP工具为WebGIS应用提供了较大的扩展空间,但前提是必须使用桌面中已有的或自定义工具,ADF可以不依赖于其他任何软件通过ServerContext实现GP中所有功能,降低软件成本。
当前的应用开发框架都有各自的优势,如何根据自己的应用选择合适的开发框架,才是我们要考虑的核心问题。
4 结束语
ArcGIS Server9.3 Web ADF和基于Rest服务的客户端应用开发框架(如Flex API)都是基于服务体系之上的产物,既然是基于SOA,那么这些产物应该是丰富多变,不论是ADF、ArcExplorer、桌面应用、移动设备,还是js/flex/silverlight API、ArcGIS Image Server,甚至将来新的开发框架技术都可以置于ArcGIS Server根系之上。因此,根据业务需求,选择合适的开发框架,最大限度的发挥开发框架的优势,才是构建自己应用的关键所在。从宏观上来看,基于Rest服务客户端应用开发框架(js/flex/silverlight API)因为其开发简单,用户体验好,将会成为今后两年GIS发展的一个趋势。
本文由国家“十一五”科技支撑计划项目( 2006BAJ15B02)资助。
参考文献:
1. Li-Yu Lin and Chua Huang Huang, “An Integrated Information System for Real Estate Agency Based on Service-Oriented Architecture,” SOSE.2008.52, 184-189(2008)
2. Muracevic, D. and Orucevic, F., “Spatial data based on SOA,”. 50th International Symposium ELMAR 1,277-280(2008)
3. ESRI, ArcWeb Service. http://www.geographynetwork.com/webservices/index.html
4. ESRI, ArcGIS Server, http://resources.esri.com/arcgisserver
The Comparison and Analysis of ArcGIS Server
Web ADF and FLEX API
Abstract: In recent years, Web Service is widely used in the sharing of resources in Internet. As the development of the Web services standards and technology, service-oriented architecture are applied to an increasing number of GIS industry applications. To take full advantage of existing hardware and software resources to meet the user needs to build the GIS application platform, this article describes the characteristic and their applicability of Web ADF and the Flex API for .Net environment, and compare data access methods and functions of development methods of these two methods to develop service-oriented geo-spatial information of public service platform , then their efficiency and performance are analyzed.
KeyWord:Web Service; Web ADF; Flex API; SOA