SOA概念是源自当前已有的技术,但又高于技术本身,因为其是架构问题,SOA 有助于实现更多的资产重用、更轻松的管理和更快的开发与部署。在当今的业务环境中,变化是毫无疑问的,因此快速响应客户需求、市场机遇和外部威胁的敏捷性比以往任何时候都更显重要。SOA正利用自身的优势快速适应时代变化
什么是SOA ?
越来越多的客户在问,如何通过采取财务上无可非议的渐进步骤,打造当今随需应变业务环境所需的敏捷 IT 基础设施,从而提高业务流程的灵活性。通过采用面向服务架构(SOA),公司具备实现业务灵活性所需的技能、软件和经验。
SOA(Service-Oriented Architecture)既服务导向架构,是指为了解决在inernet环境下业务集成的需要,通过连接能完成特定任务的独立功能实现的一种软件系统架构。该定义的学术味道较浓,但其核心思想并不难理解:让应用不受限于技术,让企业轻松应对商业服务变化和发展的需要。目前,SOA的实现手段主要包括:Web Serice(网络服务)、CORBA和JINI等。
Gartner Group曾经说到2008年,SOA将成为占有绝对优势的软件工程实践方法,它将很可能结束传统的整体软件体系架构长达40年的统治地位,届时将有70%的企业在进行IT建设时会转向SOA。因此Gartner建议,主流企业现在就应该在理解和应用SOA开发技能方面进行投资,但实际情况又如何呢?到目前为止,绝大部分企业客户还处于计划或早期实施阶段,它们仍在等待从厂商那里获得更多的Web服务工具和平台。
SOA用途
对 SOA 的需要来源于需要使业务 IT 系统变得更加灵活,以适应业务中的改变。通过允许强定义的关系和依然灵活的特定实现,IT 系统既可以利用现有系统的功能,又可以准备在以后做一些改变来满足它们之间交互的需要。
改变和 SOA 系统适应改变的能力是最重要的部分。对于开发人员来说,这样的改变无论是在他们工作的范围之内还是在他们工作的范围之外都有可能发生,这取决于是否有改变需要知道接口是如何定义的以及它们相互之间如何进行交互。与开发人员不同的是,架构师的作用就是引起对 SOA 模型大的改变。这种分工,就是让开发人员集中精力于创建作为服务定义的功能单元,而让架构师和建模人员集中精力于如何将这些单元适当地组织在一起。
SOA的意义
它是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种这样的系统中的服务可以以一种统一和通用的方式进行交互。SOA在本质上就是一个面向服务的架构,是一个基础。如果是在设计一个系统的时候,就把这个思路理念放在这里面,那么,所设计的东西不是说为了写这块程序而写这块程序,而是以应用出发点来考虑这个问题。
对于一个公司来说,采用了SOA架构,使得流程得到简化,使得公司的业务流程更灵活了。灵活化之后,就会有新的业务要发展。而SOA可以很快把一些服务重新拼组,形成一个流程,然后来实现它的业务的转型。
SOA,它的意义在于什么呢?就是在于它最终把业务流程通过服务器很好地连接在一起,当业务流程、模式有了变化的时候,可以通过IT迅速加以实现。借助SOA架构,就是要产生差异化竞争的优势,使得企业高速成长。
回过头来看过去的20多年,我们大致分成这么两个阶段,前十年的时候,业务层面上做的主要是业务流程再造的工作,IT与之相对应的就是在企业里面普及ERP为代表的各种各样广泛的企业级各种IT的应用。那个时候主要目标是提高效率降低成本。从新世纪开始这十年,从业务上讲是一个像业务网络的变革,与之相对应的技术就是我们叫做企业级的面向服务的架构。什么是业务网络呢?即强调企业不再是一个单独的一家企业,而是要与它的合作伙伴、供应商、客户,甚至在某种情况下与他的竞争对手形成一个有机的生态链,怎么样在这个生态环境当中使自己处在最有利的地位,使之成功。IT大的战略就是企业级的面向SOA的架构,因为一个企业无论是通过外包,或者是通过改善业务流程,目的都是要提高企业网络的效率,同时也涉及到使企业业务的价值网之间如何创新,而SOA正是为此提供了一个非常好的架构。
真正SOA的价值最终是体现在企业级应用层次上的,SOA最终的一个理想是能够把一个业务流程有机地、迅速地转变为一些IT的模块,通过这些服务模块来实现企业特定的SOA。当企业发生变化的时候,相应的IT也可以很快的配合上来,这是SOA真正最价值的地方。
SOA综述
SOA是传统的面向对象架构模型的替代模型,面向对象的模型是紧耦合的,已经存在二十多年了。虽然基于 SOA 的系统并不排除使用面向对象的设计来构建单个服务,但是其整体设计却是面向服务的。由于它考虑到了系统内的对象,所以虽然 SOA 是基于对象的,但是作为一个整体,它却不是面向对象的。不同之处在于接口本身。SOA 系统原型的一个典型例子是通用对象请求代理体系结构(Common Object Request Broker Architecture,CORBA),它已经出现很长时间了,其定义的概念与 SOA 相似。从不同的角度看,SOA有不同的定义。积极推进SOA的国际标准组织之一OASIS(结构信息标准化促进组织)给出的定义是:“组织和利用分布式功能,使之能位于不同所有权域控制之下的一种方法。”实际采用SOA的一个例子是某日本公司的后勤部门从由中国外包制造合作伙伴托管的应用访问SOA服务,以获得向印度客户发出的某产品的最新信息。
实际上,SOA并不是一个全新的概念。很长一段时间以来,IT部门一直都试图将各种企业应用集成在一起。EAI(企业应用集成)和B2B商务集成拥有同样的目标。多数情况下,以前的应用都是专有的,实施的是紧密耦合的应用集成。在快速发展的当今世界里,这种集成通常不够灵活和便捷。
Web逐渐成为在线通信标准之后,SOA取得了很大的突破,使企业可以利用广为部署的标准协议,包括简单对象访问协议(SOAP)的Web服务标准,通用说明、识别和集成(UDDI)以及Web服务说明语言(WSDL),实现不同软件应用之间的互操作性。SOA的最终目标是,无论设备的物理位置在哪里,无论使用的是哪种初始编程语言、操作系统或网络,都能够以按需“服务”的方式,为处于全球任何地方的任何其它应用提供支持Web服务的软件功能。
这种模式的最大优点是,由于几乎所有应用都能通过标准消息格式访问应用功能,因此,SOA能够提升业务价值,提高IT效率。