服务计算概论.docx
- 文档编号:11550132
- 上传时间:2023-03-19
- 格式:DOCX
- 页数:93
- 大小:511.75KB
服务计算概论.docx
《服务计算概论.docx》由会员分享,可在线阅读,更多相关《服务计算概论.docx(93页珍藏版)》请在冰豆网上搜索。
服务计算概论
第一章绪论
§1.面向服务计算概述
1.1服务计算起因和概念
随着经济全球化和电子商务的普及,当代企业必须要面对不断变化的市场条件、激烈的竞争压力、新出台的法规以及新的竞争威胁,从而企业要获得竞争优势就要不断调整其业务模式和需求。
因此,企业应用要能需要根据业务的需要变得更加灵活,能够对业务模式和业务需求的变化迅速做出反应,具有“随需而变”的敏捷性。
这种敏捷性体现在新的业务可以通过组合现有的服务快速构造出来,业务的调整也可以通过调整服务之间的关系迅速改变。
这种应用集成既包括企业内的各种应用系统之间的集成,也包括集团企业总部与下属企业、企业与上下游伙伴之间的业务协同。
但是,构建“随需而变”的应用。
面对怎么样的环境呢?
随需应变的软件应用需要考虑三个因素:
重用、标准化封装和松耦合组装。
重用不仅可以被其它服务或使用者调用,而且可以与其它服务一起组合成新的服务;标准化封装通过提供统一的描述标准,消除软件对语言、平台和厂家的依赖;松耦合组装利用松耦合的组件构造灵活可变的企业应用。
但是,若实现企业应用的快速调整和构造,传统的分布式计算技术存在两大难题:
一是应用程序客户端和服务端之间的紧密耦合问题,以微软的DCOM为例,客户端和服务器端都要求遵循同样的API,一旦一个COM对象代码有改变,那么访问该对象的客户端代码也需要相应的更改。
二是不同应用程序之间的异构问题。
由于企业应用严重依赖计算环境,从而使得同一企业不同应用之间,不同企业应用之间还不能有效地相互集成。
总之,传统架构存在的最大缺陷就是对变化的适应性差,难以适应企业不断变化的业务需求。
构造灵活可变的企业应用系统必须通过建立松耦合的计算环境来实现。
计算环境包含一组计算机、软件平台、协议和相互连通的网络。
在该计算环境中,计算机之间、软件平台之间可以通过网络按照协议实现数据交换和信息处理。
采用标准化的服务描述将企业应用进行封装,通过以编程方式实现的自描述接口,提供服务的核心功能,屏蔽了应用的实现细节,这样可以通过服务描述访问服务构造企业应用。
形象地说就是将软件封装成类似于硬件模块带接口的构件,在接口匹配的情况下可以随时“插入”特定的软件应用完成相应的功能,使服务之间(企业内或跨企业)以松散耦合的形式互联、互操作完成特定的业务需求。
基于服务概念的资源封装和抽象逐渐成为资源发布、共享和应用协同的重要技术基础。
这样,剥离了客户端和服务器端之间的语言/平台依赖,消除了不同应用之间由于采用的不同系统、不同平台和不同语言所造成的异构。
在接口描述不变的情况下,服务实现的任意变更都不会对应用产生影响。
这样,一方面可以将遗留系统封装为服务进行重用,一方面可以直接调用企业外服务提供商提供的服务,从而可使开发者更快速、敏捷地根据企业业务的变化,构造企业应用。
面向服务计算(SOC)是一种新的计算范式,它利用服务为基本构建块,支持异构环境下分布式应用的快速、低成本、便捷的组合。
这种方法的基本思想是通过重用已有的网络服务而不是重新开发来构造企业应用。
重用和组装是这个方法的核心,松散耦合是这个方法的本质。
重用就是使应用系统具有较强的独立性,以便其作为一个“零部件”能随时被单独使用;组装就是高效而灵活地将跨组织、跨平台的应用无缝地进行组合来构造满足企业需求的应用。
松散耦合的目标是使应用系统之间的依赖达到最小,任何应用系统的更改和错误对其他的应用系统没有影响。
服务是自治的,与平台无关的计算实体。
服务是可描述,可发布、可发现的、可以动态组装成分布式的、可交互的、可扩展的系统,服务可以包括从执行简单的请求到复杂的业务流程,该流程要求不同多种层的服务消费者和供应商之间点对点之间的关系。
部署在一个系统中的任何一段代码和任何应用组件都可以重用,并且可以转化为网络服务。
实现这一思想的关键是面向服务架构,SOA是一种合乎逻辑的设计软件系统的方式,通过已发布的或可发现的接口将服务提供给终端用户或者分布在网络上的服务。
一个结构良好、基于标准SOA通过以服务的形式提供独立的、可重用的应用功能和更加健壮的基础,可以赋予企业更加灵活的基础设施和处理环境。
Web服务是当今最有前途的面向服务计算技术,Web服务利用互联网作为传输媒介、利用开放的基于因特网的标准,如简单对象访问协议SOAP作为传输数据、Web服务描述语言WSDL用于服务定义、业务流程执行语言BPEL编排服务。
Web服务解决了以往分布式计算平台的两大难题:
一个是平台之间的互操作问题;另一个是客户端和服务端之间的紧密耦合问题。
它提供一个与操作系统无关、与程序设计语言无关、与机器类型无关、与运行环境无关的平台,实现网络上应用的共享。
服务技术是由作为一个整体的现代社会而形成的,特别是动态业务、医疗、教育和政府服务等关键领域,同时也将不断推动作为一个整体的社会的形成。
通过封装和重用业务的核心功能、增强灵活性、提高技术迁移的适应性、改善操作效率,应用服务技术降低了复杂性和成本。
由于这些原因,面向服务的范型可望得到迅速地应用,由于它解决昂贵的、难以解决的业务和技术问题,将比以往的任何应用技术更具有前途。
Servicestechnologiesarebeingshapedby,andincreasinglywillhelpshape,modernsocietyasawhole,especiallyinvitalareassuchasdynamicbusiness,health,educationandgovernmentservices.Applyingservicestechnologiesleadstoreducedcomplexityandcosts,exposingandreusingcorebusinessfunctionality,increasedflexibility,resiliencetotechnologyshiftsandimprovingoperationalefficiency.Forallthesereasons,itisexpectedthattheServiceOrientedComputingparadigmwillexhibitasteeperadoptioncurve,asitsolvesexpensiveandintractablebusinessandtechnologyproblems,andwillinfiltratemoreoftheapplicationsportfolio,thanpreviousapplicationtechnologies.
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(WebServiceDescriptionLanguage)这样的开放标准。
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(Java2platformenterpriseedition)和微软的.Net。
J2EE由SUN公司在3年前提出,目前至少有40多种实现J2EE规范的服务器。
J2EE为事务性Web应用的开发、部署、运行和管理提供一系列的规范和标准,主要包括JavaServlets,JSP,EJB,JTA,JTS,JMS,JAXP,JMX,RMI-IIOP,JNDI,JCA,JavaMail和JAF规范。
这些J2EE规范为应用服务器的实现提供了一个完整的底层框架和一套标准的规范,在不同的J2EE应用服务器之上的应用操作也可以互操作,移植的风险和代价小。
而微软则在其操作系统之上附加一系列具备中间件功能的软件包来提供应用服务器的相应功能。
微软.Net构建在WindowsDNA技术(如MicrosoftTransactionServer,COM+,MSMQ,SQLServer数据库等)基础上,在.Net中提供了一系列企业级应用服务,为部署、管理和建立基于XML和Web的应用构筑了.Net服务器结构,包括ApplicationCenter,BizTalkServer,ExchangeServer等,它们结合了Windows平台上的一系列开发工具和技术(如VisualStudio,CommerceServer,ExchangeServer等),提供了强有力的应用服务器解决方案。
虽然目前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-OrientedArchitecture),即面向服务架构。
软件架构(SoftwareArchitecture,或软件体系结构),描述了软件系统的蓝图,即,构成一个程序或系统的构件的结构,构件间的互连,以及管理构件的设计和演化的原则和指导。
从技术上看,SOA代表了一种开放的、可扩展的、可联邦的、可组合的设计范型,是软件构件技术在分布计算环境的自然延伸。
SOA的基础设施是已有中间件平台的演化和发展,保留了传统架构的成功特征。
(主要引用面向服务架构第三章内容)
§1.什么是SOA
SOA的理念最初由全球最具权威的IT研究与顾问咨询公司Gartner于1996年提出,但是由于当时的技术水平和市场环境尚不具备真正实施SOA的条件,因此SOA并未引起人们的广泛关注。
进入21世纪之后,Internet风起云涌,越来越多的企业将业务转移到互联网领域,带动了电子商务的蓬勃发展。
为了能够将公司业务打包成独立的、具有强大伸缩性的可跨越Internet访问的服务,人们提出了Web服务的概念,这是SOA实践的真正发端。
到现在为止,还没有一个权威的SOA标准定义,因为从不同角度,不同厂商和学术团队会有不同的答案。
争论定义本身,不是目的。
●OASIS(一个SOA标准组织)给出的SOA定义“SOA是一个范式,用于组织和利用可能处于不同所有权范围控制下的分布式系统。
”
●维基百科给出的SOA定义“面向服务的体系结构(Service-orientedarchitecture)是构造分布式系统的应用程序的方法。
它将应用程序功能作为服务发送给最终用户或者其他服务。
它采用开放标准、与软件资源进行交互并采用表示的标准方式。
”。
这些定义本身,一般人员要准确理解是非常困难的,既便是专业人士,未必能够深刻理解其内涵。
如何更加形象理解SOA?
怎么通俗化解析SOA的核心含义?
事实上,SOA的思想我国很早就有了,印刷术的发展过程其思想就完整体现了SOA的核心含义。
印刷的内容-文字,在秦始皇统一六国之前,各国的文字是不统一的,据说许多常用的文字有十几种写法和读音,妨碍了各国之间的文化交流,就象SOA之前,各种软件平台、各种开发工具和各种接口的组件之间,没有统一的标准,对软件系统之间的整合造成巨大的困难。
因此,伟大的始皇帝统一了六国文字,“书同文、车同轨”就是通过标准解决“复用”和“互操作”等问题。
这也为大规模的印刷和文明发展提供了一个良好的基础,这种“统一封装”的文字,对文化交流起到了一个“互操作”的标准作用。
在没有印刷术之前,书籍要依赖于手工抄写,这样效率当然是非常低下,而且质量也不能获得一致性的保证,也就是书籍还无法“复用”。
中国人首先发明了刻版印刷术,就是将书籍刻成一块一块的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 服务 计算 概论
![提示](https://static.bdocx.com/images/bang_tan.gif)