首页 理论教育 SOA定义及分类:《Web服务组合的应用可靠性研究》

SOA定义及分类:《Web服务组合的应用可靠性研究》

时间:2023-10-31 理论教育 版权反馈
【摘要】:关于SOA,目前尚未有一个统一的、业界广泛接受的定义。从技术角度讲,SOA是一个组件模型,以XML技术为基础,通过使用WSDL协议描述接口,它将应用程序的不同功能单元通过定义良好的接口联系起来[36]。服务是SOA的基础,可以被应用调用,从而有效控制系统中与软件交互的人为依赖性。从上面可以看出,SOA有很多定义,但基本上可以分为两类:一类认为SOA主要是一种架构风格。

SOA定义及分类:《Web服务组合的应用可靠性研究》

关于SOA,目前尚未有一个统一的、业界广泛接受的定义。一般来说,SOA是指在Internet环境下为了解决业务集成的需要,通过连接能完成特定任务的独立功能实体实现的一种软件体系结构[35]

从技术角度讲,SOA是一个组件模型,以XML技术为基础,通过使用WSDL协议描述接口,它将应用程序的不同功能单元(称为服务)通过定义良好的接口联系起来[36]。接口采用中立的方式定义,独立于具体实现服务的硬件平台、操作系统和编程语言,使得构建在这样的系统中的服务可以使用统一和标准的方式进行通信。这种具有中立的接口定义(没有强制绑定到特定的实现上)的特征被称为服务之间的松耦合。

SOA不是一种语言,也不是一种具体的技术,更不是一种产品,而是一种软件系统架构,它尝试给出在特定环境下推荐采用的一种架构,其建立在Web服务的基础上,可以把它看作是B/S模型、XML/Web服务技术之后的自然延伸。从这个角度上来说,它其实更像一种架构模式(Pattern),是一种理念架构,是人们面向应用服务的解决方案框架。服务是SOA的基础,可以被应用调用,从而有效控制系统中与软件交互的人为依赖性。SOA能够帮助我们站在一个新的高度理解企业级架构中的各种组件的开发、部署形式,它将帮助企业系统架构者迅速地架构可靠、具有重用性的业务系统。较之以往,以SOA架构的系统能够更加从容地面对业务的急剧变化,可以根据需求对松散耦合的粗粒度应用进行分布式部署、组合和实用。

另外,SOA也是一种用于构建分布式系统的方法,采用SOA这种方法构建的分布式应用程序可以将功能作为服务交付给终端用户,在使用面向服务的体系结构设计分布式应用程序时,可以将Web服务的使用从简单的客户端-服务器模型扩展成任意复杂的系统[37,38]。(www.xing528.com)

从上面可以看出,SOA有很多定义,但基本上可以分为两类:一类认为SOA主要是一种架构风格。另一类认为SOA是包含运行环境、编程模型、架构风格和相关方法论等在内的一整套新的分布式软件系统构造方法和环境,涵盖服务的整个生命周期:建模-开发-整合-部署-运行-管理。后者概括的范围更大,着眼于未来的发展,其认为SOA是分布式软件系统构造方法和环境的新发展阶段。

在SOA架构风格中,服务是最核心的抽象手段,业务被划分(组件化)为一系列粗粒度的业务服务和业务流程[39]。业务服务相对独立、自包含、可重用,由一个或者多个分布的系统所实现,而业务流程由服务组装而来。一个“服务”定义了一个与业务功能或业务数据相关的接口,以及约束这个接口的协议,如服务质量要求、业务规则、安全性要求、法律法规的遵循、关键业绩指标(Key Performance Indicator,KPI)等。接口和协议采用中立、基于标准的方式进行定义,它独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在不同系统中的服务可以以一种统一的和通用的方式进行交互、相互理解。除了这种不依赖于特定技术的中立特性,通过服务注册库(Service Registry)加上企业服务总线(Enterprise Service Bus,ESB)来支持动态查询、定位路由和调解(Mediation)的能力,使得服务之间的交互是动态的,位置是透明的。技术和位置的透明性,使得服务的请求者和提供者之间高度解耦。这种松耦合系统的好处有两点:①适应变化的灵活性;②当某个服务的内部结构和实现逐渐发生改变时,不影响其他服务。紧耦合则是指应用程序的不同组件之间的接口与其功能和结构是紧密相连的,因而当发生变化时,某一部分的调整会随着各种紧耦合的关系引起其他部分甚至整个应用程序的更改,这样的系统架构就很脆弱了。

从建模和设计的角度来说,SOA更多地侧重在业务层次上,也就是通过服务建模将业务组件化为服务模型,它是业务架构的底层,是技术架构的顶层,承上启下,是灵活的业务模型和IT之间的桥梁,保证两者之间的“可追溯性”。从架构的层次上,SOA更多地侧重于如何将企业范围内多个分布的系统(包括已有系统/遗留系统)连接起来,如何将它们的功能、数据转化为服务,如何通过服务中介机制保证服务之间以松散耦合的方式交互,如何组装(集成)服务与流程,如何管理服务和流程等。对于实现服务的一个具体应用,它的架构、设计和实现是可以基于已有的实践和方法的,比如J2EE或.NET。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈