葛纪坤,于海龙
(1.宁波市测绘设计研究院,浙江宁波315041;2.上海城市发展信息研究中心,上海200032)
信息系统的研发和应用与IT技术及软件工程理论的发展是紧密相关的。从信息系统的研发过程来看,经历了文本、过程、组件、Web Services,到目前SOA 5个阶段。由于基于文本的编程方法难以实现代码的复用,因此提出基于过程的编程方法,可以复用过程。从软件复用的角度来看,大大向前迈进了一步,但是由于过程要求在同一个应用程序内使用,因此复用受到限制。基于组件的编程方法则解决了不同应用程序共享同一个过程函数的需求,COM、DCOM、COM+等就是在这样的背景下逐步发展的理论与方法。不过由于组件技术只能应用于同构环境之中,对于跨平台的信息系统开发,则无法实现共享应用,如COM组件和J2EE组件之间就无法实现组件级的共享。为解决这个问题,提出了Web Services的技术与方法,其基于统一的W3C标准和XML语言,使跨平台、异构环境的软件复用成为了可能。目前,基于Web Services技术的软件开发,已经成为电子政务、公司业务管理平台等建设的核心技术与趋势。基于Web Services技术,为了更加有效地进行应用系统的开发,实现跨平台的软件复用,SOA(service of architecture)面向服务的体系被提出。SOA不是一种软件开发的技术,而是一种基于Web Services技术的软件开发原则与架构[1]。面向SOA的信息系统开发方法成为目前软件工程的热点。
从信息系统的架构来看,经历了单机、C/S、B/S,到目前提出的云计算的阶段。B/S架构已成为目前信息系统开发部署的主要模式,而云计算将是大型信息系统部署与应用的热点与趋势。云计算的核心技术也是Web Services技术,因此SOA将成为云计算的核心与基础。图1初步给出了软件开发与部署应用的的发展历程。
图1 软件开发与部署应用的发展历程
本文首先简要概述了 SOA,然后给出了面向SOA的Web Services设计方法及基于SOA的信息系统设计开发流程,最后给出了基于SOA的旧区改造管理信息系统开发实例。
SOA是一组通过统一定义的Web Services的集合[1]。Web Services是精确定义、封装完善、独立于其他服务所处环境和状态的函数。各个服务基于W3C统一标准定制,使得各个服务间可以通过标准接口进行通信,可以实现跨平台异构环境下的共享与复用。SOA是粗粒度、松耦合的Web服务架构,它通过定义Web服务参考模型,使得各个服务之间能够通过简单、精确定义接口进行通信。SOA能适应企业快速变化的需求,并且大大降低了企业成本,是目前软件工程中首推的软件架构体系。
图2说明了Web Services开发者和消费者如何形成一个 SOA体系[2]。开发者基于 Web Services标准实现一个特定的业务逻辑;消费者则汇集各个感兴趣的Web Services,通过Web Services集成,实现自己的业务逻辑。服务描述库是Web Services描述的集合,开发者注册服务,生成服务描述到服务描述库中;服务消费者通过Web Services描述发现Web服务。
图2 SOA的Web服务交互示意图
面向SOA的信息系统设计是一种业务驱动的信息系统设计方法,基于已有的Web Services,通过Web Services集成(形成业务工作流),实现用户的业务逻辑。因此,Web Services的标准化设计是关键。W3C给出了Web Services的通用设计标准。面向SOA的系统设计则要求从更高层面对Web Services进行标准化定义,包括Web Services的边界性、原子性、契约性、兼容性。
(1)Web Services边界清晰性
Web Services的边界范围通过其服务接口进行定义。首先确认服务接口,完备的服务接口是服务边界定义的关键,服务接口是访问服务的关键点,所有交互都是基于接口进行的;其次,服务接口具有演化升级的能力,而演化升级不影响原有用户对该服务的访问;再次,避免远程调用(RPC)接口,应该代之以定义清晰的消息,保持一定的服务接口数量,代之以完备的消息定义;最后,不要暴露服务的实现细节,保证服务开发者与使用者之间的松散集成。
(2)Web Services原子性
Web Services自包含,并且在服务部署、版本等方面是独立运行的。服务与具体实现的目标,即基于该服务开发的信息系统相互独立,并分开部署。采用悲观的策略,可减小服务失败的损失。
(3)Web Services契约性
服务使用政策、模式、行为进行交互,而不是采用传统的类。服务的契约包括消息格式(采用WSDL进行定义)、消息交互方式(采用WSDL定义的MEPs)、WS-Police要求,以及其他需要的 BPEL(business process execution language,一种基于 WSDL的长业务逻辑定义语言)。服务契约尽可能定义清晰,保证服务在理解上和使用上没有异义,服务版本升级致使契约变化,应该通过定义附加契约来实现;服务契约保证服务的数据、WSDL、政策保持不变,即保证服务的稳定性;最大的挑战也在于服务的稳定性,即一旦服务发布,应在不影响服务用户的前提下,进行服务升级与维护;如果中断服务是不可避免的,应可以通过服务版本,最大限度地减少对已有服务用户的影响;不要公开暴露内部数据表示,而是公共数据模式。
(4)Web Services兼容性
由于不是所有的服务交互需求都能通过WSDL实现,因此可以使用服务政策(WS-Police)来实现。服务政策表达形式实现了结构与语义的兼容性,即通过服务政策分离了通信的内容,以及怎样和向谁通信。一个服务政策表达定义了政策实体的行为,提供了一个特定域的语义。当设计一个服务时,在服务预期和兼容性方面应该尽可能保证服务政策定义清晰。
以上4个原则,是基于SOA进行Web Services设计的基本原则。然而准确清晰的需求分析,依然是服务设计的基础。
面向SOA进行信息系统设计与开发,其核心是Web服务的设计、开发与部署,以及基于B/S架构的信息系统设计、开发与部署。整个开发框架与流程如图3所示。
整个开发流程遵循经典的系统开发设计过程,即系统分析、系统设计、系统开发与部署、系统维护4个阶段。
基于SOA,系统需求分析除了传统需求分析需要实现的内容外,还要就整个系统的Web Services现状进行分析,包括如下问题:①什么Web Services是所需要的,Web Services服务种类有哪些?②什么Web Services是可以通过共享其他Web Services获得的,来自哪些系统与组织?③哪些组件可以共享用于构建Web Services?④各种服务与应用之间存在哪些依赖?等等。
图3 面向SOA的信息系统设计流程
系统设计主要包括3个方面的内容:数据库结构设计、Web Services设计、信息系统界面设计。数据库结构设计遵循传统设计内容与方法。Web Services设计主要基于以上4个基本原则,划分服务边界,保证原子性,确定服务契约,保证服务的兼容性,进而确定Web Services的类别与数量,并分别设计各Web Services的服务接口。信息系统界面设计,主要是组织实现业务逻辑,保证系统的简洁与实用性,这需要与业务逻辑紧密结合,使之符合信息系统用户的习惯。
系统开发与部署包括Web Services的开发与部署、信息系统开发与部署两个方面。Web Services可以通过.NET开发工具实现,尤其.NET推出的WCF4.0为基于SOA的Web Services开发与部署提供了方便。Web Services单独部署有两个优势:一是可以实现Web Services维护的相对独立性;二是可有效实现Web Services的共享与复用。信息系统开发与部署主要是开发实现各界面,后台则通过调用与集成Web Services实现各业务逻辑[3-4]。对于一些比较常规的功能(如统计、分析、报表等),也可以通过调用一些工具软件来实现。信息系统单独进行部署,不同的信息系统可以复用同一个Web Services,实现软件复用。
系统维护包括Web Services维护、信息系统维护。Web Services维护主要通过版本管理实现,如设计原则所述,应该尽量保证服务版本升级不影响已有用户的使用,尽量通过附加契约、增加接口等实现服务的更新与维护。
WCF(Windows communication function)不是单独提出的一种分布式程序开发的环境与工具,而是在已有分布式程序开发技术的基础上,通过一种面向服务的新型编程模型简化了关联应用程序的开发。WCF通过提供分层的体系结构,支持多种风格的分布式应用程序开发。具体而言,WCF对传统分布式处理技术进行了3个方面的革新:①统一了Microsoft分布式计算技术;②实现了跨平台的互操作性;③使WCF成为面向SOA的信息系统开发工具。
旧区改造管理信息系统是基于SOA体系架构设计开发的一个空间信息管理系统。本系统需要对海量空间信息进行浏览、查询、统计、分析、报表、打印等,而这些功能也是常规空间信息管理的基本功能,因此本系统封装这些功能,设计开发了一个Web Services SIGDAS(spatial information grid data access service),即空间信息网格数据访问服务,实现对空间信息的管理。SIGDAS不但可以为旧区改造管理信息系统提供空间信息管理功能,也可以为同类涉及空间信息管理的应用系统提供相关功能。
面向SOA体系架构一般采用B/S体系结构。通常开发的应用系统是基于浏览器的Web页面,通过该页面实现业务逻辑。本系统涉及的业务功能模块包括旧区改造基本情况、规划计划、实施进度、安置房、专题资料管理、综合分析等。
SIGDAS是实现空间信息浏览、查询、统计、分析、报表、标注、专题地图、制图打印、遥感比对等功能的Web服务,服务接口设计见表1。
旧区改造管理信息系统开发框架包括4层:数据层、网络层、管理服务层、应用层,如图4所示,具体为:
1)数据层。实现数据采集与上传,包括:①旧区改造业务数据,各区县通过动拆迁基地采集旧区改造业务数据,并向市平台上传数据,上传的方式包括Email、手持终端PDA、市平台与区平台联动3种方式;②全市旧区改造地块空间调查数据;③实景照片数据、旧改文献资料数据等。
2)网络服务层。考虑到国家电子政务、上海电子政务建设对网络环境的要求,同时也基于本系统未来的可扩展性,以及与其他委办局数据交换的需求,本系统采用政务外网网络环境。各区县上传数据可以采用互联网网络环境。
表1 SIGDAS接口
图4 面向SOA的旧区改造信息系统开发框架
3)管理服务层。通过数据汇集与整理建立旧区改造业务管理综合数据库,开发空间数据访问服务SIGDAS、数据核查与自动更新、数据管理等工具,建立上海市旧区改造信息管理系统。
4)应用层。实现旧区改造基本情况浏览查询、规划计划管理、实施进度管理、动迁安置房源管理、案例文献政策文件资料管理等。
面向SOA的信息系统设计与开发成为目前信息系统开发的趋势,也是未来云计算战略的核心技术。本文对面向SOA的信息系统设计Web Services的设计原则、系统开发流程进行了阐述,并以上海市旧区改造信息管理系统为例,进行了应用研究。本文后续研究应该关注如下3点:①Web Services集成应用研究,结合实际业务系统,对Web Services集成应用进行深入研究;②Web Services的版本管理、升级演化、辅助契约维护研究,研究实现的技术与方法;③SOA与云计算关系等。
[1]OASIS.Reference Model for Service Oriented Architecture 1.0[EB/OL].[2006-08-02].http:∥www.oasis-open.org/committees/tc_home.php?wg_abbrev=soa-rm.
[2]LIU Hua,ORBAN D.Gridbatch:Cloud Computing for Large-scale Data-intensive Batch Applications[C]∥Proceedings of CCGRID'08.Washington DC:IEEE Computer Society,2008:295-305.
[3]BUYYA R,RANJAN R,CALHEIROS R N.Modeling and Simulation of Scalable Cloud Computing Environments and the CloudSim Toolkit:Challenges and Opportunities[C]∥ Proceedings of HPCS'09.Leipzig:[s.n.],2009.
[4]PATHAK N.Pro WCF4.0.Practical Microsoft SOA Implementation[M].[S.l.]:Apress,2011.
[5]CHEN CY,TSAI P W.A Design of Multi-heterogeneous System Using SOA and RFID Middleware Platform[C]∥Proceedings of the 9th International Conference on Machine Learning and Cybernetics.Qingdao:[s.n.],2010.
[6]于海龙,邬伦,林星,等.基于WebService的小流域地貌演化问题计算设计与实现[J].北京大学学报:自然科学版,2005,41(6):890-897.
[7]于海龙,邬伦,刘瑜,等.基于Web Services的GIS与应用模型集成研究[J].测绘学报,2006,35(2):153-159.
[8]于海龙,刘丽萍,邬伦.基于Web Services的模型复用研究[J].系统仿真学报,2007,19(18):4139-4145.