服务计算概论
第⼀章绪论
§1. ⾯向服务计算概述
1.1 服务计算起因和概念
随着经济全球化和电⼦商务的普及,当代企业必须要⾯对不断变化的市场条件、激烈的竞争压⼒、新出台的法规以及新的竞争威胁,从⽽企业要获得竞争优势就要不断调整其业务模式和需求。因此,企业应⽤要能需要根据业务的需要变得更加灵活,能够对业务模式和业务需求的变化迅速做出反应,具有“随需⽽变”的敏捷性。这种敏捷性体现在新的业务可以通过组合现有的服务快速构造出来,业务的调整也可以通过调整服务之间的关系迅速改变。这种应⽤集成既包括企业内的各种应⽤系统之间的集成,也包括集团企业总部与下属企业、企业与上下游伙伴之间的业务协同。
但是,构建“随需⽽变”的应⽤。⾯对怎么样的环境呢?
随需应变的软件应⽤需要考虑三个因素:重⽤、标准化封装和松耦合组装。重⽤不仅可以被其它服务或使⽤者调⽤,⽽且可以与其它服务⼀起组合成新的服务;标准化封装通过提供统⼀的描述标准,消除软件对语⾔、平台和⼚家的依赖;松耦合组装利⽤松耦合的组件构造灵活可变的企业应⽤。
但是,若实现企业应⽤的快速调整和构造,传统的分布式计算技术存在两⼤难题:⼀是应⽤程序客户端和服务端之间的紧密耦合问题,以微软的DCOM为例,客户端和服务器端都要求遵循同样的API,⼀旦⼀个COM对象代码有改变,那么访问该对象的客户端代码也需要相应的更改。⼆是不同应⽤程序之间的异构问题。由于企业应⽤严重依赖计算环境,从⽽使得同⼀企业不同应⽤之间,不同企业应⽤之间还不能有效地相互集成。总之,传统架构存在的最⼤缺陷就是对变化的适应性差,难以适应企业不断变化的业务需求。构造灵活可变的企业应⽤系统必须通过建⽴松耦合的计算环境来实现。计算环境包含⼀组计算机、软件平台、协议和相互连通的⽹络。在该计算环境中,计算机之间、软件平台之间可以通过⽹络按照协议实现数据交换和信息处理。
采⽤标准化的服务描述将企业应⽤进⾏封装,通过以编程⽅式实现的⾃描述接⼝,提供服务的核⼼功能,屏蔽了应⽤的实现细节,这样可以通过服务描述访问服务构造企业应⽤。形象地说就是将软件封装成类似于硬件模块带接⼝的构件,在接⼝匹配的情况下可以随时“插⼊”特定的软件应⽤完成相应的功能,使服务之间(企业内或跨企业)以松散耦合的形式互联、互操作完成特定的业务需求。基于服务概念的资源封装和抽象逐渐成为资源发布、共享和应⽤协同的重要技术基础。这样,剥离了客户端和服务器端之间的语⾔/平台依赖,消除了不同应⽤之间由于采⽤的不同系统、不同平台和不同语⾔所造成的异构。在接⼝描述不变的情况下,服务实现的任意变更都不会对应⽤产⽣影响。这样,⼀⽅⾯可以将遗留系统封装为服务进⾏重⽤,⼀⽅⾯可以直接调⽤企业外服务提供商提供的服务,从⽽可使开
发者更快速、敏捷地根据企业业务的变化,构造企业应⽤。⾯向服务计算(SOC)是⼀种新的计算范式,它利⽤服务为基本构建块,⽀持异构环境下分布式应⽤的快速、低成本、便捷的组合。这种⽅法的基本思想是通过重⽤已有的⽹络服务⽽不是重新开发来构造企业应⽤。重⽤和组装是这个⽅法的核⼼,松散耦合是这个⽅法的本质。重⽤就是使应⽤系统具有较强的独⽴性,以便其作为⼀个“零部件”能随时被单独使⽤;组装就是⾼效⽽灵活地将跨组织、跨平台的应⽤⽆缝地进⾏组合来构造满⾜企业需求的应⽤。松散耦合的⽬标是使应⽤系统之间的依赖达到最⼩,任何应⽤系统的更改和错误对其他的应⽤系统没有影响。服务是⾃治的,与平台⽆关的计算实体。服务是可描述,可发布、可发现的、可以动态组装成分布式的、可交互的、可扩展的系统,服务可以包括从执⾏简单的请求到复杂的业务流程,该流程要求不同多种层的服务消费者和供应商之间点对点之间的关系。部署在⼀个系统中的任何⼀段代码和任何应⽤组件都可以重⽤,并且可以转化为⽹络服务。
实现这⼀思想的关键是⾯向服务架构,SOA是⼀种合乎逻辑的设计软件系统的⽅式,通过已发布的或可发现的接⼝将服务提供给终端⽤户或者分布在⽹络上的服务。⼀个结构良好、基于标准SOA通过以服务的形式提供独⽴的、可重⽤的应⽤功能和更加健壮的基础,可以赋予企业更加灵活的基础设施和处理环境。Web服务是当今最有前途的⾯向服务计算技术,Web服务利⽤互联⽹作为传输媒介、利⽤开放的基于因特⽹的标准,如简单对象访问协议SOAP 作为传输数据、Web服务描述语⾔WSDL⽤于服务定义、业务流程执⾏语⾔BPEL编排服务。Web 服务解决了以往分布式计算平台的两⼤难题:⼀
个是平台之间的互操作问题;另⼀个是客户端和服务端之间的紧密耦合问题。它提供⼀个与操作系统⽆关、与程序设计语⾔⽆关、与机器类型⽆关、与运⾏环境⽆关的平台,实现⽹络上应⽤的共享。
服务技术是由作为⼀个整体的现代社会⽽形成的,特别是动态业务、医疗、教育和政府服务等关键领域,同时也将不断推动作为⼀个整体的社会的形成。通过封装和重⽤业务的核⼼功能、增强灵活性、提⾼技术迁移的适应性、改善操作效率,应⽤服务技术降低了复杂性和成本。由于这些原因,⾯向服务的范型可望得到迅速地应⽤,由于它解决昂贵的、难以解决的业务和技术问题,将⽐以往的任何应⽤技术更具有前途。
Services technologies are being shaped by, and increasingly will help shape, modern society as a whole, especially in vital areas such as dynamic business, health, education and government services. Applying services technologies leads to reduced complexity and costs, exposing and reusing core business functionality, increased flexibility, resilience to technology shifts and improving operational efficiency. For all these reasons, it is expected that the Service Oriented Computing paradigm will exhibit a steeper adoption curve, as it solves expensive and intractable business and technology problems, and will infiltrate more of the applications portfolio, than previous application technologies.
SOC包括服务基本原理、服务组合、服务管理和监控以及⾯向服务的⼯程。
§2. 服务计算产⽣的背景
服务计算给软件体系架构以及软件开发⽅法带了⾰命性的变化,软件体系架构从早期集中式的整体软件体系结构逐步发展成为⼀种松散、灵活、易扩展的分布式软件架构模式,服务体现了⾯向服务的编程⽅法,这种⽅法改变了传统的重新开发的软件设计理念和⽅法,通过重⽤已有的⽹络服务构造应⽤的设计思想。不难看出,服务计算是软件体系架构和软件开发⽅法不断演化的产物,也是进⼀步提⾼和加快软件产业发展的必然结果。
2.1 软件体系架构的发展历程
软件体系架构是指构成软件系统的软件元素、软件元素外部可见的属性以及这些软件元素之间的关系。为便于说明问题,⾸先介绍软件系统的分层逻辑结构。⼀般⽽⾔,构造软件时都会遇到三类问题:⑴如何将软件功能以图形或字符⼈机界⾯的形式呈现给⽤户;⑵如何编写实际的应⽤逻辑实现软件功能;⑶如果利⽤已有资源如数据库、⽂件系统等完成对资源的管理和操作。基于以上分析,软件体系架构从逻辑上可以分为三层,即表⽰层、应⽤逻辑层和资源管理层
1.主机计算环境。其软件体系架构的特点是,软件的所有功能集中由主机完成,⽽分布的是仅仅具有输⼊输出功能的哑终端或多⼈分时使⽤⼀台计算机。其优点是其所有功能都在⼀致的系统环境下实现,因此可⽅便地对系统进⾏调试。其缺点是组成系统的表⽰层、应⽤逻辑层和资源管理层之间彼此
紧密耦合、很难维护和扩展;各个主机之间的数据、功能很难共享和相互调⽤。
2.客户/服务器计算环境。通过局域⽹相互连接的计算设备构成客户/服务器计算环境,这种体系架构将表⽰层从集中式的服务器中剥离出来转移给客户端,客户和服务器通过⽹络协
议、远程调⽤或消息等⽅式来相互协作,完成计算。其主要优点是将表⽰层和其他两层功能分离,降低了对服务器的性能要求,⽀持跨平台系统开发,还可以根据需要个性化地设计和实现表⽰层的样式。主要缺点是客户端和服务器端之间紧密耦合,⼀般⼀个特定的客户端只能连接到⼀台服务器,容易造成“信息孤岛”;另外维护代价⾼,⼀旦应⽤环境发⽣变化需要改变业务逻辑时,每个客户端程序都要进⾏更新。
3.多层分布式计算环境。为了满⾜更⾼的可伸缩性需求,C/S计算环境派⽣出多层软件架构,在C/S架构基础上进⼀步将服务器端的应⽤逻辑层和资源管理层分离,把应⽤逻辑交给单独应⽤服务器处理。其中,表⽰层被⼀分为⼆,通⽤功能由标准应⽤软件承担、⽽⾮通⽤功能由特定的分布式计算平台实现,浏览器和应⽤服务器上的表⽰层之间通过标准⽂档形式的规范HTML 对话;应⽤逻辑层和资源管理层之间通过标准数据访问协议(JDBC/ODBC)对话。其主要优点是浏览器和应⽤服务器之间、应⽤服务器和资源管理器之间是松耦合关系。但是,表⽰层和应⽤逻辑层之间是紧耦合的,两者之间在技术平台上耦合紧密。当表⽰层想访问不同平台如J2EE和DCOM上的应⽤逻辑时,不得不加⼊额外的接⼝适配器代码。
4、⾯向服务的计算环境。也就是基于标准、开放的互联⽹技术,以服务为中⼼的计算环境。这是⼀个以服务为基本单位和抽象⼿段的世界。随着互联⽹(Internet)的发展,开放和标准的⽹络协议被普遍⽀持,所有底层计算平台都开始⽀持这些标准和协议,这导致⼀个计算环境内部和各个计算环境之间交互的藩篱被打破。其软件架构的特点是将应⽤逻辑层封装为Web服务,这样表⽰层就可以通过XML/SOAP协议与其实现松耦合交互,从⽽解决表⽰层和应⽤逻辑层紧密耦合的问题,保证了通⽤性和最⼤的交互能⼒,这使得计算环境发展到⼀个全新的阶段—基于标准、开放的互联⽹技术的计算环境。在这样的计算环境中,各个部分可以采⽤异构的底层技术,它们使⽤XML来描述和表⽰⾃⼰的数据和功能,采⽤开放的⽹络协议(如HTTP)来握⼿,在此之上,基于Web服务来互操作和交换数据。在这⾥,⼀个很重要的新概念是"服务" ,它是⼀个⾃包含的功能,使⽤者通过明确定义的接⼝(契约)来与⼀个服务交互,这个接⼝的描述基于WSDL(Web Service Description Language)这样的开放标准。Web服务是实现服务的技术⼿段,就如同各种编程语⾔中的对象是实现对象的技术⼿段,J2EE中的EJB是实现组件的技术⼿段⼀样。
2.2软件编程范型的演变过程
软件系统的规模越⼤,复杂程度也就越⾼,驱动软件技术不断向前发展的核⼼动因之⼀是复杂性控制。复⽤是控制软件复杂度的有效机制,下⾯从软件复⽤⾓度阐述阐述每种编程范型的特点。编程范型经历四个阶段,即⾯向过程的编程、⾯向对象的编程、⾯向组件的编程以及标准化的Web 服务的编
程。简⾔之,范型就是某⼀学科在⼀定时期内开展研究活动共有的基础和准则。编程范型是指导和制约编程活动的范型。
1.⾯向过程的编程。是指⽤程序状态和改变程序状态的语句描述计算的编程范型。⾯向过程的语⾔提供⼀种通过过程抽象控制复杂性的⽅法,从⽽⽀持更⼤规模软件的开发,同时过程也提供⼀种基本的代码复⽤机制。但是该范型的主要缺点是:这种复⽤范围是⼀个可执⾏程序内复⽤,静态开发期复⽤,如果修改了过程,意味着所有调⽤这个过程的系统必须重新编译、测试和发布。
2.⾯向对象的编程。是指⽤封装了数据和对数据操作的对象以及对象之间的消息传递描述计算的编程范型。⾯向对象的认识论是将系统看成由多个对象组成,通过对象之间的通信形成了系统⾯向对象系统中功能。其主要特征是:(1)封装性 (2) 继承性, (3)多态性。复⽤的两种最常⽤技术是封装性和类继承,封装机制实现了数据抽象和信息隐蔽,通过⽣成实例后通过对象组合组装成系统;继承机制提供了代码的复⽤。但是这两种复⽤机制都存在缺点:继承机制导致⼦类和⽗类之间的紧耦合关系,同时对象很难共享,更谈不上分布式计算环境下复⽤。其根本原因在于认知体系上的不完整,对象的理解不同, 难以形成统⼀的标准和开
发规范,由此基于⾯向对象的构件软件应运⽽⽣。
3.⾯向组件的编程。⾯向组件的编程是指以构件的创建、构件的管理以及复⽤已有的构件组装形成应
⽤为基本活动的编程范型。构件是模块化、可部署、可替换的软件系统组成部分,它封装了内部的具体实现并对外提供⼀组接⼝。⽐如Spring框架中,就采⽤了⾯向组件的思路,将系统看作⼀个个的组件,通过定义组件之间的协作关系(通过服务)来完成系统的构建。这样做的好处是能够隔离变化,合理的划分系统。⽽框架的意义就在于定义⼀个组织组件的⽅式。
基于构件编程范型的特点是:基于构件范型涉及三类基本活动:构件⽣产、构件的管理和应⽤组装(基于构件的应⽤开发)。构件⽣产者采⽤领域⼯程⽅法通过对领域的分析和设计总结形成可复⽤的领域构件。构件管理者根据⼀定的分类指标和特征管理构件,以⽅便构件的发布和发现。构件复⽤者负责进⾏基于构件的软件开发、包括构件的查询、构件理解、构件组装以及系统演化等。
分布式组件技术屏蔽了⽹络硬件平台的差异性和操作系统与⽹络协议的异构性,实现企业⽹络内复⽤,不同系统之间复⽤。但是,分布式组件也是严重依赖其计算环境,各种分布式组件技术在构件实现和运⾏⽀撑技术缺乏统⼀标准,在组件描述、发布、发现、调⽤、互操作协议及数据传输等⽅⾯呈现出异构性,从⽽导致不同技术设计和实现的构件之间⽆法直接组装式复⽤如J2EE和DCOM⽆法互相调⽤。J2EE(EJB)、CORBA和DCOM是⽐较典型的三种分布式组件。基于构件编程范型的优点是解决分布式⽹络计算环境之间的组件复⽤,通过远程对象代理,来实现企业⽹络内复⽤,不同系统之间复⽤。
4.⾯向服务的编程。前已经叙及,不同组件技术没有统⼀的标准,不同⼚家之间的组件很难实现互操作,最终导致了跨企业/部门的业务集成和重组难以灵活快速的进⾏。为彻底解决互操作问题,通过标准化的封装技术如Web服务,SCA/SDO等,来实现更⾼层次的复⽤和互操作。服务是通过标准封装,服务组件之间的组装、编排和重组来实现服务的复⽤。⽽且这种复⽤,可以在不同企业之间,全球复⽤,达到复⽤的最⾼级别,并且是动态可配置的复⽤。⾯向服务的编程是指以服务的创建、服务的管理以及复⽤已有的服务组装形成应⽤为基本活动的编程范型。服务是⾃治、开放、⾃描述、与实现⽆关的⽹络构件。⾯向服务的编程范型采⽤标准化的传输协议SOAP、描述协议WSDL,使软件构件的复⽤扩⼤到整个互联⽹,可使不同分布式平台技术(不同⼚商)实现的Web服务之间可以相互调⽤。如J2EE所提供的Web服务可以被.NET来调⽤。反过来,.NET也可以调⽤J2EE所提供的Web服务。Web服务的SOAP传输协议尽管是⼀种标准的传输协议,但是它毕竟还是⼀种特殊的传输协议,⼀种特定的技术。Web服务并不⽀持其他的传输协议,如RMI等。所以说服务还是和特定的SOAP 技术绑定在⼀起的。
⾯向服务编程范型的基本活动和基于组件编程范型基本上是⼀致的,不同是编程的基本组件变成了服务。
从技术实现和运⾏模式⾓度,Web 应⽤服务器分为脚本模式、⾯向对象模式和对象模式。脚本模式应⽤服务器通过脚本以超⽂本⽅式描述动态页⾯的内容和处理逻辑,当接受到客户请求时,应⽤服务器
⾸先搜索相应的源⽂件,然后在服务器端解释该源⽂件中的脚本,最后将脚本解释器产⽣的结果汇编后返回给Web 应⽤服务器(是否是客户端?)脚本模式Web 应⽤服务器⼀般都通过扩展接⼝(如CGI和ISAIP)或服务器端脚本语⾔(如果JSP、ASP 和PHP)动态地⽣成响应页⾯,但是这种模式的应⽤服务器可扩展性、⾼可⽤性差,可重⽤性低。此外,该种模式缺乏集成历史遗留系统以及事物处理的⽀持能⼒。
⾯向对象模式介于脚本模式和对象模式之间,其主要特点是使⽤⾯向对象编写脚本。例如,在JSP和Servlets中使⽤Java语⾔进⾏编码。与纯脚本模式相⽐,该模式可重⽤性较好,但是没有相应的规范,不提供统⼀的接⼝规范,其使⽤范围和移植性受到了限制。
对象模式应⽤服务器⽀持分布对象模型,能将应⽤划分为多层,易于维护,在开发和部署过程中⽀持组件重⽤,模块化程度⾼,业务逻辑的变化只需修改相关组件即可。与⾯向对象模式相⽐,对象模式应⽤服务器遵循相应的标准和规范,其中较突出的两⼤类:J2EE(Java 2 platform enterprise edition)和微软的.Net。J2EE由SUN公司在3年前提出,⽬前⾄少有40多种实现
J2EE规范的服务器。J2EE为事务性Web应⽤的开发、部署、运⾏和管理提供⼀系列的规范和标准,主要包括Java Servlets,JSP,EJB,JTA,JTS,JMS,JAXP,JMX,RMI-IIOP,JNDI,JCA,Java Mail和JAF规范。这些J2EE规范为应⽤服务器的实现提供了⼀个完整的底层框架和⼀套标准的规范,
在不同的J2EE应⽤服务器之上的应⽤操作也可以互操作,移植的风险和代价⼩。⽽微软则在其操作系统之上附加⼀系列具备中间件功能的软件包来提供应⽤服务器的相应功能。微软.Net 构建在Windows DNA技术(如Microsoft Transaction Server,COM+,MSMQ,SQL Server数据库等)基础上,在.Net中提供了⼀系列企业级应⽤服务,为部署、管理和建⽴基于XML和Web的应⽤构筑了.Net服务器结构,包括Application Center,BizTalk Server,Exchange Server等,它们结合了Windows平台上的⼀系列开发⼯具和技术(如Visual Studio,Commerce
Server,Exchange Server等),提供了强有⼒的应⽤服务器解决⽅案。虽然⽬前J2EE和.Net势均⼒敌,但是J2EE作为⼀种规范,具有Net⽆法⽐拟的跨平台、企业应⽤集成能⼒以及可扩展性和开放性,得到许多⼚商的⽀持,已经逐步被⼴⼤研发⼈员和企业所接受,有良好的前景,逐步成为Web应⽤服务器研究和开发的⼀个⽅向。
§3.企业应⽤集成(喻坚、韩燕波书)
3.1 企业内应⽤集成技术
3.2企业间应⽤集成技术
3.3⾯向服务的应⽤集成技术
§4.服务计算学科涵盖内容
2.1服务资源层
主要为数据资源和软件资源的服务化过程提供基础标准、技术和⽅法⽀持。该层主要解决两⼤问题:①服务本质的认识问题,即服务模型包含哪些⽅⾯,应⽤何种语⾔进⾏服务描述,服务具有哪些基本特征;②服务的实现问题,即如何开发、封装、测试、部署、运⾏和发布服务等。
2.2服务汇聚层
服务资源层实现了各类异质异构数据和软件资源的服务标准化,⽽服务汇聚层是在服务资源层基础上进⼀步实现细粒度服务到⼤粒度服务的标准化,即为不同服务之间的协同以及由多个服务构成的服务流程的管理提供⼀系列标准、技术和⽅法。它涵盖了服务集成与协作、服务编排与服务编舞、服务流程管理等。
2.3服务应⽤层
经过服务资源层和服务汇聚层,各类异质异构数据和软件资源或资源集合被整合成不同粒度的标准化服务,这为⽅便、快捷、透明地应⽤服务提供了可能。服务应⽤层主要为服务在使⽤过程中提供基本的技术和⽅法⽀持,包括服务调⽤、服务发现、服务匹配、服务组合、服务验证、服务适配、服务监
控等技术,这些技术是当前服务计算研究与开发中最活跃的部分。
2.4服务系统层
是在服务应⽤层技术基础上,为指导服务计算环境下设计、开发、运⾏和管理⾯向服务的软件系统⽽提供的⼀组标准、技术和⽅法,包含了⾯向服务的体系架构、企业服务总线以及服务系统⼯程等。
§5.服务计算发展现状以及应⽤
服务计算是企业界和学术界共同努⼒的结果。企业界致⼒于制定服务计算相关技术标准、开
发各种⽀撑⼯具软件和系统平台;学术界致⼒于服务计算学科建设、理论创新和⽅法研究。
3.1企业界
企业界是推动服务计算产⽣和发展的源动⼒。企业界对“随需应变”的软件系统的强烈需求催⽣了Web 服务技术、⾯向服务的体系架构等服务计算技术体系最为重要的⽀撑技术。
W3C致⼒于创建Web相关技术标准并催⽣Web技术发展。该组织针对服务计算基础技术,特别是Web服务技术成⽴了多个⼯作组,涵盖了Web服务架构、Web 服务策略、Web 服务编舞、Web 服务语义标准等⼯作内容。
OASIS致⼒于推进电⼦商务标准的发展、整合、推⼴和应⽤,制定了当前⼤部分服务计算技术标准。它为服务计算技术专门成⽴了多个技术委员会,涵盖了服务安全、可靠、服务质量、事务、信任以及服务流程等⽅⾯,制定了⼀系列重要标准。
第⼆章⾯向服务体系架构
SOA(Software-Oriented Architecture),即⾯向服务架构。软件架构(Software Architecture,或软件体系结构),描述了软件系统的蓝图,即,构成⼀个程序或系统的构件的结构,构件间的互连,以及管理构件的设计和演化的原则和指导。从技术上看,SOA代表了⼀种开放的、可扩展的、可联邦的、可组合的设计范型,是软件构件技术在分布计算环境的⾃然延伸。SOA 的基础设施是已有中间件平台的演化和发展,保留了传统架构的成功特征。(主要引⽤⾯向服务架构第三章内容)
§1. 什么是SOA
SOA的理念最初由全球最具权威的IT研究与顾问咨询公司Gartner于1996年提出,但是由于当时的技术⽔平和市场环境尚不具备真正实施SOA的条件,因此SOA并未引起⼈们的⼴泛关注。进⼊21世纪之后,Internet风起云涌,越来越多的企业将业务转移到互联⽹领域,带动了电⼦商务的蓬勃发展。为了能够将公司业务打包成独⽴的、具有强⼤伸缩性的可跨越Internet访问的服务,⼈们提出了Web服务的概念,这是SOA实践的真正发端。
到现在为⽌,还没有⼀个权威的SOA标准定义,因为从不同⾓度,不同⼚商和学术团队会有不同的答案。争论定义本⾝,不是⽬的。
●OASIS(⼀个SOA标准组织)给出的SOA定义“SOA是⼀个范式,⽤于组织和利⽤可能处于不同所有权范围控制下的分布式系统。”
●给出的SOA定义“⾯向服务的体系结构(Service-oriented architecture)是构造分布式系统的应⽤程序的⽅法。它将应⽤程序功能作为服务发送给最终⽤户或者其他服务。它采⽤开放标准、与软件资源进⾏交互并采⽤表⽰的标准⽅式。”。
这些定义本⾝,⼀般⼈员要准确理解是⾮常困难的,既便是专业⼈⼠,未必能够深刻理解其内涵。如何更加形象理解SOA?怎么通俗化解析SOA的核⼼含义?
事实上,SOA的思想我国很早就有了,印刷术的发展过程其思想就完整体现了SOA的核⼼含义。
印刷的内容-⽂字,在秦始皇统⼀六国之前,各国的⽂字是不统⼀的,据说许多常⽤的⽂字有⼗⼏种写法和读⾳,妨碍了各国
之间的⽂化交流,就象SOA之前,各种软件平台、各种开发⼯具和各种接⼝的组件之间,没有统⼀的标准,对软件系统之间的整合造成巨⼤的困难。因此,伟⼤的始皇帝统⼀了六国⽂字,“书同⽂、车同
轨”就是通过标准解决“复⽤”和“互操作”等问题。这也为⼤规模的印刷和⽂明发展提供了⼀个良好的基础,这种“统⼀封装”的⽂字,对⽂化交流起到了⼀个“互操作”的标准作⽤。
在没有印刷术之前,书籍要依赖于⼿⼯抄写,这样效率当然是⾮常低下,⽽且质量也不能获得⼀致性的保证,也就是书籍还⽆法“复⽤”。中国⼈⾸先发明了刻版印刷术,就是将书籍刻成⼀块⼀块的凸字版,然后就可以⼤规模进⾏印刷了,当印刷出来的书籍脱销时,下次还可以继续使⽤,⼤⼤提⾼了效率,这就是“复⽤”,软件通过组件的封装,也可以达到重复和在不同场合多次使⽤的“复⽤”效果。
刻版印刷术有个很⼤的问题就是⽂字之间是紧耦合的,同样⼀个字,在另⼀部书之中是不能“复⽤”的,必须重新雕刻,也就是说刻版印刷是没有“编排”特性的。就如软件技术中微软VB开发的Com+组件就只能在Windows环境之中使⽤,它不能与Java开发的EJB组件进⾏复⽤和编排,因为他们与开发环境和运⾏环境是紧耦合的,要在UNIX环境下使⽤,必须重新开发(相当于重新“刻版”)。活字印刷就是通过⽂字与版⾯之间的松耦合,通过“排版”来实现⼀部书的印刷版⾯的,这种松耦合就⼤⼤提⾼了⽂字的字模之间的复⽤和编排效
率。我们标准封装的“服务”就类似⼀个⼀个的字模,通过服务编排(“排版”)来实现业务流程。
统⼀⽂字和活字印刷促进了⼈类⽂明进步,⽽SOA促进全球IT架构和应⽤的⾰命。
要准确全⾯理解SOA,⾸先必须理解SOA的核⼼要素:
SOA的⽬标就是通过重⽤现有的软件应⽤、以组装的⽅式实现灵活可变的IT系统。因此,重⽤、标准化封装和松耦合可编排是SOA技术本质特征。其中,标准化的封装实现各个软件应⽤之间的松散耦合最为关键的因素。
§2 SOA实现技术的本质特征
2.1.1松耦合的依赖关系
过去分布式技术没能解决软件应⽤对语⾔、平台和⼚商的依赖性,不同技术开发的应⽤之间不能交互。SOA当前主流实现技术即Web服务解决了不同应⽤之间的互联互通。
服务是通过服务描述消除了应⽤对语⾔、平台和⼚商的依赖,如图2-1所⽰,服务消费者完全依赖服务描述。服务描述是服务消费者和服务之间的“合同”,服务描述包括服务消费者为实现和服务交互需要的所有信息,如接⼝定义、服务使⽤策略、服务级别约定等。服务描述按照开放标准以⽂本⽅式声明,具有实现⽆关性。因此服务描述屏蔽了服务的实现细节,剥离了传统构件所具有的与语⾔、平台和⼚商的相关性。
-消除组件语⾔的依赖,CORBA 、DCOM 分别采⽤IDL、ODL接⼝描述语⾔描述构件。每种实现技术只能实现同类产品之间的交互,不能实现不同类产品的交互。
除了消除了上述关键性的依赖因素外,SOA还借助其他策略消除了更多的依赖因素,具体包括时间、访问地址和访问协议等。
调用webservice服务-消除时间依赖
对基于远程过程调⽤的分布式系统,客户端需要同步等待请求的返回,在SOA中,我们可以集合事情驱动的原理通过单向消息实现客户端和服务的异步交互,从⽽消除时间依赖。
-消除访问地址依赖
SOA通过间接寻址策略消除访问地址依赖,间接寻址有两种⽅式:⼀种是将访问地址放到服务注册中⼼,消费者通过查询注册中⼼发现访问地址实现间接寻址;另⼀种是通过单独的配置⽂件规定服务访问地址,这样当服务地址改变的时候,只需要改变配置⽂件即可。
-消除访问协议的依赖,如JAVA使⽤RMI,CORBA使⽤IIOP等。服务描述包括消息传输协议如SOAP
和⽹络传输协议如HTTP 的定义,⽽SOA通过标准的、⽀持Internet、与操作系统⽆关的SOAP协议实现了连接互操作。
2.1.2 服务资源的间接寻址
间接寻址是SOA松耦合的重要体现之⼀,通过间接寻址可以消除服务的访问地址依赖。图是被⼴泛引⽤的服务交互模型,服务注册中⼼是SOA间接寻址的体现。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论