面向服务的计算和web数据管理第1章-分布式面向服务计算导引课件.ppt

上传人(卖家):晟晟文业 文档编号:4913160 上传时间:2023-01-24 格式:PPT 页数:129 大小:1.24MB
下载 相关 举报
面向服务的计算和web数据管理第1章-分布式面向服务计算导引课件.ppt_第1页
第1页 / 共129页
面向服务的计算和web数据管理第1章-分布式面向服务计算导引课件.ppt_第2页
第2页 / 共129页
面向服务的计算和web数据管理第1章-分布式面向服务计算导引课件.ppt_第3页
第3页 / 共129页
面向服务的计算和web数据管理第1章-分布式面向服务计算导引课件.ppt_第4页
第4页 / 共129页
面向服务的计算和web数据管理第1章-分布式面向服务计算导引课件.ppt_第5页
第5页 / 共129页
点击查看更多>>
资源描述

1、1 1第1章 分布式面向服务计算导引1.1 计算机体系结构和计算范型计算机体系结构和计算范型 1.2 分布式计算和分布式软件体系结构分布式计算和分布式软件体系结构 1.3 面向服务的体系结构和计算面向服务的体系结构和计算 1.4 面向服务的开发与应用面向服务的开发与应用 1.5 讨论讨论2 2软件体系结构和分布式软件开发与执行软件的计算机系统的体系结构是相关的。本节介绍计算机系统结构以及各种计算范型。1.1 计算机体系结构和计算范型计算机体系结构和计算范型3 31.1.1 计算机体系结构计算机体系结构对于单处理器计算机,计算机体系结构通常指的是处理器的体系结构,它是软件和硬件之间的接口或者处理

2、器的指令体系结构Patterson2004。对于多处理器计算机,体系结构通常指的是指令和数据流。FlynnsTaxonomyFlynn1972将计算机体系结构分为四种类型:单指令单数据流(SISD),即简单的处理器系统;单指令多数据流(SIMD),例如向量或阵列式计算机;多指令单数据流(MISD),例如对同一数据流执行冗余计算并对结果进行表决的容错计算机系统;4 4 多指令多数据流(MIMD),由拥有自己的内存和控制器、算术逻辑运算部件以及输入输出部件的独立计算机系统组成的计算机系统。MIMD被看做是分布式系统,不同的分布式系统有不同的关注点,如图1.1所示。分布式计算关注用并行或(和)分布方

3、式表达计算时涉及的原理、方法以及技术。分布式软件体系结构关注的是软构件间的组织和接口。网络体系结构研究的是网络节点的拓扑结构以及连接。网络通信研究协议层,协议层允许节点之间相互通信并理解彼此之间的数据格式。有些研究者用操作系统区分分布式系统和网络。当一组网络节点有独立的操作系统时,分布式系统是内聚性的操作系统。5 5图1.1 分布式系统和网络6 61.1.2 软件体系结构软件体系结构一个程序或计算机系统的软件体系结构是指系统的一个或多个结构,结构中包括软件的构件、构件的外部可见属性以及它们之间的相互关系Bass2003。软件体系结构的设计并不意味着开发可执行的软件。相反,它被看成软件的概念模型

4、,是软件开发中的一个步骤。通过体系结构的设计,软件工程师能够做到:(1)分析设计满足需求的有效性;(2)考虑体系结构的各种方案,使设计容易变更;(3)定义构件间的接口;(4)降低建立软件的风险。7 7在设计算法和实现软件之前设计软件体系结构是很重要的,因为软件体系结构可以使对系统开发感兴趣的各方(项目相关者)进行通信。面向服务体系结构(SOA)是本书中的一个重要主题,在面向服务的体系结构中,明确地包括了三方:服务提供者、服务中介和服务请求者,每一部分独立进行算法设计和代码编写。软件体系结构强调早期的设计决策,这些决策对后续的软件工程工作以及系统的最终成功产生深刻的影响。8 81.1.3 计算范

5、型计算范型历史上,已开发出的编程语言很多,但只有数千种在实际中被应用。相对于独立发展和演变的自然语言,计算机编程语言之间有很大的相似性。它们彼此相似是因为如下原因:享有共同的数学基础(例如:布尔代数、逻辑);提供类似的功能(例如:算术、逻辑运算和文字处理);基于相同的指令集和硬件;有共同的设计目标寻找一种人类使用简单并且硬件执行效率高的语言。编程语言的设计者分享他们的设计经验。9 9但是有些编程语言彼此之间更相似,而另一些语言之间大不相同。基于它们之间的相似性或者范型,编程语言被分为不同的类。在编程语言的定义中,范型是表达计算或算法的基本规则、概念、方法的集合。主要的范型包括命令式、面向对象、

6、函数式、逻辑、分布式以及SOC。命令式计算范型,也叫做过程式计算范型,通过全部说明和全部控制被命名数据的操作并以步的方式表达计算。换句话说,数据或值最初被存储在变量中(存储单元),从内存读取,在ALU(算术逻辑单元)中操作,然后再存到相同或者不同的变量中(存储单元)。10 10最后,变量的值作为输出发送到输入/输出设备中。命令式语言的基础是基于存储程序概念的计算机硬件组织和体系结构(冯诺依曼机)(参见http:/en.wikipedia.org/wiki/Von_Neumann_machine的例子)。命令式编程语言包括所有的汇编语言和早期的高级语言,例如FORTRAN、Algol、Ada、P

7、ascal以及C。11 11面向对象计算范型和命令式计算范型基本类似,除了相关变量以及对变量的操作被封装在对象中。为了减少(简化)对象之间的交互,对象中的变量和方法(操作)的访问权限允许被定义为私有的。对象被看做程序的主要构造块,它支持继承、类层次结构以及多态。典型的面向对象程序语言包括Smalltalk、C、Java和C#。函数式计算范型,也叫做应用型计算范型,以数学函数表达计算。因为我们在很多数学课程中用数学函数来表达计算,所以函数式编程可能被认为容易理解和使用。12 12但实际上,由于函数式编程和面向对象以及命令式编程大不相同,而大多数程序员习惯于用命令式编程和面向对象编程编写代码,所以

8、转化到函数式编程就变得很困难。其主要区别是在函数式编程语言中没有存储单元的概念,每个函数用多个值作为输入(参数)并且返回单一的值(函数输出);返回值不能被存储供日后使用,它必须作为最终输出或者是作为另一个函数的参数值立即使用。函数式编程就是定义函数并组织一个或者多个函数的返回值作为另一个函数的参数。函数式编程语言主要基于将在第4章讨论的-演算。典型的函数式编程语言包括ML、SML和Lisp/Scheme。13 13逻辑计算范型,也叫做声明计算范型,用逻辑谓词表达计算。一个逻辑程序是事实、规则和问题的集合。一个逻辑程序的执行过程是把问题和给定的事实与规则库中的每一个事实和规则进行比较。如果问题找

9、到了一个匹配,则我们得到这个问题的肯定答案。否则,得到否定答案。逻辑编程包含发现事实、基于事实定义规则编写想解决的问题等内容。Prolog是唯一一个比较有意义的逻辑编程语言。所有编程范型都支持“小型程序”和“大型程序”。前者强调使用基本的编程结构,例如,顺序、条件分支和循环结构开发程序组件或模块;后者强调开发大型应用。14 14大型应用通常要求更多的人力和工作量,而且它们也被用在关键领域,比如,银行、电子商务、嵌入式系统和电子政务。另外一个重要的计算范型是基于构件的计算。这一范型强调的是用预先编写好的构件或模块构成大型应用。构件或模块往往是预先编译的程序单元,并在运行之前连接到应用程序。从概念

10、上讲,基于构件的计算并不是新的范型。面向对象计算被广泛认为是基于构件的计算,它的一个类或一个对象就是一个构件。一个名字空间(一组类)也可以被视为是一个构件。然而上述观点紧紧围绕着类的定义。15 15基于构件的计算有更为广泛的含义,它允许任何组件或模块被看成是一个构件,因此,基于构件的计算可看做一个不同于面向对象的计算范型。一个构件可以和一个对象一样小,也可以和一个应用程序一样大,而且构件的封装性很好。因此,在有些人看来,SOC是真正的基于构件的计算,服务被看做是构件。在他们的认识中,SOC基本上是基于构件的计算,但每个构件用开放标准说明。16 16分布式计算包括在多个逻辑和物理的处理器或者计算

11、机上执行的计算。这些单元相互协作沟通,完成一个完整的应用。计算单元可以是构件中的函数(方法)、构件或应用程序。在分布式计算范型中首先需要解决的问题是分布式单元间的并发性、并行计算、资源共享、同步、消息和通信。不同级别的分布式会导致不同的变化。多线程是一种常见的分布式计算技术,它允许同一软件中不同函数并发执行。如果分布式单元在对象级别,则分布式计算就是分布式面向对象计算。主要的分布式面向对象计算框架是由OMG(对象管理组织)开发的CORBA(公共对象请求代理体系结构)以及由微软开发的分布式构件对象模型(DCOM)。17 17面向服务计算(SOC)也是一个分布式计算范型,SOC在以下几个方面和分布

12、式面向对象计算不同:(1)SOC强调的是分布式服务(包括可能的服务数据)而不是分布式对象;(2)SOC明确区分开发责任、软件提供服务、服务中介,通过服务消费构建应用;(3)SOC支持库(公共或私有)中重用服务的匹配、发现和调用(远程或本地);(4)在SOC中,服务通过独立于平台和供应商的开放标准和协议进行通信。18 18图1.2 不同计算范型的特征19 19 值得一提的是,许多编程语言属于多种计算范型。例如,C是一个面向对象的编程语言。然而C几乎包括C的所有特征,因此C也是一种命令式的编程语言,我们可以用C去写C程序。Java是一个纯粹的面向对象的编程语言,也就是,语言的设计重点强调了面向对象

13、,但是它仍然包含许多命令式特征。例如:Java的基本类型变量使用值语义并且不从堆中分配存储单元。2020Lisp包含了许多非函数特性,Lisp和Scheme是函数式编程语言,但是它们也包含了许多非函数式特征,例如当涉及到输入输出时进行顺序处理。Prologs是一个逻辑编程语言,但是它的算术操作用的是命令方式。总而言之,这些计算范型往往互相重叠。例如,面向对象程序设计语言通常也被看做命令式程序设计语言、SOC语言,例如,Java和C#也是面向对象程序设计语言。因此,一个编程语言可以用不同的计算范型编写程序。C、C、Scheme和Prolog用于这些计算范型的介绍参见(Chen,2006)。21

14、21在分布式计算中,计算分布在多个计算单元(处理器或计算机)中,而不是局限在单一的计算单元中。实际上,当多核处理器的设计出现后,现在所有的大型计算系统都是分布式的。1.2 分布式计算和分布式软分布式计算和分布式软件体系结构件体系结构22221.2.1 分布式计算分布式计算软件体系结构描述了系统结构和功能在若干逻辑和物理计算单元上的分配。为一个应用选择合适的体系结构对于达到预期的服务质量是必不可少的。分布式计算经常要处理多层面的挑战,包括复杂性、通信和连接、安全性和可靠性、可管理性、不可预测性以及非确定性行为。Sun公司研究员提出的分布式计算的八个谬论(http:/en.wikipedia.or

15、g/wiki/Fallacies_of_Distributed_Computing)很好地表达了这些挑战:网络是可靠的;延迟是零;带宽是无限的;2323网络是安全的;拓扑结构不发生变化;有一个管理员;传输成本是零;网络是同质的。前四个谬论就是所谓的网络计算的谬论,是BillJoy和TomLyon在1991年提出来的。PeterDeutsch增加了后面的三个,这经常被称做是Deutsch的七个谬论。JamesGosline在1997年增加了第八个谬论。24241.2.2 N层体系结构层体系结构类似于OSI的七层网络体系结构,分布式软件体系结构通常是层次结构,其中的组件是用层来组织的,也称为N层体

16、架构。例如,复杂的商业软件可以组成一个五层模型:(1)表示层:图形用户界面的风格(GUI);(2)表示层的实现:用特定的编程语言编写GUI;(3)业务逻辑层:业务对象、规则和策略的实现;(4)数据访问层:业务逻辑和数据库的接口;(5)数据层:数据库。2525因为同一层或一些相邻层可以放在分布式系统的同一节点上,所以层次化设计非常适合于分布式计算,层次化设计的另一个优点是维护系统时的灵活性,每一层可以相对独立地进行修改。例如,当第二层,也就是表示层的实现发生变更时,从逻辑上看其他层不必作改变,用户仍然使用同样的接口,业务逻辑层也保持不变;从编程的角度来看,如果在修改层提供不同的用户接口,那么上面

17、的层可能需要改变。两层体系结构和三层体系结构是广泛使用的分布式体系结构。两层体系结构,也被称做是客户/服务器体系结构,应用程序分别被建模为服务器提供的一组服务以及使用这些服务的一组客户。2626客户知道服务器但是服务器不必知道客户。客户和服务都是逻辑处理,可以驻留在同一计算机或不同的计算机中。图1.3是一个客户/服务器体系结构的例子。为了对客户提供可靠的服务,服务器可以组成一个允许他们之间相互备份的联盟。该联盟对用户是透明的。数据库提供的数据服务对业务应用是非常重要的,数据库是这个体系结构中服务的一部分。2727图1.3 具有服务器联盟的客户/服务器体系结构2828客户/服务器体系结构可以进一

18、步被划分为瘦客户和胖客户的体系结构。在瘦客户体系结构中,所有应用处理以及数据管理都在服务器端执行。客户端只负责运行表示层的软件。在胖客户体系结构中,客户端软件实现了应用逻辑以及和系统用户的交互。服务器端只负责数据(数据库)的管理。客户/服务器体系结构联盟的进一步发展是虚拟化,它把多个服务看成是一个单一的虚拟服务,或者将一个服务看做多个虚拟的服务。每一个虚拟服务和实际的物理服务的使用方式是相同的。2929为了进一步提高资源的共享率,一个虚拟服务可以有多个租户,每一个租户共享这个环境以及环境中的资源。虚拟化和多租户是实现云计算的关键技术。三层体系结构由三个层次组成,如图1.4所示。每一层在一个单独

19、的处理器上运行。这是一个更加平衡的方法,它比瘦客户方法的性能好,比胖客户方法易于管理。三层体系结构也是一个伸缩性更好的体系结构,当需求增加时,可以添加额外的服务。3030图1.4 三层体系结构31 31图1.5是一个三层架构的网上银行系统的例子。图中的客户端包含ATM(自动提款机)的图形用户界面、POP(购买点)以及用户账户的Web访问。应用处理层安装在银行的IT中心,负责处理所有的请求。数据,例如账户信息和存款,存储在不同的服务器中进行管理。3232图1.5 三层架构的网上银行系统实例3333面向服务的体系结构可以实现成四层次的体系结构,如图1.6(a)所示,它包含表示层、应用层、服务存储层

20、以及数据管理层。然而,面向服务体系结构不被局限于这一架构,因为这种体系结构只有相邻层之间才可以通信。图1.6(b)以及(c)是实现SOA的两个可能的变种。3434图1.6 四层体系结构及其变种35351.2.3 分布式对象体系结构分布式对象体系结构不同于N层体系结构,在层次体系结构中服务器和客户端有明确的区别,而在分布式对象体系结构中客户端和服务器没有很明显的区别,每个分布实体都可以向其他对象提供服务或接收来自其他对象的服务。分布式对象体系结构在实现不同应用时更为通用。但和分层结构相比,它的设计和管理更为复杂,因为它允许系统设计者延迟决定在何处以及怎样提供服务。换句话说,这是一个开放的体系结构

21、,允许系统根据需求添加新的资源。3636用分布式对象体系结构构建的系统是灵活的和可扩展的。根据需要,通过对象在网络中的迁移重新动态配置系统成为可能(例如,使用同一种编程语言)。作为为一个逻辑模型,分布式对象体系结构允许开发人员组织和管理系统。在这种情况下,通过服务和服务组合,开发者更多地关注应用的功能。两个主要的分布式对象体系结构是OMG(ObjectManagementGroup)开发的CORBA(Co mmonObjectRequestBrokerArchitecture)和微软开发的DCOM(DistributedComponentObjectModel)。在CORBA中,对象通过一个称

22、为对象请求代理(ORB)的中间件系统通信,它也被称为软件总线,如图1.7所示。3737图1.7 CORBA体系结构3838 原则上,CORBA对象和C、C以及Java中的对象类似。类似于C,CORBA对象有一个用通用语言IDL(接口定义语言)描述的独立接口,对象的接口可以用任何编程语言描述。程序转换器可以用来转换接口代码,例如C和Java可被转换成IDL代码,因此用不同编程语言所写的对象可以相互通信。ORB通过用IDL语言写的存根程序处理对象之间的通信。服务提供者通过IDL存根程序使服务端口为大家所知。如果一个服务请求者调用服务存根程序,这个调用将转化为对服务提供者的函数的调用。3939支持分

23、布式对象体系结构的另一个平台是Java企业版(JavaEE)。Java消息服务(JMS)是连接Java对象的软件总线,位于因特网InterOrb协议(RMIIIOP)之上的Java远程方法调用(JavaRMI)提供了一个与CORBA通信的IDL接口。IIOP上的JavaRMI是由Sun和IBM联合开发的。JavaEE的对象也可以和微软平台通信。Java本地接口(JNI)可用来和C以及C#程序通信。DCOM(分布式对象构件模型)是微软在VisualStudio.Net之前开发的分布式软件开发框架。DCOM允许软件构件分布在多个互联的计算机上并相互通信。4040框架经过了几代演变。起初,分布式软件

24、开发框架被称为OLE(对象连接与嵌入),OLE也是一个分布式对象系统,然后被扩展到网络OLE,再到1993年的COM(构件对象模型),COM提供了对象间的通信能力。在演化为DCOM之前,在Windows2000中,对COM作了有意义的扩展,并被命名为COM。DCOM的所有技术由VisualStudio.Net集成或取代,VisualStudio.Net是一个集所有功能于一身的面向对象、分布式、面向服务的软件开发环境。41 41分布式对象体系结构是SOC的前身。它有许多SOC的特点。SOC明显的进步和成就包括:(1)所有主要的计算机公司都认可SOC标准、协议以及建立可操作服务的接口,接口与平台和

25、语言无关。在分布式对象体系结构中,CORBA和DCOM具有相似的功能和目标,然而,在这两种环境中开发的系统不具有互操作性,DCOM也是平台依赖的。(2)SOC明确划分了开发的职责:服务提供者开发服务,服务请求者用现有的服务建立应用,服务中介发布服务,并进行服务的匹配和发现。在分布式对象体系结构中,没有明确的职责划分,而且服务的发布和发现也没有外部机制。4242(3)用Web服务实现SOC能够利用互联网基础设施传输服务,采用相同的技术和标准,也可以用局域网建立私有的SOC应用。多线程是一个基本的分布式计算模型,允许程序员在函数和类级别上指定并行计算单元,这些计算单元是在相同或不同处理器上运行的独

26、立进程,并依赖于操作系统的分配和调度。线程之间的通信、资源共享以及同步由程序员管理。第2章将对多线程做详细介绍。43431.3.1 基本概念和术语基本概念和术语服务是服务制造者(提供者)和消费者之间的一个接口,计算机服务的制造者(也称为提供者)是一个开发供他人使用的计算机程序的人(或者是一个运行或存储程序的计算机),而服务消费者是使用服务的人或计算机程序。从开发者角度看,服务是一个定义良好、自包含、不依赖其他功能的环境或状态的功能模块。这些服务可以是一个新开发的模块或是对已有的程序进行包装提供新的接口的模块。1.3 面向服务的体系结构和计算面向服务的体系结构和计算4444从应用构建者或服务消费

27、者的角度看,服务是为获得预期结果而由服务提供者完成的一个工作单元。和应用不同的是,服务通常不包含用户界面,而提供的是应用编程接口(API),这样服务可以被一个应用或另一个服务调用(激活)。当人使用服务时,必须添加用户界面。一个带有用户界面的服务就是一个应用。服务消费者所需的服务发现可以获得服务中介的支持。服务中介允许服务提供者发布服务定义和接口,同时允许服务消费者搜索数据库以发现所需的服务。4545SOC的一个重要特点是把软件开发分为三方(项目相关者):服务请求者或消费者、提供者和中介。这种三方结构为软件系统结构增添了很大的灵活性,并支持软件开发的新方法组合。面向服务体系结构(SOA)是一个分

28、布式软件体系结构,它考虑的是通过松散耦合的服务构建的软件系统。这些服务通过标准接口,例如WSDL(Web服务描述语言)接口,以及标准的消息交换协议,例如SOAP(简单对象访问协议)相互通信。这些服务是自治和独立于平台的。它们驻留在不同的计算机上并且为了实现期望的目标和最终结果使用彼此的服务。4646三个独立方:服务请求者、服务中介以及服务提供者开发和维护SOA中的软件。服务提供者开发服务并且在服务中介那里发布,而服务请求者通过服务中介发现服务并使用可用的服务组合成应用。许多服务提供者可以发布相同的服务,服务请求者可以动态发现服务并且当更好的服务被发现时,在运行时把服务绑定到应用中。面向服务计算

29、(SOC)指的是基于SOA概念模型的计算范型。SOC包括三个并发进程中表示的计算概念、原理以及方法。这三个并发进程是服务开发、服务发布以及使用开发出的服务进行应用组合。4747SOA和SOC之间最为本质的区别是SOA是一个概念模型,不涉及建立一个可操作的软件所需要的算法的设计及实现。而SOC包括了软件开发生命周期的大部分,从需求、问题定义、概念模型、规格说明、体系结构设计、组合、服务发现、服务实现、测试直到评估。因此,应用建造者(服务请求者)更多地关注SOA,而SOC软件开发的所有三方都关注SOC。面向服务开发(SOD)指的是基于SOA概念和SOC范型的整个软件开发周期,包括需求、问题定义、概

30、念模型、规格说明、体系结构设计、组合、服务发现、服务实现、测试、评估、部署和维护,这些活动将实现可运行的软件。4848在文献中,SOA常被扩展至包括SOC的含义,因此SOA和SOC可以交替使用,特别是当SOA和SOC的具体差别不是关注的重点时。另一方面,SOC常被扩展至包含SOD的含义,特别是当SOC和SOD之间的具体差别不是关注的重点时。因此在本书中,如果它们之间的差别不是关注的焦点,为了简化术语的使用,我们用SOC替代SOA和SOD。图1.8说明了SOA、SOC、SOD之间的联系。虚线圈表示了本书覆盖的内容。4949图1.8 SOA、SOC和SOD之间的联系5050我们用“分布式面向服务软

31、件开发”作为题目,类似于广泛使用的分布式面向对象的软件开发方法,目的是强调面向服务的软件开发在本质上是分布式的。不仅开发的软件分布在不同地点不同计算机上,而且因为应用的构建者、服务中介、服务提供者在不同地点独立地进行开发工作,所以开发过程也是分布式的。但这些开发者必须遵循同样的接口和标准。第2章会进一步讨论一般意义上的分布式计算以及SOA、SOC、SOD如何适应一般的分布式计算框架。51 51WS(Web服务):WS是指通过Web访问的服务。基于Web服务的计算是SOC的一种实现。它也许是最广为人知的实现SOC的例子;然而,其他SOC实现也是可能的。Web服务支持SOC,并有一系列可用的技术,

32、包括WSDL、SOAP和XML等。XML是一种数据表示标准。SOAP可以实现跨网络和平台的远程服务调用。WSDL用来描述服务接口。UDDI(通用描述、发现和集成)和ebXML(电子商务可扩展标记语言)用于发布Web服务,这使通过手动以及编程方式发布、搜索和发现服务成为可能。有关WS技术的标准和协议不断在增加。5252Web服务技术的特点有以下几个方面:(1)服务是功能构建块。多个服务可以形成一个组合服务,组合服务又成为一个新的构建块。但是,Web服务的代码并不需要被导入并集成到应用程序。相反,服务在服务提供者的站点运行并且使用消息机制和应用松耦合。因此,服务不必用同一语言编写,也不用在同一平台

33、开发和运行。(2)服务是可以通过URL(统一资源定位器)识别的软件模块,模块接口、绑定的定义、描述以及发现可以用一个XML文档来描述。5353(3)Web服务通常用WSDL来描述,通过HTTP上的SOAP协议访问。当添加人机界面后,一个服务或组合服务可以形成一个Web应用。Web服务通常是通过计算机程序访问的,而Web应用则通过Web浏览器访问的。组合是SOC中的一个重要概念,它使用现有的服务组合出一个组合服务或应用。目前有两种组合方法:编排(Orchestration)和共同设计(Choreography)。在编排中,有一个主要过程,它本身也可以是一个服务,这个主要过程控制参与的服务并协调不

34、同操作的执行。参与的服务仅仅与主要过程通信。编排对私有业务流程很有用。BPEL(业务流程执行语言)是一种支持编排的语言。5454在共同设计中,没有中央协调者,参与的每个服务互相通信。共同设计对于公有的业务流程非常有用,而且它允许动态组合。WSCDL(Web服务共同设计描述语言)是一种支持共同设计的组合语言。SOI(面向服务的基础设施):SOI有两种含义。由于SOC涉及到许多新的操作,如发布、发现、基于策略的管理、编排、共同设计,这些操作在传统的计算中不常使用,所以SOI的第一个含义是指支持SOC的硬件和软件。例如,如果服务的数量很大,搜索算法必须有效,而且还要有良好的缓冲机制。否则,大量时间将

35、花费在发现上。5555另一个例子是策略管理机制。当在运行时需要强制执行策略时,强制机制必须是有效的并且能实时运行。当SOC的某些操作很昂贵时,这些操作应该由硬件执行或者由硬件支持以节省成本和时间。如果SOC系统被用在关键任务的实时系统中,这一点尤其重要。SOI的另一个含义是一个硬件系统可以像软件系统那样按面向服务的方式组织起来。这类SOI的一个例子是由Intel公司的SOI小组开发的。主要思路是把计算部件、存储部件以及网络部件看做虚拟服务。本质上,他们把这些硬部件当作服务,就像软件服务一样,他们用面向服务的方式控制这些硬件服务。5656类比SaaS(软件即服务)的概念,英特尔称这种技术为Paa

36、S(平台即服务)。通过这种方式,硬件系统可以像软件系统一样被组合以及再组合,并被当作一个SOC系统来管理。这种技术的另一个意义是一旦硬件系统用SOI方式组织,硬件被看做可以再组合的服务,这样就允许在没有停止软件系统运行的前提下升级更换硬件。这意味着,目前的容错计算技术可以无缝地集成到体系结构设计中。这将是未来的研究课题。5757Web2.0:Web2.0被看做是下一代Web或因特网。核心概念包括用户作为主动参与者而不是被动的观察者、同行协作、集体智慧、计算平台从桌面移到Web、以用户为中心的计算以及面向服务。一个众所周知的例子就是维基百科一个数百万用户参与编写的在线百科全书。当维基百科成为一种

37、流行的学习方式时,这种方法就变得极其成功。需要说明的是维基公司只有七名员工,但是他们产生出数百万页的知识,几乎所有知识都是由用户贡献的。这是一个介绍如何大规模协作创造具有重要价值事物的很好的例子。5858本书有许多地方引用了维基百科,这也印证了维基百科的资料确实有用。使用Web2.0开展业务的方法被称作维基经济学(Wikinomics)(http:/en.wikipedia.org/wiki/Wikinomics)。许多组织正在试图复制这种方法以创造巨大的价值。语义Web:语义Web是由W3C提出来的,它提供了Web发展的未来远景。语义Web提供了一个通用框架,这个框架允许跨应用、跨组织、跨社

38、区的数据共享以及重用。这一思想让信息有明确含义,使Web服务的自动处理以及集成Web上的可用信息成为可能。因为Web2.0已被使用,所以语义Web也称为Web3.0(http:/en.wikipedia.org/wiki/Web_3)。5959本体:本体这个词来源于哲学,它是存在论的系统解释。在计算机科学中,本体是一个形式化说明,这个形式化说明定义了某一领域中的术语和对象以及它们之间的关系。主要关系之一是分类。通常,一个本体系统定义了一组术语词汇(词)、它们的含义(语义)、它们之间的连接(例如,同义词和反义词)以及推理规则(推理),推理规则是实现语义Web项目的主要方式。SODB(面向服务的数

39、据库):随着SOC的流行,数据库技术也变得很重要。6060SOC应用使用基于XML的数据和消息,具有树型结构,而传统的数据库是由包括行和列的表组成的。下面几种方法解决数据结构之间的不匹配问题。第一种方法是用传统的数据库和适配器把基于XML的数据及消息转换为传统数据库中表中的数据或反之。这是目前常用的方法。第二种方法是编码XML格式数据并把XML文件存储为数据库。这一方法面临的主要挑战是设计和实现有效的基于XML的查询语言,通过这种语言在XML数据库中检索数据以及存储数据。W3C定义的XQuery语言就是为了满足这一目标而开发的。61 61第三种方法是封装现有的数据库管理系统,例如将关系数据库系

40、统作为服务,并开发相关服务,使SOA应用能和数据库系统进行通信。这些相关的服务被称为信息服务。本体也可以作为SOC应用的数据库。事实上,一个XML数据库可以被看做是一个简化的本体系统。62621.3.2 面向服务的计算面向服务的计算在传统的软件开发范型中,开发人员获取需求,将需求转化为规格说明,然后再把规格说明转换成满足需求的可执行程序。把规格说明转换为可操作的系统有几种方法,包括瀑布模型、增量开发、面向对象计算(OOC)、基于构件的计算。每一种方法都有它自己的工程过程和技术。6363SOC是一种从OOC和基于构件的计算演化而来的新范型,这种范型把开发者分成独立但相互协作的三方:应用构建者(也

41、称作服务请求者)、服务中介(或发布者)以及服务开发者(或提供者)。服务开发者的职责是开发具有标准接口的软件服务。服务中介发布或市场化可用服务。应用构建者通过服务中介发现可用的服务并使用服务开发新的应用,通过发现和组合而不是传统的设计和编码来开发应用。换言之,应用开发是三方协作的结果。服务与平台无关并且松散耦合,因此在组合服务时,可以使用不同提供者开发的服务。为了确保服务之间的互操作性,已制定许多标准。然而,提供者之间的竞争也非常激烈。6464对于一个给定的服务需求,例如,加密和添加到购物车服务,许多提供者可以实现及发布同样的服务,让应用构建者在它们的应用中使用,因此只有最好的服务才能生存。在S

42、OC中,单个服务是基于标准接口独立开发的。它们被提交给服务中介。在应用运行时,应用构建者或服务请求者动态地搜索、查找、绑定、测试、验证并执行应用中的服务。这种面向服务的体系结构给应用构建者最大的灵活性去选择最好的服务中介以及服务。6565图1.9是一个典型的面向服务的体系结构,图中给出了它的组成部分、服务的注册和请求过程,具体的部件和步骤解释如下:(1)服务提供者使用编程语言如C、C和Java以及面向服务的软件开发环境(例如,.Net、J2EE和Eclipse)开发软构件以提供不同的服务,这些软构件类似于OOC中的类和对象。6666图1.9 一个典型的面向服务的体系结构6767(2)服务提供者

43、在服务中介注册服务并在注册中心发布服务。(3)目前,服务中介使用UDDI或ebXML标准,这些标准为注册和发布Web服务提供标准服务接口。对UDDI来说,注册一个服务所需的信息包括:白页信息:服务提供者的名称、身份证明,例如DUNS号码、联系信息。黄页信息(商业类):行业类型、产品类型、服务类型、地理位置。绿页信息:关于其他Web服务如何访问(调用)服务的技术细节,如API(应用编程接口)。UDDI的白页和黄页类似于电话的白页和黄页。UDDI标准只支持目录,而ebXML同时支持目录和库。6868(4)应用构建者通过互联网查找中介服务注册中心,寻找需要的服务以及如何使用服务所需的说明。服务中介中

44、的本体和分类法可以帮助在请求和注册的服务之间自动匹配。(5)一旦服务中介在注册中心发现一个服务,它就为应用构建者返回服务的详细信息(服务提供者的绑定地址和调用该服务的参数)。(6)应用构建者使用可获得的服务进行组合以生成所需的应用。这是使用服务模块构建大型应用程序的更高层次的编程。在这种方式下,应用构建者不必知道低级编程。6969在应用程序开发平台的帮助下,基于组合服务的应用程序代码可以自动生成。当前应用开发平台包括.Net、J2EE、SOA套件、ActiveBPEL以及IBM的WebSphere(它支持高层次的利用已有服务组合应用)。(7)通过中介发现的服务代码驻留在远程站点,通常是在服务提

45、供者站点,或者如果中介提供服务库则驻留在服务中介站点。SOAP调用可用于访问远程服务。(8)服务提供者站点的服务直接与应用通信并传递服务结果。70701.3.3 面向对象计算与面向服务计算虽然SOC是从面向对象计算OOC发展来的而且它们看起来也相似,但是SOC与OOC在许多方面有所不同。在过去,人们误以为OOC与过程计算没有太大的不同,因为传统的过程语言已经有数据抽象的概念,如结构,它类似于类,以及过程,它类似于方法。尽管OOC看起来与传统的计算相似,但是,设计者用类和对象思考从根本上改变了他们的思维方式。因此,在OOC中出现了许多新的概念和方法,例如设计模式、继承、动态绑定、多态、设计层次以

46、及UML(统一建模语言)。71 71同样,SOC与OOC不同,因为现在的设计师会用服务、工作流、服务发布、发现、利用可重用服务的应用组合以及策略管理思考问题。这些概念确实不同于OOC。进一步,服务可以在Web上或私人库获取,而且一个应用能够在运行时搜索发现新的服务并绑定服务到应用程序上。应用构建者不需要购买安装服务构件(提供服务的软件),相反,应用可以远程访问服务构件,并支付使用的服务,软件升级变得更加容易。一旦服务构件升级,新服务将立即提供给应用程序,节省了客户端计算机卸载并重新安装软件的大量成本。7272软件将根据使用程度收费。因此,用户将不必支付不必要的软件费用。换句话说,SOC提供了软

47、件应用的新模式:当需要使用软件时,以SOC提供的支付模式取代以前的购买安装使用模式。SOC也对系统结构、可信性以及系统的可靠性、安全性、系统重新配置和重新组合等机制产生重大影响。这些机制与OOC有很大的不同。例如,用对象的动态创建和动态绑定取代OOC中的静态组合,SOC允许实时动态组合并在运行时使用被发现的服务。由于新服务将在运行时发现,SOC也需要一个运行时优先级划分及选择机制,这种机制基于实时运行的互操作性评价、测试和其他标准。7373在系统故障或需求变化的情况下,SOC还需要一个分布式重新配置和重新组合的策略。这种策略完全不同于OOC。在OOC中,尽管某些形式的动态绑定可以使用,但必须手

48、动开发代码。目前的OOC动态绑定机制允许多态,也就是说,属于一个类家族的方法在运行时可以相互替代。然而,只要新的服务具有相同的WSDL规范,SOC就允许一个无关服务取代现有服务。在SOC中,通过DCS(动态组合服务),一个错误的服务可以很容易地被另一个已准备好的服务取代。DCS也是一个被监控和可更换的服务。7474关键是每个服务独立于其他服务,因此,更换很自然,只有那些受影响的服务才被关闭。这种方法允许通过这种方法,处理重要任务的应用程序能在最短的时间内得以继续执行。虽然SOC与OOC共享某些概念和技术,如构件设计和构件重用,但SOC的创新很明显。图1.10对比了这两种范型的主要技术和开发方法

49、。7575图1.10 OOC和SOC的概念及技术7676表1.1 OOC与SOC的比较77771.3.4 面向服务的企业面向服务的企业由英特尔的研究人员提出,并被OASIS作为标准的面向服务企业(SOE)是一个通过SOA系统实现的并能向外展示业务过程的一系列技术。SOE为管理采用SOA技术的业务过程提供了一个框架。其核心是,SOE是一个系统结构,支持核心企业计算。一个企业不是一个独立的系统,也不是一个包含所有系统的业务单元,确切地说,它包含了跨越多个公司的所有系统。例如,某州某部队的计算机系统不是一个企业系统,但用于控制和管理国防部主要功能的DoD(美国国防部)系统,却是一个企业系统。大型零售

50、店(如沃尔玛或Target)的供应系统是企业系统的另外一个例子。7878因此,一个企业系统远远大于单个系统,它可能包括多个国家或州的上百个系统。SOE就是一个支持企业级运作的系统。作为一个企业级系统,虽然SOA的传统元素,如查询、发现、接口以及服务调用是参与系统共享的共同元素,但不是SOE的重点。这些元素说明如何构建服务以及如何使用服务,但没有说明服务集如何支持企业的业务过程或一个原子服务在企业内部如何起作用。7979SOE面临的主要挑战是设计企业内部的面向服务的业务过程,并使这一过程是端到端可见并可管理。随着企业内部提供的服务数量增加,定义并跟踪执行模式也变得越来越困难。SOE在SOC中还是

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(面向服务的计算和web数据管理第1章-分布式面向服务计算导引课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|