基于SOA的开放式车务综合信息平台架构研究
2010-05-08郑秋宁严余松
郑秋宁,严余松
(1.西南交通大学 信 息科学与技术学院,成都 6 10031;2.西南交通大学 交 通运输学院,成都 6 10031)
随着信息技术在铁路运输生产中的不断应用,铁路内部信息系统彼此间呈现出多样化的趋势。由于这些信息系统开发时期不同,开发时采用相对独立的开发模式,导致目前车务系统内部各信息系统之间存在异质性问题,信息孤岛[1]情况突出。有效地解决方法是在既有企业内部信息系统的基础上,通过在技术层面上搭建基础性综合信息平台,对现有的运输生产数据及信息系统中的业务功能整合进平台中。其核心内容是以面向服务架构(Service Oriented Architecture,SOA)思想为理论指导,在技术标准上,运用既有的XML及Web服务等相关计算机技术,对企业内部的业务功能及运输生产数据按照统一的传输模式及数据交换标准进行封装[2],使综合信息平台基础架构在独立于原有信息系统的逻辑层的基础上,形成一个开放式的软件基础架构,以期达到不断满足车务系统运输生产要求的最终目的。
1 面向服务架构(SOA)概述
SOA是一个软件架构,它包含4个关键概念:应用程序前端、服务、服务库和服务总线。一个服务包含一个合约、一个或多个接口以及一个实现[3]。SOA组成结构如图1。“应用程序前端”是业务流程的所有者;“服务”提供业务功能,可供应用程序前端和其他服务使用;服务的“实现”提供业务逻辑和数据;服务的“合约”为服务客户指定功能、使用和约束;服务的“接口”物理地公开功能;“服务库”存储SOA中各个服务的服务合约;“服务总线”将应用程序前端和服务连在一起。SOA概念的重心是定义业务基础结构。
2 实现SOA的主要技术
SOA的实现有赖于一个SOA的实现平台,Web服务技术是当前SOA的主流实现方式。Web服务技术体系是以可扩展标记语言(Extensible Markup Language,XML)为基础的。SOA软件架构中的4个主要技术:Web服务、SOAP、WSDL、UDDI都是依赖于XML语法的[4]。分别简介如下:
(1)XML语言:XML是一门创建结构化数据的技术。XML意味着以一种明确的、无二义性的方式标识信息各个单独部分[5]。XML Schema是定义XML文档数据模型的标准。
(2)Web服务:Web服务是支持网络上不同机器与机器共同操作的软件系统,它提供的接口能用机器所识别和处理的格式语言(WSDL)所描述[6]。Web服务的架构基于3种角色之间的交互,它们是服务提供者(Service provider)、服务注册中心(Service registry)、服务请求者(Service requestor)。它们之间交互的操作有:发布(pubulish)、查找(find)和绑定(bind)[7]。
如图2 ,它们主要执行3个操作:
发布(Publish):为了服务能够被访问,服务的描述信息必须被发布以便服务请求者发现和调用之。
查找(Find):服务请求者通过查询服务注册中心去定位符合其需求标准的服务。
绑定(Bind):在获得服务描述信息之后,服务请求者据此去调用服务。
(3)简单对象访问协议(Simple Object Access Protocol,SOAP):SOAP是一种简单的基于XML的协议,它使应用程序通过HTTP来交换信息.它可以在Web上交换结构化的信息[8]。
(4)Web服务描述语言(Web Service Description Language,WSDL):WSDL采用XML语言来描述Web服务的属性,其中包括Web服务做什么、位置、怎么调用等。
(5) 统一描述、发现和集成(Universal Description,Discovery and Integration,UDDI):UDDI为Web Service提供信息注册的标准规范,以便对Web Service进行注册发布供使用者查找。
3 铁路车务段综合信息平台架构设计
3.1 铁路车务综合信息平台架构设计方案
SOA是一种构建系统基础架构的思想,它将业务服务作为协调技术与业务需求的关键组织原则[9]。以SOA思想为指导,在车务综合信息平台基础架构项目中,以XML及Web Service技术作为系统集成的核心标准,构建出如图3所示的铁路车务综合信息平台架构设计方案。
3.2 建设过程中遇到的问题
(1)缓解“信息孤岛”:Web Service服务器端与综合信息平台内部客户端及外部客户端通过基于HTTP的SOAP消息进行通讯,消息内容基于XML标准。
(2)业务为主导:利用Web Service技术,对于企业内部原有的信息系统,按照实际需求将功能包装成Web服务,提供统一的、简单可靠的Web服务接口调用方式。基于这些标准的Web服务,能够更加容易地实现客户端系统集成。体现出“业务驱动服务,服务驱动技术”的业务为主导的思想[9]。
(3)松散耦合:由于Web服务接口的定义和描述独立于实现的硬件平台、操作系统和编程语言,从而不同的服务以一种统一和通用的方式进行交互。这样,服务请求者与服务提供者之间的绑定以及服务之间是松散耦合的。
(4)接口定义标准统一:SOA中的服务的交互接口必须是被明确定义和描述的。服务提供者应该使用标准的服务描述语言(WSDL)来定义接口,用于描述服务请求者要求绑定到服务所需要的细节。
(5)不同系统间数据交换:通过以Web服务接口的形式将企业内部相关业务数据进行公布,使得客户端可以更加方便地获得所需业务数据,达到数据集成的目的。
(6)远程调用及兼容性:通过利用“服务”,搭建起车务系统内部信息系统之间的横向沟通桥梁,从而提高了整个综合信息平台架构的灵活性。
(7)服务统一管理:统一采用标准Web 服务接口作为功能模块接口,便于权限管理和服务内部技术调整。
3.3 车务综合信息平台的基本结构
主要划分为7层:如图4。
3.4 数据存储方案主要应用
数据存储方案是综合信息平台架构中的一个重要部分,数据库是被集中控制和管理的存储数据的完整集合。目前广泛应用的是关系数据库和面向对象数据库[10]。本文首先选择以主流的关系数据库技术为数据存储方案方式之一。
关系数据库技术到目前也出现了很多不够完善的问题:对于较复杂的数据结构,在数据建模时技术能力有限;在异构应用数据交换时,难以实现计算机基于语义自动进行正确数据的检索与应用。XML是一组规则和准则集合,用于以无格式文本(非二进制)来描述结构化数据。随着时间的推移,基于文本的XML技术在数据存储方面得到了长足发展并具备了相当的优势。同时XML是平台无关的、标准化的一组规则集合,得到众多厂商的广泛支持,数据库与XML结合的理由对任何使用过这两者的人来说都是不言而喻的[11]。
综上所述,在数据存储方案中采用了关系数据库技术与XML数据文档相结合的数据存储方案,主要应用在以下3个方面:
(1)对于如工号、密码等基础性的需要频繁操作的强结构化的数据,采用关系数据表的方式保存于数据库中。
(2)对于文本文档(如Word文档)等半结构化的数据,以XML文档形式保存在数据库的XML字段中,并采用XPath和XQuery等技术对其进行检索、更新、删除等操作。
(3)对于大批量结构化数据(如报表文件)需要进行输入输出操作时,直接使用For XML子句将数据表中的数据行集转换成结构化文档(如Excel文件),而使用Open XML子句直接将结构化文档转换成关系行集。
在车务综合信息平台的开发及部署方面,本文采用微软公司的系列产品作为开发及部署平台支撑。其中,开发平台以微软的.NET软件开发平台为主,部署平台以Windows Server 2003操作系统及IIS6.0为主。
4 服务器端解决方案
综合信息平台的基础架构部分主要包括了图5中所示的组件和程序包。
在图5中将基本组件共分成了6个区域,分别对应图3中的各个层,其中:A对应业务逻辑层中Web服务层;B对应业务逻辑层中业务集成模块及业务实体、业务规则层、业务外观层;C对应业务逻辑层中安全验证模块;D对应数据传输层;E对应数据访问层;F对应业务逻辑层中系统框架层。下面对各个模块进行简单介绍。
4.1 Microsoft Enterprise Library
本系统在开发过程中充分利用Microsoft Enterprise Library中的类库,主要包括数据访问、数据加密等。
4.2 Web.config文件
Web.config是系统运行配置文件,主要用于保存系统相关配置信息,如数据库连接字符串、安全验证方式等,是系统运行的基础。Web.config本质上是XML文件格式的,因此,除使用.NET平台所提供的配置功能以外,还可以使用多种方式在配置文件中保存自定义配置信息。
4.3 系统框架包
(1)定义服务组件的抽象基类和接口,为后续开发者开发新的服务组件预留接口;
(2)配置文件管理,提供管理配置文件的相关服务;
(3)简单SQL语句生成器,主要用于生成简单的SQL语句。将在业务逻辑开发过程中简单而重复的SQL语句(如实现简单的插入、删除等操作的SQL语句)通过生成器自动生成,减少代码冗余,提高开效率。
4.4 数据访问包
数据访问包主要为系统中其他组件访问数据库提供服务。通过数据访问组件,将上层的业务逻辑与数据库隔离开来,使系统在数据库方面具有较好的可移植性,此外,数据访问程序包充分利用了Microsoft Enterprise Library中的Data Access Application Block中所提供的功能,并将数据库的连接字符串写入配置文件中,在更改数据库连接时,只需修改配置文件相应配置信息,便于系统的移植和维护。
4.5 数据加密组件
数据加密组件主要实现SOAP消息的加密和解密功能。同样,数据加密组件使用了Microsoft Enterprise Library的相关类库。
4.6 安全验证组件
安全验证组件主要实现系统的身份验证功能,将非法的用户拒之于系统边界之外。
4.7 服务组件
服务组件是系统中核心组件,主要实现服务器端所能提供服务的业务逻辑。
4.8 服务接口
由业务集成中的各个服务组件提供的服务接口构成,主要实现服务器端提供的服务接口集合。供用户界面层使用服务器提供的服务功能。
5 服务器端使用的关键技术
5.1 基于异常处理的故障诊断
为了方便进行异常处理,本系统定义了异常基类BaseException,系统框架中其余使用的异常类都继承于该基类。车务综合信息平台可以部署成一个分布式的系统,将各项服务分布于多个的服务器上,其稳定性依赖于各个服务器以及网络连接是否稳定。在基础架构中,充分利用.NET框架提供的跟踪侦听机制,由Trace类发布跟踪信息,再通过注册在配置文件中的侦听器侦听并处理。将跟踪信息写入Windows事件日志中。实现系统的故障诊断,以降低系统维护的难度。
5.2 配置文件管理
(1)系统运行时所需要的基本信息:如数据库连接字符串,客户端程序登录信息等。
(2)个性化客户端信息:将客户端程序的配色、字体等相关信息保存在配置文件中,使用户获得个性化的用户体验。
(3)功能模块配置信息:这主要用于客户端程序,实现功能模块的热插拔效果。
5.3 数据访问
在数据访问方面,本系统设计了数据访问组件(OrionIsDataAccessor),并采用基于ADO.NET和Microsoft Enterprise Library(Data Access Application Block)相结合的数据访问方案。
5.4 传输安全与安全验证
为保证系统的安全性,本系统开发了一个安全通信组件,以SOAP扩展模块的形式集成到系统中,在SOAP消息头中实现数据的加密和解密,以保证数据通信安全;并在此基础上开发了一个安全验证组件(模块)以HTTP模块的形式集成到系统中,以保证系统身份验证安全。
5.5 业务集成
业务集成是本系统的核心。业务集成是运行在系统支撑结构之上的封装了业务逻辑的服务组件。一个功能模块即一个服务组件,服务器端提供了多个功能模块,即包含多个服务组件。
5.6 基于角色和用户组的权限管理
由于车务综合信息平台的开放式特性,客户端可能是多种形式的,用户的数目庞大并不确定,不同的用户群体的特征也各自不一样。因此,需要有一个良好的管理机制来管理用户,保证精确的权限管理,并提高管理效率。本文采用了基于帐户、角色和账户组的权限管理逻辑,并将相关验证信息保存在数据库中。在进行身份验证时,系统根据客户端输入的职工工号检索LaborInfo表,查找相应的账户信息,将客户端输入的密码与LaborInfo表相应的密码进行比较,如果存在这样的用户名并相应的密码相同,则通过身份验证。账户组则将具备类似权限的账户归类为一组,统一进行管理。账户组的成员可以是账户,也可以是其他的账户组。系统管理员可增设新的组,或者对已经存在的组中增减账户、子账户组或角色。
5.7 启用缓存的用户验证
在客户端与服务器端的交互过程中,往往会出现在较短的时间内客户端需要多次调用Web服务方法。如果每调用一次Web服务方法就在HTTP模块中访问一次数据库,进行员工工号和密码的比对操作,将会消耗过多的系统资源,降低运行效率。为了避免以上情况,车务综合信息平台将经过首次验证的客户端所生成的Principle对象保存在系统缓存中,并产生一个GUID来标识该Principle对象,同时将GUID返回给客户端,在以后的请求中,只需以此GUID来从缓存中读取Principle对象。这样一来,避免了对同一用户的多个请求进行不必要的多次用户验证。
6 结 束语
SOA是一种面向服务的软件体系架构思想,基于SOA的一系列技术及标准具有松耦合、平台无关、粗粒度服务接口等优点。基于SOA的思想对目前企业内部信息系统进行集成,不仅解决诸如信息孤岛、异质性、数据交换这样的问题,还可以大大节省企业内部信息系统的维护和管理费用。随着相关技术的不断进步,SOA系统集成思想在今后铁路信息化的发展道路上必定能不断发挥更加重要的作用。
[1]杨 勇,杨薇薇.Web服务的一种通用集成模型的研究[J].华中科技大学学报:自然科学版,2004,32(1):44-46.
[2]雷 彬,张洪伟,汪怔江. 基于SOA的企业分布式系统的研究域应用[J]. 开发案例,2007(9):97-99.
[3]孟海涛,殷 旭. 基于SOA的数字化校园网研究[J]. 中国科技信息,2007(16):92-94.
[4]曾 洋,张艳梅. 面向服务的体系结构[J]. 软件导刊,2008(7):77-78.
[5]李建华,陈松乔. 面向服务架构参考模型及应用研究[J]. 计算机工程,2006,32(20):100-102.
[6]门永奎. 基于Web Service的软件分布式重用的研究与实现[J]. 微计算机信息,2006,22(27):278-280.
[7]柴晓路. Web服务架构与开放互操作技术[M]. 北京: 清华大学出版社,2003:255-256.
[8]OASIS SOA Reference Model TC. Mapping of W3C Web service Architecture Work to SOA RM work[R]. USA, 2005.145-146.
[9]Dirk Krafzig, Karl Banke. Enterprise SOA Service-Oriented Architecture Best Practices[M]. USA 2006.
[10] Nicolai M.Josuttis SOA in Practice-The Art of Distributed System Design[M]. USA 2008.
[11] 毛新生. SOA原理、方法、实践[M]. 北京:电子工业出版社,2007.