面向服务架构,它能够根据需求经过网络对松散耦合的粗粒度应用组件进行分布式部署、组合和使用。服务层是SOA的基础,能够直接被应用调用,从而有效控制系统中与软件代理交互的人为依赖性。数据库
SOA是一种粗粒度、松耦合服务架构,服务之间经过简单、精肯定义接口进行通信,不涉及底层编程接口和通信模型。SOA能够看做是B/S模型、XML语言的子集)/Web Service技术以后的天然延伸。编程
SOA将可以帮助软件工程师们站在一个新的高度理解企业级架构中的各类组件的开发、部署形式,它将帮助企业系统架构者以更迅速、更可靠、更具重用性架构整个业务系统。较之以往,以SOA架构的系统可以更加从容地面对业务的急剧变化。安全
Soa系统是一种企业通用性架构。网络
这种具备中立的接口定义(没有强制绑定到特定的实现上)的特征称为服务之间的松耦合。松耦合系统的好处有两点,一点是它的灵活性,另外一点是,当组成整个应用程序的每一个服务的内部结构和实现逐渐地发生改变时,它可以继续存在。与之相反,紧耦合意味着应用程序的不一样组件之间的接口与其功能和结构是紧密相连的,于是当须要对部分或整个应用程序进行某种形式的更改时,它们就显得很是脆弱。架构
对松耦合的系统的须要来源于业务应用程序须要根据业务的须要变得更加灵活,以适应不断变化的环境,好比常常改变的政策、业务级别、业务重点、合做伙伴关系、行业地位以及其余与业务有关的因素,这些因素甚至会影响业务的性质。咱们称可以灵活地适应环境变化的业务为按需(On demand)业务,在按需业务中,一旦须要,就能够对完成或执行任务的方式进行必要的更改。分布式
虽然面向服务的体系结构不是一个新鲜事物,但它倒是更传统的面向对象的模型的替代模型,面向对象的模型是紧耦合的,已经存在二十多年了。虽然基于 SOA 的系统并不排除使用面向对象的设计来构建单个服务,可是其总体设计倒是面向服务的。因为它考虑到了系统内的对象,因此虽然 SOA 是基于对象的,可是做为一个总体,它却不是面向对象的。不一样之处在于接口自己。SOA 系统原型的一个典型例子是通用对象请求体系结构(Common Object Request Broker Architecture,CORBA),它已经出现很长时间了,其定义的概念与 SOA 类似。设计
然而, SOA 已经有所不一样了,由于它依赖于一些更新的进展,这些进展是以可扩展标记语言(eXtensible Markup Language,XML)为基础的。经过使用基于XML 的语言(称为 Web 服务描述语言(Web Services Definition Language,WSDL))来描述接口,服务已经转到更动态且更灵活的接口系统中,非之前 CORBA 中的接口描述语言(Interface Definition Language,IDL)可比了。代理
Web 服务并非实现 SOA 的唯一方式。前面刚讲的 CORBA 是另外一种方式,这样就有了面向消息的中间件(Message-Oriented Middleware)系统,好比 IBM 的 MQseries。可是为了创建体系结构模型,您所须要的并不仅是服务描述。您须要定义整个应用程序如何在服务之间执行其工做流。您尤为须要找到业务的操做和业务中所使用的软件的操做之间的转换点。所以,SOA 应该可以将业务的商业流程与它们的技术流程联系起来,而且映射这二者之间的关系。例如,给供应商付款的操做是商业流程,而更新您的零件数据库,以包括进新供应的货物倒是技术流程。于是,工做流还能够在 SOA 的设计中扮演重要的角色。中间件
此外,动态业务的工做流不只能够包括部门之间的操做,甚至还能够包括与不为您控制的外部合做伙伴进行的操做。所以,为了提升效率,您须要定义应该如何得知服务之间的关系的策略,这种策略经常采用服务级协定和操做策略的形式。对象
最后,全部这些都必须处于一个信任和可靠的环境之中,以同预期的同样根据约定的条款来执行流程。所以,安全、信任和可靠的消息传递应该在任何 SOA 中都起着重要的做用。