文章信息
- 刘峻明, 朱德海, 张晓东.
- Liu Junming, Zhu Dehai, Zhang Xiaodong.
- 基于Web服务技术实现林业空间信息发布服务
- Implementation of Forestry Spatial Information Issuance Service Based on Web Service Techniques
- 林业科学, 2006, 42(增刊1): 41-44.
- Scientia Silvae Sinicae, 2006, 42(增刊1): 41-44.
-
文章历史
- 收稿日期:2005-06-24
-
作者相关文章
数字林业基础平台技术研究的主要目标是利用分布式计算技术开发网络化的组件和服务, 实现系统的通用性、结构的开放性、功能的可扩展性和数据的共享; 并以此为基础, 开发具有丰富接口的数字林业基础平台通用软件系统开发平台; 通过这个平台集成诸如基于WebGIS的森林资源信息系统、退耕还林管理系统和速生丰产林管理系统等宏观数字林业技术应用系统开发环境, 整合3S和Web服务技术, 实现森林资源信息快速传递和充分利用(王静等, 2003; 李希胜, 2003)。空间信息发布系统就是为整个数字林业基础平台及其各个子系统提供空间信息发布服务和数据共享, 从而体现整个数字林业基础平台的通用性、开放性和可扩展性。在林业信息化建设过程中, 许多学者对使用CORBA、DCOM等分布式计算技术来实现远程访问地理空间数据进行了深入研究(冯仲科等, 2000; 吴保国等, 2001)。在Web服务概念提出以前, CORBA、DCOM是构建分布式计算系统的主要技术, 也是构建WebGIS的主要技术。方裕等(2001)提出新一代的GIS软件应该具备支持数字地球(区域、城市)的能力, CORBA、DCOM由于在互操作性、可扩展性等方面受到自身因素制约而难当此任。在2000年, Web服务概念被提出, 它提供了基于标准的XML消息机制访问部署在网络上服务的能力, 并具有跨操作系统平台、跨语言平台等特点, 因此, 它也成为构建网格计算环境的基石。有学者也在研究将Web服务技术运用到分布式计算以及数字林业研究课题中, 提出分布式环境下基Web服务数据节点集群、互操作方案并构建上层应用组件及数字林业基础建设中应用Web服务技术的构想(江泳等, 2004; 范军等, 2004)。本文提出基于Web服务技术构建林业空间信息发布系统的软件框架, 着重阐述基于Web服务技术来构建林业空间信息发布系统的关键技术。
1 林业空间信息发布系统软件框架林业空间信息发布系统运行在基于TCP/IP协议的Internet/Intranet上, 包括办公局域网、政府专网和公众网等。Web服务为该系统提供数据业务和地图业务的核心服务。图 1是基于Web服务技术的林业空间信息发布系统的简单框架图。
![]() |
图 1 林业空间信息发布系统软件框架图 Fig. 1 Framediagram of forestry information issuance system software |
由图 1可以看出, 整个系统可分为3层:数据库层、中间件层和客户端。数据库中存贮所有需要进行发布的数据信息, 包括矢量数据、影像数据、林业专题数据等, 以及描述这些数据的元数据信息。为了实现高效安全的多用户并发访问机制, 这些数据通常存贮在大型数据库管理系统中, 如Oracle。中间件层作为林业空间信息发布系统前端与数据库之间的桥梁, 向前端应用系统提供统一的空间数据访问和管理的接口, 对前端和数据库之间的数据I/O进行优化均衡, 提供通用的空间数据管理和查询的基础工具。它封装GIS功能部件、数据库访问部件等, 可以分布到多个服务器中, 使用Web服务技术通过HTTP、SOAP等协议在网络中实现通讯。客户端则包括林业空间信息发布系统的数据管理客户端和享受数据发布服务的所有用户, 如政府、企事业机构、公众等, 用户通过Internet浏览器访问系统, 如IE、Netscape。
2 实现林业空间信息发布Web服务的关键技术 2.1 客户会话状态管理HTTP协议是Web系统的基础通讯协议, 是“无状态”的, 也就是说服务器不会保存客户的状态信息, 客户每次访问对于服务器端来说都是“新”的。在HTTP协议基础上定义的SOAP协议是Web服务的主要信息传输协议, 它完全继承了HTTP的“无状态”特性。“无状态”特性的重要优势是:由于服务器端不保存客户的状态信息, 使得它在处理客户访问请求时伸缩性较强, 比如同一客户的多次请求可以由不同服务器完成而无须考虑状态的一致性问题; 但在另一方面, “无状态”特性也使得客户端在实现一些面向连接的功能时会遇到困难, 比如用户访问某些具有安全要求的空间数据时, 需要登录, 通过认证, 而后才能访问数据。如果服务器端不保存客户状态, 就很难确定客户是否已经获得认证。在林业空间信息发布系统中, 有许多数据是涉密数据, 因此有必要对数据进行分类, 给不同类型的数据设定不同的安全级别和可访问对象。另外, 从功能操作的技术实现角度, 记录客户状态将为地图操作功能的实现带来方便, 比如按比例的地图缩放功能, 它是基于当前地图的显示比例尺进行的, 这就要求服务器端能够保存当前地图的显示比例尺。考虑到空间信息发布系统中地图操作的重要性和频繁程度, 采用面向连接的设计思想, 实现客户状态保存和管理。实现客户状态保存的基本方法是使用Cookies, 它在服务器端生成并被传送到客户端, 在后续的客户端对服务器访问时Cookie会被嵌入HTML信息流送回服务器端, 以实现服务器端对客户端的认证, 从而实现用户会话状态的维持。现在主流的Web开发技术JSP(王秋萍等, 2003)、ASP、PHP等都支持Cookies。
.NET框架为使用Cookies来保存和管理客户状态提供了技术支撑, 把WebService类作为.NET框架体系中所有用户定义的Web服务类的基类。WebService类包含了ASP. NET应用程序公共对象Session和Application对象成员。Application对象提供一个存储数据的机制, 存储Web应用程序中的所有代码都可以访问的公共数据, 而Session对象允许针对每个客户端会话存储数据。从WebService类派生出MapService类, 把它作为林业空间信息发布系统的Web服务类, 它继承WebService的特性, 可以访问Session和Application对象来实现状态管理。根据. NET的技术规范, Web服务的公共访问方法使用WebMethod属性来修饰, 当WebMethod属性的EnableSession属性设置为true时, 存储在Session对象中的数据将会被保存, 在后续的访问中可以使用Session对象中保存的数据, 从而达到保存状态。例如:
![]() |
Web服务的调用过程与常规的lib、dll和ocx等模块的调用过程不同, 常规模块调用时直接在本地内存中定位并执行代码, 不需要经过网络, 而Web服务的调用则需要通过网络来实现。Web服务的调用代价是很大的, 中间要经过很多环节, 首先要将调用指令和参数封装成SOAP消息, 然后要穿越防火墙、路由器、Web服务器等, 最后才能到达Web服务的宿主服务器, 宿主服务器将SOAP消息解译, 然后执行Web服务, 执行完成后要按同样的路径将结果返回客户端。因此, 在服务器上处理请求的过程其实只是众多环节中的一个, 网络传输过程也会对Web服务调用性能产生重要影响。所以在设计时应当尽量减少网络传输次数和网络传输量, 这对于空间信息发布系统总体性能来说是至关重要的。
假设MapService提供一个Web方法为SetLayerVisible(layerindex, visiblity), 用于设置一层的可见状态。如果要将一幅地图的1 ~ 5层设为可见状态, 那么可按如下方式来调用:
![]() |
这段代码需要调用SetLayerVisible方法5次, 也就是在网络上要进行5个来回。如果MapService提供SetLayersVisible方法用于一次性设置多个图层的可见性, 它将封装在1个字符串中的图层可见状态信息作为参数, 那么可按如下方式调用:
![]() |
这段代码仅需进行1个来回的调用过程即可, 从而极大地提高了效率。
因此, 太简单的方法会导致客户端频繁访问服务器。但并不是Web服务方法的复杂程度越高越好, 复杂度高, 程序执行时间延长, 返回的数据量也有可能增多, 客户端的等待时间也可能延长, 设计时必须在执行效率、数据传输量等指标上找到平衡。
2.3 同步方式还是异步方式执行Internet是松散连接的分布式系统, 且Web服务的调用需要经过很多环节, 相对于本地调用来说, Web服务调用过程中任何一个环节都是很脆弱的, 很可能会出现问题, 比如网络线路中断或阻塞、路由失败等。对于那些耗时较长的Web服务方法来说, 即使是网络顺畅, 调用过程很顺利, 也会阻塞客户端线程。为了提高执行性能, 可考虑将Web服务的方法以异步方式来实现。异步执行Web服务方法允许线程在返回线程池时执行其他代码, 这样, 在线程数量有限的线程池中就可以多执行一个线程, 从而提高了系统的总体性能和可伸缩性。在执行如下操作的Web服务方法时应该考虑采用异步方式实现:1)与其他Web服务进行通信的方法; 2)访问远程数据库的方法; 3)执行网络I/O的方法; 4)读取和写入大文件的方法。
这些方法将大部分的时间花费在硬件执行上, 从而导致调用它们的线程发生堵塞。如果异步方式执行Web服务方法, 该线程即可被释放并转而执行其他代码。对于林业空间信息发布系统来说, 许多操作会涉及大量的不同的数据, 因此一般不会在内存中缓存很多的数据。比如遥感影像在入库后, 为了方便快速显示, 会建立影像金字塔, 不同的金字塔塔层存放的是不同比例尺下基于原始数据重采样后的数据, 在对遥感影像数据进行缩放显示操作时, 根据比例尺的变化每次提取的数据可能是完全不同的, 每次操作都会导致对磁盘的直接访问, 这时, 可以考虑采用异步方法执行。为了与服务器端进行通信, 需要在客户端生成Web服务的代理(陈旌等, 2005)。代理程序可以自行开发, 也可以直接使用.NET提供的工具生成。在自动生成的程序中, 不论Web服务方法是否以异步方式执行, 客户端都能与它进行异步通信。客户端生成的代理类中会同时公开同步和异步调用的接口。代理类包含Begin和End方法, 用于与每个Web服务方法进行异步通信。异步接口提供一个以Begin方法来调用Web服务, End方法获取调用状态和结果, 也可以采用回调函数以事件通知的方式来实现异步调用。
3 林业空间信息发布Web服务的主要功能空间信息发布Web服务实际上是一个具有二次开发能力的组件, 是林业信息发布系统的中间件, 它为前端应用层提供服务。可将它的功能划分成以下几个子服务:1)元数据检索服务空间信息发布服务提供给用户访问空间数据库的能力, 为了方便用户检索数据, 需要建立元数据库, 将空间信息的元数据存入元数据库中, 与空间信息统一向客户发布; 2)空间信息查询服务主要实现用户对空间数据进行查询操作的功能, 可查询的数据包括空间数据本身和空间数据所携带的属性数据, 可以定义多种查询方式, 包括基于关键字段的查询、自定义表达式查询、缓冲区查询等; 3)地图显示服务地图显示服务提供地图的放大、缩小、漫游、区域定位、图层管理、图层显示比例尺设置、图层显示状态设置等地图显示功能; 4)空间数据下载服务下载服务提供将数据库服务器中的空间数据下载到客户端的能力, 这部分功能需要有下载权限才能进行, 通常空间数据量会很大, 下载服务会占用大量的带宽; 5)空间数据管理服务空间数据管理服务只针对具有足够权限的数据管理人员, 主要实现对数据库中的空间数据进行远程管理, 包括编辑和更新元数据、同步元数据和数据信息、建立空间索引、建立影像金字塔、定义专题地图等。受到网络带宽的限制, 管理服务不包括数据的导入、更新等耗时且需要进行大量数据传输的操作功能。
4 结论与讨论本文从设计和实现角度出发, 介绍了基于Web服务技术的林业空间信息发布系统的软件框架, 并讨论了实现林业空间信息发布服务的关键技术, 重点对客户状态管理、Web服务方法复杂度、Web服务的异步访问等问题进行了讨论。安全也是Web服务设计中很重要的内容, 有许多方法可以用来控制对Web服务的访问, 在Web站点上采用的安全措施大多都可以应用到Web服务上。.NET框架中, 默认方式下的Web服务是支持匿名访问的, 任何客户应用程序不需要提供身份验证信息就可以调用Web服务, 但它也提供了密码验证、CA证书等安全措施来支持对Web服务的安全控制。笔者已在. NET平台下使用C#语言设计并开发出林业空间信息发布Web服务组件, 可以实现空间信息查询、地图显示、空间数据管理等功能。
陈旌, 周小暄. 2005. 基于ASP.NET的Web服务代理服务器的设计与实现. 计算机系统应用, (8): 63-66. DOI:10.3969/j.issn.1003-3254.2005.08.017 |
方裕, 周成虎. 2001. 第四代GIS软件研究. 中国图像图形学报, 6(9): 817-823. |
江泳, 方裕. 2004. 基于Web Service的空间数据共享平台. 地理与地理信息科学, 20(5): 1-5. DOI:10.3969/j.issn.1672-0504.2004.05.001 |
范军, 邵崇斌, 赵文英. 2004. 数字林业基础建设中应用Web服务技术的构想. 西北林学院学报, 19(3): 171-174. DOI:10.3969/j.issn.1001-7461.2004.03.047 |
冯仲科, 张晓勤. 2000. 发展我国的数字林业体系. 北京林业大学学报, 22(5): 102-103. DOI:10.3321/j.issn:1000-1522.2000.05.023 |
李希胜. 2003. "数字林业"建设的现状与思考. 森林工程, 19(1): 17-18. DOI:10.3969/j.issn.1001-005X.2003.01.009 |
王静, 张百顺. 2003. "数字林业"建设的现状和思考. 长春大学学报, 13(2): 25-28. DOI:10.3969/j.issn.1009-3907-B.2003.02.011 |
王秋萍, 穆红军, 牛斗. 2003. 基于JSP的WEB会话技术的应用研究. 北华大学学报:自然科学版, 4(4): 360-363. |
吴保国, 林政. 2001. 基于COM的B/S模式系统对林业信息化建设的启示. 林业资源管理, (2): 51-55. DOI:10.3969/j.issn.1002-6622.2001.02.013 |