面向服务的体系结构是一个组件模型,它将应用程序的不一样功能单元(称为服务)经过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操做系统和编程语言。这使得构建在各类各样的系统中的服务可使用一种统一和通用的方式进行交互。编程
SOA是一种粗粒度、松耦合服务架构,服务之间经过简单、精肯定义接口进行通信,不涉及底层编程接口和通信模型。SOA能够看做是B/S模型、XML(标准通用标记语言的子集)/Web Service技术以后的天然延伸。架构
对松耦合的系统的须要来源于业务应用程序须要根据业务的须要变得更加灵活,以适应不断变化的环境,好比常常改变的政策、业务级别、业务重点、合做伙伴关系、行业地位以及其余与业务有关的因素,这些因素甚至会影响业务的性质。咱们称可以灵活地适应环境变化的业务为按需(On demand)业务,在按需业务中,一旦须要,就能够对完成或执行任务的方式进行必要的更改。编程语言
虽然面向服务的体系结构不是一个新鲜事物,但它倒是更传统的面向对象的模型的替代模型,面向对象的模型是紧耦合的,已经存在二十多年了。虽然基于 SOA 的系统并不排除使用面向对象的设计来构建单个服务,可是其总体设计倒是面向服务的。因为它考虑到了系统内的对象,因此虽然 SOA 是基于对象的,可是做为一个总体,它却不是面向对象的。不一样之处在于接口自己。SOA 系统原型的一个典型例子是通用对象请求代理体系结构(Common Object Request Broker Architecture,CORBA),它已经出现很长时间了,其定义的概念与 SOA 类似。spa
然而, SOA 已经有所不一样了,由于它依赖于一些更新的进展,这些进展是以可扩展标记语言(eXtensible Markup Language,XML)为基础的。经过使用基于XML(标准通用标记语言的子集) 的语言(称为 Web 服务描述语言(Web Services Definition Language,WSDL))来描述接口,服务已经转到更动态且更灵活的接口系统中,非之前 CORBA 中的接口描述语言(Interface Definition Language,IDL)可比了操作系统
SOA 模型的好处是它从业务操做和流程的角度考虑问题而不是从应用程序和程序的角度考虑问题,这使得业务管理能够根据业务的操做清楚地肯定什么须要添加、修改或删除。而后能够将软件系统构造为适合业务处理的方式,而不是在许多现有的软件平台上经常看到的其余方式。设计