服务计算概论.doc_第1页
服务计算概论.doc_第2页
服务计算概论.doc_第3页
服务计算概论.doc_第4页
服务计算概论.doc_第5页
已阅读5页,还剩89页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一章 绪论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的应用构筑了.et服务器结构,包括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. 什么是SOASOA的理念最初由全球最具权威的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还借助其他策略消除了更多的依赖因素,具体包括时间、访问地址和访问协议等。-消除时间依赖对基于远程过程调用的分布式系统,客户端需要同步等待请求的返回,在SOA中,我们可以集合事情驱动的原理通过单向消息实现客户端和服务的异步交互,从而消除时间依赖。-消除访问地址依赖SOA通过间接寻址策略消除访问地址依赖,间接寻址有两种方式:一种是将访问地址放到服务注册中心,消费者通过查询注册中心发现访问地址实现间接寻址;另一种是通过单独的配置文件规定服务访问地址,这样当服务地址改变的时候,只需要改变配置文件即可。-消除访问协议的依赖,如JAVA使用RMI,CORBA使用IIOP等。服务描述包括消息传输协议如SOAP和网络传输协议如HTTP的定义,而SOA通过标准的、支持Internet、与操作系统无关的SOAP协议实现了连接互操作。2.1.2 服务资源的间接寻址间接寻址是SOA松耦合的重要体现之一,通过间接寻址可以消除服务的访问地址依赖。图是被广泛引用的服务交互模型,服务注册中心是SOA间接寻址的体现。服务注册中心服务提供者服务请求者发现发布交互服务交互模型包含三类角色:服务提供者、服务消费者和服务注册中心。服务交互必须发生的三种行为:发布、发现和绑定或调用。交互作用的对象是服务和服务描述。服务提供者是一个接受并执行服务请求的通过网络可访问的实体,服务提供者将接口约定发布到服务注册中心,以便服务请求者发现并访问。服务请求者是一个应用、一个软件模块或发出服务请求的另一个服务。服务请求者可以通过服务注册中心间接获得服务描述,或者从服务提供者处直接获得描述,然后遵从服务描述的接口约定实现和服务提供者所提供服务的交互。服务注册中心是用于发现和定位服务的中介,包括一组供服务请求者查询的服务描述。服务注册中心的作用是剥离了服务提供者和服务请求者之间的直接地址依赖,使服务的地址在发生变更的时候不会影响服务请求者。另外,服务注册中心可以使服务消费者实现一种更加灵活的服务定位:在运行的时候通过约束条件在多个服务中选择条件最匹配的服务。一些面向服务的应用在构造时候仅仅想利用SOA的语言/平台无关的松散耦合特点,而不需要SOA的间接寻址能力。我们将这种体系结构称为SBA,即基于服务的体系架构。3 SOA的作用正如前边讨论过的,企业业务正在处理两个基本问题:快速变化的能力和降低成本的需要。为了保持竞争优势,企业必须快速适应内部因素如兼并和重组和外部因素如竞争压力和顾客需求。业务需要经济的、灵活的IT基础设施其业务需要。SOA具有如下优点,有助于组织在今天的动态业务环境下获得优势。(1)利用已有资源使企业通过将现有的资源封装为服务来保护IT的投资,这样企业可以持续地利用这些资源,而无需重新开发。从而体现“构造”而不是重新开发的先进设计理念。(2)更容易集成和控制复杂性SOA集成的观点是服务规范,而不是实现。提供了实现透明,当基础设施和实现发生变化的时候,可以将影响降到最低。通过为分离系统中的资源提供服务规范,集成变得可管理。(3)更加敏捷、快速地适应市场变化SOA利用现有资源构造新的服务的机制,可以灵活地反应业务需求。利用现有的资源构造服务可以减少软件开发周期,这样可以尽快地开发出新的业务,使企业更快地适应市场变化。(4)降低成本,增减重用由于核心业务服务是松散耦合,这样可以根据业务需求更加方便地使用和组合。这意味著尽量避免资源的重复开发、最大程度地利用现有资源、从而降低开发成本。(5)提前开发,以备之需业务功能可以预先开发,以备未来之需。由于业务流程是由一系列业务服务组成的,这样可以更加容易地创建、调整和管理业务流程,可以更快地抢占市场先机。SOA提供的这种灵活和敏捷是企业生存和发展的关键。构成服务5服务1服务4服务3服务2服务层应用层应用3(Legacy)应用2(.NET)应用1(J2EE)4 SOA参考模型SOA的核心主体是服务。所谓“服务(Service)” ,从业务角度而言,服务是一个可重复的经过标准封装的任务,例如: 检查帐号余额;开新帐户 等等。SOA的目标是通过服务的流程化来实现业务的灵活性,所谓流程(Process)是由一系列相互关联的任务所组成,实现一个具体的业务功能。一个流程可以由一系列服务来实现。服务就像一堆“元器件”,这些元器件通过封装形成标准服务,他们有相同的接口和语义表达规则。但服务要组装成一个流程和应用,还需要有效的“管理”,包括如何注册服务、如何发现服务、如何包装服务的安全性和可靠性,这些就是SOA治理。SOA治理乃是将SOA这一堆元器件,进行有效组装,形成一个“产品”的关键,否则它永远是一堆器件,而无法形成一个有机整体。SOA治理的方法和体系,就是区别于一般组件开发的技术的重要区别和特征。一个正确的框架,是指导我们开发和实施SOA架构的基础。由IBM提案,国际开放群组(The Open Group)提出了一个SOA架构的参考模型,这个架构框架目前是产业界最权威和严谨的SOA架构标准。The Open Group是一个非营利标准化组织,是一个厂商中立和技术中立的机构,致力于提出各种技术框架和理论结构,致力于促进全球市场的业务效率。The Open Group已有超过20年的标准制定与推广历史。在1996年,由X/Open与Open Software Foundation合并组成。The Open Group最有名是作为UNIX商标的认证机构。在过去,协会最出名的是其出版的Single UNIX Specification,它扩充了POSIX标准而且是UNIX的官方定义,其成员包括IT用户、供应商以及政府机构。The Open Group在中国的创始会员为金蝶集团,金蝶集团负责成立了中国分会。TOG在1993年提出的The Open Group Architecture Framework (TOGAF) 架构框架,是一套行之有效的企业架构。历经15年9个版本发展,支持开放、标准的SOA参考架构,已被80的福布斯( Forbes)全球排名前50的公司使用。这个SOA参考模型为:根据这个模型,完整的SOA架构由五大部分组成,分别是:基础设施服务、企业服务总线、关键服务组件、开发工具、管理工具等。SOA基础实施是为整个SOA组件和框架提供一个可靠的运行环境,以及服务组件容器,它的核心组件是应用服务器等基础软件支撑设施,提供运行期完整、可靠的软件支撑。企业服务总线(ESB)是指由中间件基础设施产品技术实现的、通过事件驱动和基于XML消息引擎,为SOA提供的软件架构的构造物。企业服务总线ESB提供可靠消息传输、服务接入、协议转换、数据格式转换、基于内容的路由等功能,屏蔽了服务的物理位置,协议和数据格式。在SOA基础实现的方案上,应用的业务功能能够被发布、封装和提升(Promote)成为业务服务(Business Service);业务服务的序列可以编排成为BPM的流程,而流程也可以被发布和提升为复合服务(Composited Service),业务服务还可以被外部的SOA系统再次编排和组合。ESB是实现SOA治理的重要支撑平台,是SOA解决方案的核心,从某种意义上说,如果没有ESB,就不能算作严格意义上的SOA。关键服务实现,是SOA在各种业务服务组件的分类。一般来说,一个企业级的SOA架构通常包括:交互服务、流程服务、信息服务、伙伴服务、企业应用服务和接入服务。这些服务可能是一些服务组件,也可能是企业应用系统(如ERP)所暴露的服务接口等等。这些服务都可以接入ESB,进行集中统一管理。开发工具和管理工具:提供完善的、可视化的服务开发和流程编排工具,涵盖服务的设计、开发、配置、部署、监控、重构等完整的SOA项目开发生命周期。按照这个模型,许多SOA解决方案是只提供部分实现。这个行业中,许多国内的企业为了搭上SOA的便车,经常以偏概全,混绕概念。应该说真正按照SOA的思想和模型来构建整个企业的IT架构的案例是非常之少的。许多国外厂商的宣传案例,基本上是停留在部署应用服务器,开发了部分WebService组件,可以实现部分数据集成,这个层次而已,而这些WebService是部署在ESB平台之上的,就已经很不错了。实现了服务流程重组,实现SOA治理的案例就更是很少见到了。国内有许多软件企业开发的系统,宣传是SOA架构的。基本上有几种情况,其一,有些开发组件和开发平台厂商,他们也自称中间件企业,基本上是提供一个工作流平台,许多还不支持BPEL的业务流程管理,只是传统的XPDL/WfMC工作流平台(Workflow不同于支持服务流程的Business Process),最常见的案例是OA办公审批,或者服务组件开发工具,而所谓的ESB产品大部分都是EAI的升级,可以与Webservice进行接口而已,就宣称这是ESB产品了,基本的服务注册、服务编排和安全管理都不具备。这些解决方案只是提供了许多WebService开发的组件,而不提供SOA治理的核心架构,相当于造了许多元器件,但还不能提供整机产品。其二,许多宣称SOA架构的应用软件,基本上可以说是“支持”SOA,而不能称为“基于SOA”架构。因为支持SOA一般是指可以将其某些功能,封装为服务(WebService),可以在SOA架构之中进行管理,这比较容易达到。而“基于SOA”是指应用系统的业务功能都是封装为服务,通过ESB进行集中管理,业务实现是通过BPEL业务流程管理进行编排,用户交互是通过交互服务(如门户)进行管理,整个解决方案可以达到标准服务封装、服务复用、松耦合、服务编排与重组,并且基本符合TOG-SOA的架构模型。按照这个标准,IT用户就可以了解到真正的SOA架构的框架模型,就可以识别是否是企业所需要的架构。讲到这里,我们已经很清楚了,对于SOA的理解,有些学者或者咨询公司强调SOA不是一种技术,也不是软件,而是一种思想,一种架构风格。我认为这也是不完全准确的,这种观点认为SOA仅仅是思想和方法,将使得SOA成为一种不可知论,飘在空中,很难落地。5 基于SOA的应用系统基于SOA的应用系统构建方法与传统软件架构方法有所不同。首先基于SOA的应用系统建模和管理的组件层次是服务:基于服务的应用系统的本质特征是松耦合,以基本业务功能(服务封装)为系统的基本实现单元,然后通过服务编排(流程管理)来“组装”业务应用系统。相对于以往的应用系统,是面向技术组件,由系统程序实现业务流程,在复用、耦合方面都存在灵活性问题。服务建模是第一步,也就是服务识别和颗粒度确定。服务识别是方法论的第一步,服务识别的主要任务,是确定在一定范围内(通常是企业范围,或若干业务场景范围内)可能成为服务的候选者列表,并确定服务的颗粒度,以及标识服务的接口。服务建模也就确定了应用系统架构的耦合程度。服务封装阶段的主要任务是对服务进行规范性的描述,其中包括输入/输出消息等功能性属性,以及服务在业务层面的诸多属性。并决定服务以何种形式向外提供服务。服务可能是新开发的业务功能和业务对象的封装,也可能是遗留系统的服务封装,将遗留系统的软件资产以服务的形式进行封装,在新的架构上利用已有的资产。服务治理就是将已经封装好的服务进行集中统一有效的管理。通过ESB基础设施,提供服务注册、存储、安全控制和版本管理等。服务注册阶段的主要任务是将服务注册到服务库。此时需要决定服务的命名、安全、性能、时间特性。服务编排就是根据业务流程的需求,对服务进行组合和组装。服务组装是以实现业务流程为目的,通过对业务服务的组合和组装,实现更粗粒度的业务服务,实现最终的业务需求。应用交付阶段主要任务是完成业务系统服务化组装和服务部署,实现业务按需交付。基于SOA的应用系统是SOA架构的重要组成部分,也是SOA落地的地基。(摘自金蝶中间件有限公司总经理 奉继承 博士原文:/fengjicheng/A1059842.html)第三章 SOA主流实现技术(Web服务)简单地说,Web服务是部署在Web上的软件构件。Web服务互操作性拓展了Web的能力,使其从原来的单纯面向人类的信息和功能提供平台发展成为分布式计算平台。如图1.1所示,人通过浏览器软件与Web应用交互,此时浏览器与Web应用是通过HTML语言互相传递消息;Web服务提供了一种可以在Web上共享的功能,应用通过标准Web和Internet协议可以直接使用Web服务提供的功能,此时两者之间是通过XML/SOAP语言互相对话的。其中,XML是一种与平台/编程语言无关、具有可扩展类型系统的数据表示语言,适合在各种平台/编程语言的应用之间交换信息;SOAP则提供了一种应用之间互相传递基于XML数据的消息通信协议。2.1 Web 服务的定义服务是面向服务架构中核心概念,不理解服务的概念,则无法理解面向服务的架构。目前不同组织对服务尚无统一的定义。 国际标准化组织W3C :Web服务是一个通过URL识别的软件应用程序,其界面及绑定能用XML 文档来定义、描述和发现,使用基于Internet 协议上的消息传递方式与其他应用程序进行直接交互。 Microsoft :Web 服务是为其它应用提供数据和服务的应用逻辑单元,应用程序通过标准的Web 协议和数据格式获得Web服务,如HTTP 、XML 和SOAP 等,每个Web 服务 的实现是完全独立的。Web服务具有基于组件的开发和Web 开发两者的优点,是Microsoft 的.Net 程序设计模式的核心。 IBM认为,Web服务是一种自包含、自解释、模块化的应用程序,能够被发布、定位、并且从Web上的任何位置进行调用。Web服务可以执行从简单的请求 到错综复杂的商业处理过程的任何功能。理论上来讲,一旦对Web服务进行了部署,其它Web服务应用程序就可以发现并调用已部署的服务。 市场研究公司Forrester以一种更加开放的方法将Web 服务定义为人、系统和应用之间的自动连接,这种连接能够实现将业务功能元素转变为软件服务,并且创造新的业务价值。Web 服务是基于网络的、分布式的模块化组件,它执行特定的任务,遵守具体的技术规范,这些规范使得Web服务能与其他兼容的组件进行互操作。 Gartner将Web 服务定义为:松散耦合的软件组件,这些组件动态地通过标准的网络技术与另一个组件进行交互。Web 服务可以从多个角度来描述(理解)。从技术方面讲,一个Web服务是可以被URI识别的应用软件,其接口和绑定由XML描述和发现,并可与其他基于XML消息的应用程序交互;从功能角度讲,Web服务是一种新型的Web应用程序,具有自包含、自描述以及模块化的特点,可以通过Web发布、查找和调用实现网络调用。从应用的层面来说,Web服务是用于集成应用的,将原有的面向对象、面向组件的软件系统改造为基于消息面向服务的松散耦合系统或者构建新的松散耦合系统的一种协作设施。从组成框架及实现目标的角度讲,Web服务作为一种网络操作,能够利用标准的Web协议及接口进行应用间的交互。从网格计算(grid computing)的角度看,Web服务能用于Web上的资源发现、数据管理及网格计算平台上异构系统的协同设计,提出了网格服务的新概念。2.2 Web服务基础规范1999年,W3C和相关的企业开始讨论设计基于XML的通信协议,2000年,W3C发布SOAP(SimpleObjectAccessProtocol)协议的1.1版。人们把利用SOAP协议传递XML信息的分布式应用模型称为Web服务。2001年,W3C发布了WSDL(WebServicesDescriptionLanguage)协议的1.1版。SOAP协议和WSDL协议共同构成了WebService的基础如图所示。随后,J2EE和.NET这两大企业级开发平台先后实现了WebService,并将其视为平台的一项核心功能。(点击查看大图)图9-2图2. Web 服务基础协议栈Web服务平台需要一套协议来实现分布式应用程序的创建。任何平台都有它的数据表示方法和类型系统。要实现互

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论