SOA,它是一个面向服务的体系结构,是一个组件模型,它将应用程序的不一样功能单元(称为服务)经过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操做系统和编程语言,这使得构建在各类这样的系统中的服务能够以一种统一和通用的方式进行交互。它可以帮助软件工程师们站在一个新的高度理解企业级架构中的各类组件的开发、部署形式,能帮助企业系统架构者以更迅速、更可靠、更具重用性架构整个业务系统。较之以往,以SOA架构的系统可以更加从容地面对业务的急剧变化。数据库
服务导向架构并非一种全新的解决方案;相反,SOA是技术与架构的天然进化。系统架构一直在不断进步,与商业保持高度一致。系统设计师与商家很早就认识到将技术与商业流程相协调的重要性,包括充分应用并合理化技术资源,以及为商业提供更好的支持。SOA也在必定程度上源于早已有之的企业架构理论。企业架构对技术进行评估,可是更重要的是,它关注整个企业和所有的商业流程并提供了作出技术决策的背景信息。SOA工具则融合了互联网技术,如HTTP和XML,以及综合技术,如消息总线、转译技术和链接技术。编程
SOA的核心主体是服务,所谓服务,从业务角度而言,便是一个可重复的通过标准,服务就像一堆“元器件”,这些元器件经过封装造成标准服务,他们有相同的接口和语义表达规则。但服务要组装成一个流程和应用,还须要有效的“管理”,包括如何注册服务、如何发现服务、如何包装服务的安全性和可靠性,这些就是SOA治理。SOA治理乃是将SOA这一堆元器件,进行有效组装,造成一个“产品”的关键,不然它永远是一堆器件,而没法造成一个有机总体。安全
基于服务的应用系统的本质特征是松耦合,以基本业务功能(服务封装)为系统的基本实现单元,而后经过服务编排(流程管理)来“组装”业务应用系统。松耦合系统的好处有两点,一点是它的灵活性,另外一点是,当组成整个应用程序的每一个服务的内部结构和实现逐渐地发生改变时,它可以继续存在。相对于以往的应用系统,是面向技术组件,由系统程序实现业务流程,在复用、耦合方面都存在灵活性问题。架构
SOA依赖于一些更新的进展,这些进展是以可扩展标记语言为基础的。经过使用基于XML的语言来描述接口,服务已经转到更动态且更灵活的接口系统中。Web服务并非实现SOA的唯一方式。通用对象请求代理体系结构是另一种形式,这样就有了面向消息的中间件系统,好比IBM的MQseries。可是为了创建体系结构模型,所须要的并不仅是服务描述。须要定义整个应用程序如何在服务之间执行其工做流。尤为须要找到业务的操做和业务中所使用的软件的操做之间的转换点。所以SOA应该可以将业务的商业流程与它们的技术流程联系起来,而且映射这二者之间的关系。例如,给供应商付款的操做是商业流程,而更新您的零件数据库,以包括进新供应的货物倒是技术流程。于是,工做流还能够在SOA的设计中扮演重要的角色。全部的这些都必须处于一个信任和可靠的环境之中,以同预期的同样根据约定的条款来执行流程。所以,安全、信任和可靠的消息传递应该在任何SOA中都起着重要的做用。编程语言
SOA的实施具备几个鲜明的基本特征:可从企业外部访问,随时可用,粗粒度的服务接口分级,松散耦合,可重用的服务,服务接口设计管理,标准化的服务接口,支持各类消息模式,精肯定义的服务契约。这些基本特征保证了SOA的有效实施,使SOA服务区别于其余。SOA的出现给传统的信息化产业带来新的概念,再也不是各自独立的架构形式,可以轻松的互相联系组合共享信息。可复用以往的信息化软件。基于SOA的协同软件提供了应用集成功能,可以将ERP、CRM、HR等异构系统的数据集成。松散耦合方式,只要充分了解业务的进程,就能够不用编写一行代码,经过流程图实现一套咱们本身的信息系统。就像已经给你准备好了砖瓦和水泥,只须要想好盖什么样的房子就能够轻松的盖起。加快开发速度,而且减小了开发和维护的费用。软件将全部的管理提炼成表单和流程,以记录管理的内容,指定过程的流转方向。更简便的信息和数据集成。信息集成功能能够将散落在广域网和局域网上的文档、目录、网页轻松集成,增强了信息的协同相关性。同时,复杂、成本高昂的数据集成,也变成了能够简单且低成本实现的参数设定。建立了彻底集成的信息化应用新领域。分布式
SOA架构具备三大特色:(1)系统集成:站在系统的角度,解决企业系统间的通讯问 题,把原先散乱、无规划的系统间的网状结构,梳理成规整、可治理的系统间星形结构,这一步每每须要引入一些产品,好比ESB、以及技术规范、服务管理规范;这一步解决的核心问题是有序。(2)系统的服务化:站在功能的角度,把业务逻辑抽象成可复用、可组装的服务,经过服务的编排实现业务的快速再生,目的:把原先固有的业务功能转变为通用的业务服务,实现业务逻辑的快速复用;这一步解决的核心问题是复用。(3)业务的服务化:站在企业的角度,把企业职能抽象成可复用、可组装的服务;把原先职能化的企业架构转变为服务化的企业架构,进一步提高企业的对外服务能力;“前面两步都是从技术层面来解决系统调用、系统功能复用的问题”。第三步,则是以业务驱动把一个业务单元封装成一项服务。这一步解决的核心问题是高效。工具
SOA的目标在于让IT系统变得更有弹性,以便更灵活、更快地响应不断改变的企业业务需求,解决软件领域一直以来存在的“如何重用软件功能”问题。其5大基本特征为软件功能重用提供了解决的办法。①服务之间经过简单、精肯定义的接口进行通讯,不涉及底层编程接口和通讯模型;②粗粒度性:粗粒度服务提供一项特定的业务功能,采用粗粒度服务接口的优势在于使用者和服务层之间没必要再进行屡次的往复,一次往复就足够了;③松耦合性:松耦合性要求SOA架构中的不一样服务之间应该保持一种松耦合 的关系,也就是应该保持一种相对独立无依赖的关系。这样的好处有两点,首先是具备灵活性,其次当组成整个应用程序的服务内部结构和实现逐步地发生变化时,系统能够继续地独立存在。而紧耦合意味着应用程序的不一样组件之间的接口与其功能和结构是紧密相连的,于是当须要对部分或整个应用程序进行某种形式的更改时 这种结构就显得很是脆弱;④位置透明性:位置透明性要求SOA系统中的全部服务对于其调用者来讲都是位置透明的,也就是说,每一个服务的调用者只须要知道想要调用的是哪个服务,但并不须要知道所调用服务的物理位置在哪;⑤协议无关性:协议无关性要求每个服务均可以经过不一样的协议来调用。spa
为了实现SOA,须要一个明确的服务架构,服务消费者能够经过发送消息来调用服务。这些消息由一个服务总线转换后发送给适当的服务实现。这种服务架构能够提供一个业务规则引擎,该引擎允许业务规则被合并在一个服务里或多个服务里。这种架构也提供了一个服务管理基础,用来管理服务,相似审核,列表,日志等功能。此外,该架构给企业提供了灵活的业务流程,更好地处理控制请求,例如Sarbanes Oxley,而且能够在不影响其余服务的状况下更改某项服务。操作系统
要运行管理SOA应用程序,企业须要SOA基础,这是SOA平台的一个部分。SOA基础必须支持全部的相关标准,和须要的运行时容器。WSDL,UDDI和SOAP是SOA基础的基础部件。WSDL用来描述服务;UDDI用来注册和查找服务;而SOAP,做为传输层,用来在消费者和服务提供者之间传送消息。SOAP是Web服务的默认机制,其余的技术为能够服务实现其余类型的绑定。一个消费者能够在UDDI注册表查找服务,取得服务的WSDL描述,而后经过SOAP来调用服务。设计
在具体的功能实现上,SOA协同软件所实现的功能包括了知识管理、流程管理、人事管理、客户管理、项目管理、应用集成等,从部门角度看涉及了行政、后勤、营销、物流、生产等。从应用思想上看,SOA协同软件中的信息管理功能,全面兼顾了贯穿整个企业组织的信息化软硬件投入。尽管各类IT技术能够用于不一样的用途,可是信息管理并无任意地将信息分为结构化或者非结构化的部分,所以ERP等结构化管理系统并非信息化建设的所有;同时,信息管理也没有将信息化解决方案划分为部门的视图,所以仅仅以部分为界限去构建软件应用功能的思想未必是不可撼动的。基于SOA的协同软件与 ERP、CRM等传统应用软件相比,关键的不一样在于它能够在合适的时间、合适的地点而且有正当理由向须要它提供服务的任何用户提供服务。
SOA的概念并不是什么新东西,SOA不一样于现有的分布式技术之处在于大多数软件商接受它并有能够实现SOA的平台或应用程序。SOA伴随着无处不在的标准,为企业的现有资产或投资带来了更好的重用性。SOA可以在最新的和现有的应用之上建立应用;SOA可以使客户或服务消费者免予服务实现的改变所带来的影响;SOA可以升级单个服务或服务消费者而无需重写整个应用,也无需保留已经再也不适用于新需求的现有系统。总而言之,SOA以借助现有的应用来组合产生新服务的敏捷方式,提供给企业更好的灵活性来构建应用程序和业务流程。采用SOA来构建信息平台,无疑是将来的发展方向。