SOA架构设计案例分析
一、SOA介绍
SOA(Service-Oriented Architecture,面向服务的架构)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。面向服务架构,它可以根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署、组合和使用。服务层是SOA的基础,可以直接被应用调用,从而有效控制系统中与软件代理交互的人为依赖性。
SOA是一种粗粒度、松耦合服务架构,服务之间通过简单、精确定义接口进行通讯,不涉及底层编程接口和通讯模型。SOA可以看作是B/S模型、XML(标准通用标记语言的子集)/Web Service技术之后的自然延伸。
SOA将能够帮助软件工程师们站在一个新的高度理解企业级架构中的各种组件的开发、部署形式,它将帮助企业系统架构者以更迅速、更可靠、更具重用性架构整个业务系统。较之以往,以SOA架构的系统能够更加从容地面对业务的急剧变化。
二、基本特征
SOA的实施具有几个鲜明的基本特征。实施SOA的关键目标是实现企业IT资产的最大化作用。要实现这一目标,就要在实施SOA的过程中牢记以下特征:
1.可从企业外部访问
2.随时可用
3.粗粒度的服务接口分级
4.松散耦合
5.可重用的服务
6.服务接口设计管理
7.标准化的服务接口
8.支持各种消息模式
精确定义的服务契约SOA服务具有平台独立的自我描述XML文档。Web服务描述语言(WSDL, WebServices Description Language)是用于描述服务的标准语言。
SOA 服务用消息进行通信,该消息通常使用XML Schema来定义(也叫做XSD, XML Schema Definition)。消费者和提供者或消费者和服务之间的通信多见于不知道提供者的环境中。服务间的通讯也可以看作企业内部处理的关键商业文档。
在一个企业内部,SOA服务通过一个扮演目录列表(directory listing)角色的登记处(Registry)来进行维护。应用程序在登记处(Registry)寻找并调用某项服务。统一描述,定义和集成(UDDI, Universal Description, Definition, and Integration)是服务登记的标准。
每项SOA服务都有一个与之相关的服务品质(QoS, quality of service)。QoS的一些关键元素有安全需求(例如认证和授权),可靠通信(译注:可靠消息是指,确保消息“仅且仅仅”发送一次,从而过滤重复信息。),以及谁能调用服务的策略。
三、案例分析
海上船舶出现险情或其他灾害性事件时,如果尽可能地控制紧急事件的发展,并消除险情和事故,能将海上事故对人命、财产和环境的危害降低到最低限度。为了提高我国海事应急指挥综合水平,保护海上人民生命和财产的安全,把“中国海上搜救中心办公室建成具有现代化、数字化、信息化管理水平,集水上安全监控、海上搜救决策、信息分析处理等为一体的组织、协调、指挥中心”,努力提高搜救现代化、数字化、信息化水平,交通部海事局启动了海事应急辅助指挥系统试点工程的建设。
海事应急辅助指挥系统是一个系统工程,范围上覆盖中国MRCC、MRSC,技术上涉及到网络、数据库、船舶交通管理系统(简称VTS)、船舶自动识别系统(简称AIS)、电子海图、搜救模型等众多专业,非常复杂。此系统的建设目标,是通过对海事系统现有信息资源和通信资源的整合,在应急指挥数据库和电子海图平台的支持下,利用海上落水人员漂移等数学模型,初步建立以实现人命救助的辅助指挥、应急预案的应用管理为重点的海事应急辅助指挥系统。要实现应急指挥系统,需要将不同部门和应用系统进行资源整合,形成统一的指挥平台系统。在海事应急辅助指挥系统的建设中,需要整合的应用系统很多,如VTS系统、AIS系统、船舶动态系统、船舶报告查询系统、应急指挥系统等,这些系统涉及不同的提供厂家(如国内外应用系统厂商)、多种通讯接口(如FTP、TCP/IP、HTTP等)、多种实现技术(如CORBA、J2EE、.NET等)、多种数据格式等,业务复杂,技术难度大。以AIS系统为例,它由岸基(基站)设施和船载设备以及AIS数据链路共同组成,它包括诸如雷达等硬件通讯设备,又包括信号采集和处理的软件系统,技术相当复杂。图2为本系统信息整合拓扑图,是需要将海事应急指挥所需要的分布在不同地方的海事直属局的应用系统和数据,同步到部局对应的系统中,而部局的相关数据,也要分发到下面相关直属局对应系统中。通过数据交换平台,整合现有信息资源,形成统一的数据信息,为应急指挥系统提供信息服务,实现海事应急信息综合查询。
图2.海事应急辅助指挥系统信息整合拓扑图
按照传统的应用集成解决方案,开发工作量大,系统难于扩展和维护,而且它对系统集成商的技术储备和开发团队有很高的要求。在这种场景下,采用SOA相关解决方案,无疑是最佳选择。基于SOA的解决方案,将现有应用系统和业务进行梳理,以服务的方式将现有应用系统接入服务总线,把复杂的业务逻辑、通讯协议转换、复杂数据格式转换等封装成服务,对封装的服务进行自由组合与编排,能够快速进行不同应用系统之间的互联互通和数据交换。这样不但屏蔽了不同应用系统的业务和技术复杂性,还保护了现有应用系统的投资,提高了开发效率。
在数据交换平台产品的选型上,经多方比较和权衡,海事局采用了东方通科技基于SOA架构的企业应用集成产品TongIntegrator3及其他中间件产品,作为信息整合的产品解决方案。TongIntegrator3是东方通科技公司新一代的符合SOA架构的企业应用集成产品,主要功能是在两个或更多的异构系统(如不同的数据库、消息中间件、ERP或CRM等)之间进行资源整合、互联互通,实现数据集成、应用集成、业务流程集成等需求功能,以构建灵活可扩展的分布式企业应用。TongIntegrator3产品结构由集成开发工具TI Studio、监控管理中心、资源中心、运行环境逻辑节点、便于应用集成开发的组件和套件(如适配器、Java服务、合成服务等)以及企业服务总线TI ESB组成,其结构与SOA参考架构类似,具体组成如图3所示。
图3. TongIntegrator3产品组成结构
以东方通科技符合SOA架构的TongIntegrator3和其他中间件如消息中间件TongLINK/Q的产品解决方案,如图4所示,其技术思路如下:
l 利用TongIntegrator3提供的适配器服务,连通海事现有应用系统,屏蔽不同应用系统复杂的技术接口和通讯协议;
l 将复杂的数据格式转换、业务逻辑等,封装成服务,通过服务总线提供服务消费功能;
l 利用强大的Java服务功能,对流程进行梳理和编排组合,构成更大粒度的合成服务和流程服务;
l 采用消息中间件TongLINK/Q,保证分布式的异步可靠消息传输;
l 将创建的服务和可复用资源,使用资源中心进行集中存储,以方便管理及团队协作开发;
l 使用内部集成的服务总线,对服务消费进行寻址路由、通讯协议转换及服务质量保障等,降低了服务消费者和提供者之间的耦合性。
在海事应急辅助指挥系统中,SOA参考架构的各个组成部分,从方案的设计、编码开发、打包部署,到业务应用的运行、监控和管理,大部分得到了实际的应用。如使用集成开发工具TI Studio进行基于SOA的业务分析、设计开发及打包部署;利用资源中心集中存储服务资源,并进行团队协作开发和资源编辑版本控制等;使用监控管理中心能够对SOA运行环境及部署其上运行的SOA应用进行监控和管理;使用Java服务和服务总线TI ESB,完成服务的编排、接入、通讯协议转换、数据格式转换等功能。
图4. 基于东方通SOA中间件产品解决方案
从海事应急辅助指挥系统项目的开发和实施效果来看,基于SOA参考架构的技术、产品及实施方法论,能够方便地复用企业现有应用系统,保护用户IT投资,加快开发进度。并且基于SOA构建的新应用业务系统,架构灵活,便于维护和重构,提高用户的业务敏捷性。因此,通过SOA参考架构的实践,相信SOA理论和技术的应用,会逐渐走向普及和深入,同时,也会促进国内越来越多的软件厂商,加大资源和力量投入到SOA技术和产品的开发上面,从而进一步加快提高我国软件的开发水平。
参考资料: