摘要: SOA是一种面向服务的软件系统架构而非某种技术,它是在传统的业务层与数据层之间添加一个独立的服务层。在服务层中,SOA将不同的功能单元称为服务,并通过对这些服务之间定义良好接口的方式将它们联系起来,从而可以根据网络和应用对系统耦合粒度的要求进行分布式部署、组合...
SOA是一种面向服务的软件系统架构而非某种技术,它是在传统的业务层与数据层之间添加一个独立的服务层。在服务层中,SOA将不同的功能单元称为服务,并通过对这些服务之间定义良好接口的方式将它们联系起来,从而可以根据网络和应用对系统耦合粒度的要求进行分布式部署、组合和应用。SOA服务的提供者与服务的使用者并不一定在一台计算机上。SOA的接口定义是语言和平台中立的,它可以独立于实现服务的软硬件平台和编程语言,这就使得在不同的服务器、操作系统和应用系统中,可以通过一种统一通用的方式进行交互。
在SOA中,服务是最关键的概念,它是一个黑盒封装的可执行原子,提供的功能只能通过已经发布的接口进行访问。此外,服务还可以通过聚合的方式,构成粒度更大的服务。SOA模型中存在三种基本角色,即服务的提供者、服务注册目录和服务的消费者,它们通过发布、査找和调用实现相互联系。
服务提供者是被访问服务的运行平台,它是一个可以通过网络被访问到的实体对象,接受来自服务消费者的请求,并根据请求携带的参数,向服务消费者提供服务。服务消费者是需要使用特定功能的用户,它可以是在任意硬件设备上的服务请求者,如计箅机、平板电脑、智能手机等。但在SOA中,服务提供者与服务消费者并不是直连的,它们之间需要服务注册目录作为中介,当服务提供者建立一个服务后,将服务发布到注册目录中,而服务的消费者通过査找目录,来获取服务描述,从而与服务提供者进行绑定并发送请求,以获取所需要的功能或数据。因此,SOA在本质上又被称为“服务的集合”。
Web服务的实现技术主要有两种,即简单对象访问协议和表示性状态转换,它们均有各自的适应范围。例如,对应用的可靠性和安全性要求较高,且服务的提供者与消费者之间的信息交换格式要一致,并且应用是有状态的,可以使用SOAP;如果希望服务能被任何浏览器支持和更好地使用异步 JavaScript和XML(asynchronousJavaScriptandXML,AJAX)对象,需要完全无状态的操作(这种操作往往只需要一步执行),可以选择REST。目前已有不少WebGIS软件能够完全支持两种不同的Web服务实现技术,可实现不同规模的GIS应用,尤其是目前流行的基于富客户端的mashup应用,通过REST服务是一种很好的选择。
基于SOA,许多GIS厂商和开源联盟早已发布了多款不同应用 规模的GIS服务器产品以构建WebGIS应用,这些GIS服务器都是通过GIS服务的方式,向客户端发布基于Web服务的GIS数据和GIS功能等服务。在SOA中的Service GIS主要由三部分组成,即数据层、服务层和客户层。数据层主要由各种关系型数据库管理系统存储的空间数据和文件型空间数据组成,虽然目前关系数据库几乎可以存储所有的空间数据(包括地理元数据和地理语义数据),但仍然存在直接使用文件型数据的可能性(如影像数据、三维模型数据等)。
服务层主要由GIS服务器和Web服务器组成,GIS服务器负责访问GIS层中的数据以提供各种动态的GIS服务,并通过Web服务器将服务内容反馈给客户层。为了提高WebGIS应用的访问速度,目前较为流行的是通过专门的地图切片工具,将那些更新频率较低的地图,以一定比例尺和图片尺寸切割为静态的地图图片文件(jpg或png等),这些图片由于名称固定,可以在客户端、网关、网络服务器上形成缓存数据,从而达到访问数量越多访问速度越快的效果。这些数据可以存放在专门的瓦片服务器上,通过Web服务器进行访问。
SOA中的客户端是多种多样的,在硬件上,可以是个人计算机、平板电脑或智能手机等设备,也可以是各种嵌人式设备;在软件上,可以是通过JavaScript、Flex或SilverLight等富互联网应用技术构成的富客户端应用,也可以是服务器端客户端或传统组件式客户端(COM或.NET代码编写)。服务器端与客户端之间是完全独立的,服务器端的任何变化,只要服务接口没有发生变化,客户端就无须为此重新编写代码。
总体而言,基于SOA的Service GIS类型应用,为客户端提供了丰富的、功能强大的、松散耦合的GIS功能,提高了GIS访问的速度和性能,降低了进入GIS的门槛,使GIS发展到了一个新的高度。