基于Restful的Web服务组合技术研究_第1页
基于Restful的Web服务组合技术研究_第2页
基于Restful的Web服务组合技术研究_第3页
基于Restful的Web服务组合技术研究_第4页
基于Restful的Web服务组合技术研究_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

1、宁波工程学院本科毕业设计论文1毕 业 设 计(论 文)设计(论文)题目: 基于 restful 的 web 服务组合技术研究 学 院 名 称: 电子与信息工程学院 专 业: 计算机科学与技术 班 级: 计科 071 姓 名: 徐星星 学 号 07401010114 指 导 教 师: 周林华 职 称 讲师 定稿日期: 2011 年 5 月 20 日宁波工程学院本科毕业设计论文2基于 restful 的 web 服务组合技术研究摘要web 服务组合通过重用已有的 web 服务满足用户高质量的应用需求,是面向服务架构研究的热点问题。近年来 web 服务的理论和技术取得了长足的发展,使得利用 web

2、服务组合来满足应用的需求成为可能。然而随着如基于 soap 的 web 服务组合的发展,其不足之处也逐渐显现,主要是它的结构过于复杂,提升了开发及维护的难度。在这种情况下,轻量级的基于 restful 的 web 服务组合诞生了,它不需要 soap 协议及 sdk 的支持,使 web 服务组合更加高效、简洁、可维护。该文对当前 web 服务组合的研究现状进行了综述,分析了restful 的概念和实现框架。关键词:web 服务, restful, 服务组合宁波工程学院本科毕业设计论文3study of web service composition based on restfulabstrac

3、tweb service composition , as a new technology to fulfill the uses requirements using existing ones, has become a pop topic in the research of service oriented architecture(soa).in recent years, the theory and technology of web services has made great progress, its possible to use composition of web

4、 service to meet the needs of the application. however, with the development of web services such as soap, its shortcomings are also gradually appearing, mainly its structure is too complex to develop and maintain. in this case, the lightweight web service composition based on restful is born; it do

5、es not need soap agreement and the sdk support, so that web service composition is more efficient, simple and can be maintained. this essay studies the current status of web service composition, analyzes the concept of restful and implementation framework.key words: web service, restful, service com

6、position宁波工程学院本科毕业设计论文4目录目录摘要摘要.2abstract .3目录目录.4第第 1 章章绪论绪论.61.11.1web 服务的研究背景服务的研究背景 .6 61.21.2web 服务组合存在的问题服务组合存在的问题 .7 71.2.1 web服务组合的挑选问题.71.2.2 web服务组合能力问题.71.2.3 web服务组合的验证问题.71.31.3web 服务组合问题分析及研究目的服务组合问题分析及研究目的.8 81.3.1 问题分析.81.3.2 研究目的.91.41.4论文结构论文结构.9 9第第 2 章章web 服务组合的综述服务组合的综述.112.12.1

7、web 服务组合的基本概念服务组合的基本概念 .11112.1.1 web服务简介.112.1.2 web服务组合的目的、特点和要求.112.1.3 web服务组合的分类.132.22.2web 服务组合的工作原理服务组合的工作原理 .13132.32.3web 服务组合的关键技术服务组合的关键技术 .15152.3.1 xml.152.3.2 wsdl.152.3.3 soap .162.3.4 uddi.16第第 3 章章rest 及其及其 web 服务相关理论和技术服务相关理论和技术.173.13.1restrest 的产生及定义的产生及定义 .1717宁波工程学院本科毕业设计论文53.

8、1.1 rest的产生.173.1.2 rest的简介.173.1.3 资源、标识及表示.183.1.4 rest的设计准则.193.23.2rest 风格的面向资源的架构风格的面向资源的架构 .20203.2.1 资源.203.2.2 面向资源架构的特性.203.33.3restful web 服务优势分析服务优势分析 .2222第第 4 章章基于基于 rest 架构风格的架构风格的 web 服务设计服务设计.244.14.1方案的设计原则方案的设计原则.24244.24.2框架的设计及解决方案框架的设计及解决方案.24244.2.1 uri.244.2.2 restful web serv

9、ices的设计.254.2.3 框架的实现.27第第 5 章章总结与展望总结与展望.295.15.1总结总结.29295.25.2展望展望.2929致谢致谢.31作品使用说明书作品使用说明书.32 宁波工程学院本科毕业设计论文6第第 1 1 章章 绪论绪论1.11.1webweb 服务的研究背景服务的研究背景web 服务技术遵循面向服务架构1(soa: service-oriented architecture)将网络上的成员划分为 web 服务的需求者、提供者和中介者三种角色。并且以各项基于 xml2的标准协议达成异构平台间的整合,利用简单对象访问协议(soap) 3执行、发布和查询服务,以

10、 web 服务4描述语言(wsdl) 5描述服务的应用程序接口,并且通过统一描述发现与整合规范(uddi) 6为服务需求者和提供者提供代理机制。近年来,通过许多已存在的 web 服务的协同组合产生一个新的 web 服务以达成新目的的行为被称之为 web 服务组合,产生的新的组合服务可以作为构成其它组合服务的一个基础服务。通过 web 服务组合可以实现出具备更多新的功能更有价值的企业流程,通过基础 web 服务的组合可以创造出更多更有价值的企业应用服务。目前有很多的企业组织都将它们的核心服务包装成 web 服务的形式放在网络上供服务需求者使用,例 google 的搜寻服务 amazon 的书籍查

11、询服务等。如此通过面向服务架构中介机制的透明化特性,web 服务组合便可以跨越企业组织将各个不同企业所提供的 web 服务加以组合创造出新的更有价值的web 服务。从 web 服务组合使用者的观点来看,web 服务组合的需求规范可以划分为面向过程的规范7 (pos; process oriented specification)和面向接口的规范8 (ios;interface oriented specification)两种。pos 规范包含许多抽象化的 web 服务组件(以服务的功能为基础并不需要实际指定由哪一个服务负责执行)配合企业应用逻辑以工作流程的概念描述这些 web 服务间的协同关

12、系;ios 规范只需要web 服务组合使用者针对所需求的 web 服务组合提供输入和输出的信息,至于web 服务组合中要包含那些 web 服务组件,要以什么样的结构组合这些服务,都是服务设计者的问题,使用者并不需要知道。这两种 web 服务组合需求规范必须以不同的方法来达成,采用 pos 规范的web 服务组合最好是由企业逻辑模型配合工作流程的规划来实现 web 服务的组宁波工程学院本科毕业设计论文7合协同;而采用 ios 规范的 web 服务组合则需通过自动化程序组合方法的使用来达成 web 服务的组合协同。就 web 服务组合发展来看,采用 pos 规范也就是利用工作流程的概念来规划 we

13、b 服务的组合协同仍然是目前最通用的方法,许多的 web 服务汇编语言例如 bpel4ws, wsfl9, wscl, xlang, bpml,bpss, wsci10、wf-xml, jdf, pips 等也都采用工作流程的概念作为协同 web 服务组合运作的方法。1.21.2webweb 服务组合存在的问题服务组合存在的问题1.2.1 web 服务组合的挑选问题由于在 web 服务的架构下,通过 uddi 中介机制每个服务提供方都可以让中介者注册服务,因此在进行 web 服务组合时,对于相同的目的效果可能有许多的 web 服务都可以达成,也就是组合的方式有很多,所以 web 服务在组合是要

14、进行挑选。而对 web 服务组合而言,就不单单只是一个 web 服务的挑选问题,因为随着参加组合的 web 服务数量的增多,有许多的研究从出现的排列组合可行方案就会以倍数成长。从 web 服务的质量上着手,所谓的 web 服务质量指的是 web 服务的执行时间、可靠度、价格等的非功能特性,通过这些非功能特性的评估,让开发者有选择的依据。1.2.2 web 服务组合能力问题web 服务要彼此组合必须输出结果与输入参数的数据类型能够互相配合,并且数据代表的意义要相同,否则 web 服务组合执行的结果就会出问题,而这样的特性被称之为 web 服务的组合能力11。现在一般是在组合时通过语意描述的比对来

15、判断 web 服务的组合能力。1.2.3 web 服务组合的验证问题web 服务组合可以通过组合平台的设计或者程序撰写的方式来开发,无论哪种,在设计 web 服务组合的流程时都有可能发生流程设计的问题例如:死锁、不可达性等。这些问题在 web 服务组合的设计阶段不容易看出来,要等到 web服务组合执行时才会发生,但这时很可能已经产生了很多无法弥补的错误。因此宁波工程学院本科毕业设计论文8在 web 服务组合实际执行前必须对 web 服务组合的流程进行验证。1.31.3webweb 服务组合问题分析及研究目的服务组合问题分析及研究目的1.3.1 问题分析在设计 web 服务组合定义时,web 服

16、务组合开发者通过 web 服务组合平台或以程序撰写方式所设计出来的 web 服务组合流程,则可能发生流程设计上的错误,例如:死锁、不可达性等,这些错误在 web 服务组合的定义设计时很难发现,然而在执行阶段这些错误就会造成 web 服务组合的执行结果输出错误、web 服务组合中的某个成员服务重复执行等严重后果。再者,开发者所设计定义的 web 服务组合流程经常会出现过于繁杂且不必要的流程设计,这些多余的流程设计就会导致 web 服务组合的效率低下,影响速度,web 服务组合的质量也就下降了。所以本课题的研究归为以下两个方面:1在 web 服务组合执行前发现 web 服务组合存在的流程设计错误。

17、要在 web 服务组合实际执行前验证 web 服务组合的流程设计是否存在问题,可以运用模型化工具将 web 服务组合加以建模,然后进行流程状态推演的仿真分析,从而发现流程设计的问题。因此本课题采用 restful 状态思想进行建模将web 服务组合流程加以模型化,主要是验证以下两个问题:死锁在 web 服务组合的执行过程中,若由于流程设计的错误造成输出输入数据的相互占据导致某个成员服务一直无法获得数据的输入以启动服务的执行,则称该 web 服务组合发生死锁问题。可达性由于 web 服务组合仍然被视为一个 web 服务,因此它必须具备一个接收输入参数和一个传送输出参数的位置。无论在 web 服务

18、组合执行的过程中,数据通过流程的设计如何移转,当 web 服务组合执行结束时,输出的数据要到达传送输出参数的位置,代表 web 服务组合顺利完成并产生结果准备输出,并且除了输出参数的位置以外其它的成员服务不应该还拥有相关资料,否则代表该成员服务还未执行或执行完的结果还未输出。满足以上条件的 web 服务组合称之为具备可达性特性,反之则称该组合服务为不可达性。宁波工程学院本科毕业设计论文92如何消除繁杂的不必要的流程设计。对于繁杂且不必要的流程设计可以通过适当的流程简化转换,而达到消除多余流程设计的效果,通过一些新的组合方法的选择可以使原有的设计更加的简便,并且不影响原有的功能。1.3.2 研究

19、目的根据以上的研究问题可以发现,web 服务组合在实际执行前若未经过验证将可能发生死锁、不可达性等问题,这些流程设计问题必须通过建模工具的模拟分析否则将难以在 web 服务组合的设计阶段发现。并且 web 服务组合开发者的web 服务组合流程设计可能过于繁杂而不够简单明了,就会造成 web 服务组合的执行效率很低。为解决以上的问题,本课题提出一个基于 restful 的 web 服务组合方法,以达成以下两项目的:确保 web 服务组合流程设计的正确性web 服务组合实际执行时发生 web 服务互相等待输入消息就会产生死锁问题,就会造成 web 服务组合使用客户的不满,为了避免这个问题,本课题提

20、出一个基于 restful 模型化 web 服务组合的 web 服务组合的流程,通过 restful 状态模拟分析,提前发现 web 服务组合的错误设计所造成的死锁、不可达性等问题,以确保 web 服务组合流程设计的正确性。改善 web 服务组合的执行效率本课题将多个流程简化规则应用在 web 服务组合的简化上,这些简化规则可以在不影响 web 服务组合原有功能的前提下,转换 web 服务组合流程中过于繁杂且不必要的流程设计。通过 web 服务组合流程的简化将可以减少由于繁杂的流程设计所造成的时间浪费达到大大提升 web 服务组合执行效率的效果。而基于 rest 的 web 服务组合就能够解决

21、这个问题,利用 rest 的简洁性能够很大的提升组合的效率。1.41.4论文结构论文结构本论文结构共分为五章,分别描述如下:第一章、绪论:绪论部份描述本课题的研究背景、研究问题和研究目的并且宁波工程学院本科毕业设计论文10说明本论文的结构分布。第二章、web 服务组合的综述:本章为相关技术的概述。主要目的是为本课题所做工作提供相关的基础知识。综述 web 服务组合的基本概念以及 web 服务组合的研究现状。第三章、rest 及其 web 服务相关理论和技术:提出了基于 rest 思想的web 服务组合的模型,总体介绍了 rest 的思想和技术理念。第四章、基于 rest 架构风格的 web 服

22、务设计:介绍了基于 rest 思想的web 服务的具体案例及其实现。第五章、总结与展望:总结自己的论文。宁波工程学院本科毕业设计论文11第第 2 2 章章 webweb 服务组合的综述服务组合的综述2.12.1webweb 服务组合的基本概念服务组合的基本概念2.1.1 web 服务简介web 服务是一种新的应用程序。它是自我描述、模块化的应用程序,可以在web 之间进行发表、定位和调用。web 服务它的功能可以是简单的请求也可以是复杂的商业过程。一旦确定了一个新的 web 服务,其它的应用程序或者其它的 web 服务也可以发现和调用这个的服务,也就是进行组合。web 服务可以看作是一个软件接

23、口,它描述的是一组可以在网络上通过标准的 xml 消息传递或访问的操作。描述要执行的操作或者与另一个 web 服务进行数据交换都是通过 xml 语言的协议来实现的。web 服务所使用的 xml 可以用与平台无关的方式来描述任何的数据,这样便于在系统件进行数据交换。而且,web 服务可以在比较抽象的层面上运行,还可以动态地重新评估、修改或处理数据。所以,从技术层面上讲,web 服务可以更方便地处理数据,并且使得软件更自由地进行信息交换。web 服务是由服务描述和服务实现两部分组成的。服务描述(service description)用于描述服务调用的接口信息等,如服务的数据类型、操作、绑定信息、

24、网络位置等。此外还可以方便服务请求者发现和利用已分类的数据或者其他的元数据。服务及服务描述的实现,是一个软件模块,部署在可以通过网络访问的服务平台上,供用户使用。2.1.2 web 服务组合的目的、特点和要求web 服务组合,是指从互联网中选取相对简单、可用的 web 服务并将它们重新组合成新的服务的技术。组合后的新服务被称为复合服务;用于组合复合服务的子服务称之为构件服务。web 服务组合是一个新兴的研究领域,很多研究人员在组件技术和工作流技术等领域已经做出了大量的研究。通过软件重用和工作流的业务协同处理,人们可以迅速构造满足客户需求的新的功能更好的应用系统宁波工程学院本科毕业设计论文12。

25、web 服务组合的目的是利用一组相关的服务来共同完成某一个功能过程,实现一定的用户目标。服务组合的实现主要要解决以下问题:1灵活性支持。服务是动态、多变的,所以要求服务组合要高度灵活。由于为了完成某一过程而涉及的服务处于不断变化中,不断有新的服务加入,同时也要淘汰一些服务;一些服务的形式也是不断变化的,所以服务组合需要灵活的选择和使用。2客户化。服务组合的目的是为了满足客户的需求,因此服务组合的方式要易于用户使用的。实际应用中客户与服务提供者处于不同的环境,它们之间的背景可能存在较大的差异。因此,为了适应客户的需求,需要提供一种良好的组合方式 ,使得客户可以不必了解服务提供者和服务的细节,就可

26、以方便有效地使用相关的服务。3可靠性保障。由于 web 服务组合处于一个快速、多变的环境中,因此需要对协同过程提供可靠性保障,这样就不会因为其中的某个服务的异常而中断全部,同时确保服务组合执行的事务性,这样可以保障电子商务过程的完整、安全有效的执行。与传统的工作流集成相比,服务组合有以下特点:1服务的空间更大。服务提供商是遍及因特网的,服务是动态更新的,新服务可能不断的加入,服务的具体能力也是不断完善的。2可能有多个服务提供商提供类似的服务,这些服务可能在某些和功能没关的方面存在差异,比如服务的质量、价格等;对于不同地域的用户来说,同一个服务可以提供不同的服务质量。3服务组合能够根据客户的需求

27、动态调整,并且根据客户的需求选择不同的具体服务。4基于因特网的服务组合要考虑比传统工作流集成更多的因素,比如安全、数据格式转换等。web 服务组合必须满足一定的要求,这些要求也成为了 web 服务组合中的研究难点。它们主要包括:1能够动态地发现一些满足需求的基本服务。2对于发现的与服务组合相关的各种服务组件和基本服务,定义它们的逻辑和时序关系,来实现自动化的 web 服务组合。宁波工程学院本科毕业设计论文133能够对复合服务进行安全控制和事务处理。4保持语义信息,验证和测试复合服务,确保 web 服务执行的正确性。web 服务组合应该具有高可用性,高可靠性和高度自适应性。2.1.3 web 服

28、务组合的分类在 web 服务组合中,存在构件服务和复合服务两种形式,构件服务是一种可以直接调用、不依赖其它服务的服务。复合服务就是将构件服务或者其它复合服务组合起来完成一个复杂功能的服务。通常意义上讲,web 服务组合可以分为两类:静态组合和动态组合。在静态组合中,复合服务在设计阶段就被定义。组合过程对于服务请求者来说是看不到的;服务请求者可以像调用构件服务那样调用复合服务。比如一个天气预报查询系统,它应该包括天气的查询,地区的查询。由于这项复合服务的使用频率比较高,服务提供者若将这两个服务先集成在一起更符合应用的需要。动态组合是指在运行时刻选择和调用所需服务然后将它们组合为一个复合服务的过程

29、。例如一个商务旅行管理系统,它通过与机票管理、酒店管理、线路管理、租车管理等系统的协作为客户安排旅行事宜。像这样的一个复合服务不可能事先就把它所需的构件服务和它们之间的工作流定义好,而是应该根据特定的情况进行交互。将一个服务设计成动态的还是静态的,这取决于复合服务的性质及其应用的范围。如果复合服务本身是希望与合作伙伴之间有一个比较固定的关系,并且它的构件服务不怎么进行改动,那么静态组合就比较合适。相对地,动态组合适用于那些特定复合服务用的较少,同时它的构件服务也不十分稳定的情况。不过,动态组合可以更好地利用构件服务的当前状况,并根据实时参数在运行时进行优化。2.22.2webweb 服务组合的

30、工作原理服务组合的工作原理web 服务主要是基于服务的消费者、注册中心及提供者三者之间进行交互。交互操作一起对 web 服务软件模块提供功能服务,下图 2-1 就是 web 服务的这种面向服务的体系结构 soa ( service-oriented architecture)的结构图。宁波工程学院本科毕业设计论文14图 2-1 soa 体系结构从图 2-1 中可知 soa 三角色之间存在发布、查询和绑定三种类型的操作,每个操作完成对应的功能:发布,就是服务提供者将其服务在注册中心进行注册,以访问接口的形式让用户知道自己的功能。查询,服务查询也可以称作服务发现,就是在服务提供者在注册中心中注册完

31、自己的服务后,服务的消费者就可以在注册中心去查询到自己需要的服务。绑定,服务消费者在注册中心查询到了自己需要的服务后,与提供此服务的服务提供者进行绑定来请求相关的服务。web 服务三角色之间的三种相互操作的互操作性是通过协议栈来实现的。和网络的分层结构相似,协议栈上层是根据它的下层所提供的功能来建立的。一种简单形式的协议栈包括 http,soap 及 wsdl,对于这种协议栈的 soa 体系结构如下图 2-2 所示:图 2-2 基于协议栈的 soa 体系结构宁波工程学院本科毕业设计论文152.32.3webweb 服务组合的关键技术服务组合的关键技术2.3.1 xmlxml(extensibl

32、e markup language)是一套定义语义标记的规则。同时,也是一种对其它的标记语言进行定义的句法语言,而其它的标记语言是与某种特定领域相关的,也是语义的、结构化的。xml 是以 sgml 为基础发展起来的,相当于它的一个简化子集,不仅集成了从 sgml 那里继承的丰富功能之外,而且集成了 html 语言所具备的易用性特性。它对数据结构的定义是开放式的和自描述式的。xml 给应用程序及用户提供组织化的数据是一种友好的、可操作的方式。xml 有如下几个方面的特点:在网络数据交换中,xml 是作为一种统一格式。xml 一开始是一种文档描述语言,是一种数据交换格式,所以说,xml 本身就是一

33、种基于 sgml 的符号语言。同时,对于互联网上的数据交互而言,xml 也是一种不错的解决方案,所以除了作为一种专门的文档描述语言外,还广泛应用于互联网中很多领域的数据交换。xml 对数据描述而言功能非常强大。xml 可以解决文本传输过程出现的文字代码不同引起的阅读问题,所以相比其它的以文本形式的数据描述语言来说,xml 语言可以做到让数据以文本的形式在不同的平台之间进行交互。xml 是一种元语言。正因为 xml 可以作为一种元语言,所以可以用它来定义其它的新的语言,同时也因为它是元语言,所以也就可以成为当前很多的应用的基础描述语言。2.3.2 wsdlwsdl 是指 web 服务描述语言(w

34、eb service description language),是程序员描述 web service 的手段。wsdl 是用 xml schema 来定义的,能够对多种语言实现的服务接口进行描述。它将 web 服务定义为网络端点的集合,使用类型、端口等元素来描述服务的接口。请求者就可以知道服务需要哪些数据类型、传输协议等,这样就实现了对 web 服务的调用。宁波工程学院本科毕业设计论文16随着通信协议及消息格式的标准化,以结构化的方式来对通信信息进行描述也已经成为可能,同时也越来越重要。wsdl 利用 xml 同一种通信端点集合来描述网络服务,它能够支持网络上的信息交换。wsdl 文档以网络

35、端点或网络端口的集合方式来对服务进行定义。从端点和消息的抽象定义可以知道,它已经脱离了具体的数据格式和通常的网络部署。2.3.3 soapsoap 是指简单对象访问协议(simple object access protocol),是应用于 web之上的一种简单的轻量级协议12,其目的是为了实现以基于 xml 的方式来对结构化及类型信息进行交换,提供了一种在应用程序与 web 服务之间的通信手段,这样就实现在异构平台之间实现互操作性。soap 的设计目标就是简单并使功能最少化。由于在此协议上定义了一个对消息进行处理的框架,此框架的定义之中没有包含任何传输语义或应用程序。这样就使协议本身是模块化

36、的,还可以进行更好的可扩展。在当前标准的网络协议之上,本协议能够很容易地被那些支持标准的 internet 协议的系统所理解。所以,基于 soap 的 web 服务虽在其结构上十分地简单,但在功能却很强大,这源于其设计的简单化。soap 协议主要由多个部分组成。可扩展信封是第一部分,是封装数据所必需的。信封对 soap 消息进行了定义,也是消息之间交互的基本单位。2.3.4 uddiuddi 指统一描述、发现和集成协议13(universal description,discovery and integration) ,可以为 web service 提供宿主。它是 web 服务的关键技术,

37、可以提供服务的发布与查询 14。uddi 是以实现全球统一目录为目标的,对公共的 web 服务进行维护。缺少uddi 的话,web 服务对于服务提供者来说就无法发布,也就无法来对相应的 web 服务进行查找,就实现不了远程的 web 服务调用。所以,有了 uddi,web服务提供者就可以通过 uddi 来注册自己已有的 web 服务,服务请求者可以通过 uddi 查找所需要的 web 服务。宁波工程学院本科毕业设计论文17第第 3 3 章章 restrest 及其及其 webweb 服务相关理论和技术服务相关理论和技术3.13.1restrest 的产生及定义的产生及定义3.1.1 rest

38、的产生rest 的概念是 2000 年在 roy fielding15,16在其博士论文architectural styles and the design of network-based software architectures中首次提出的。当时他提出的 rest 概念并没有得到太多的关注与认知。但是 web 服务技术的发展,rest 现在已经受到极大的关注,并已经出现在很多支持 rest 理念的框架。在 rest 之前,web 应用大部分都是基于 b/s 模式来进行开发的。b/s 架构模式包括一些基本规范:客户-服务器、无状态性及缓存。这些规范的制定使得其部署十分地便捷,所以一直以

39、来很受欢迎。但随着应用地开展,其在用户体验方面的不足也表现出来了。rest 理念的引入正好改善了这种状况。3.1.2 rest 的简介rest 在以上原有的 b/s 规范(客户-服务器、无状态性及缓存)的基础上新增了另外三个规范:统一接口,分层系统和按需代码。统一接口:就是指 rest 通过统一的链接接口对相应资源进行操作。这里的资源是指 rest 将网络上所有的信息都可以看作是某种资源。这样既有了更好的解藕性,也使系统更加地简化,进而使系统具有更高的可重用性及交互性。rest 以 uri 来确定资源,其充分地发挥了 http 本身具备的分布式特性,将 http提供的四种基本方法(get, p

40、ost, put 及 delete)分别对应资源的操作(查询、创建、修改及删除)。分层系统:可以使系统本身的各层之间具有更好的独立性,降低了系统的复杂性。通过良好的封装就能使新的功能服务与旧的功能服务之间免受影响,从而达到更好的可伸缩性。按需代码:这是 rest 的一个可选的规范约束,其允许在客户端进行功能的扩展。宁波工程学院本科毕业设计论文18从以上介绍易知,rest 其本身只是一种针对分布式超媒体系统设计的一种架构风格,并不是一种标准。web 架构其实就是各种规范的集合,新的架构就是在原规范基础上加入新的规范,rest 也是这样。rest 就是原有的 web 规范的基础上增加了三个新的规范

41、所形成的一种新型的架构风格。3.1.3 资源、标识及表示“资源”在 rest 的架构中是一个很关键的概念。换句话说,理解了资源也就理解了 rest。资源主要是由三个元素组成17的:nouns。对于网络上的 uri 来说,其就是表示不同种类的资源,如一首非常流行的摇滚音乐,一部备受好评的电影,又或是一张非常精美的图片,再或是一篇很搞笑的网页小说故事等等,这一切都是资源,尽管这些资源存放的不尽相同。这里的 nouns 其实就是指 uri,指的是与唯一资源相关联的 uri地址。理论上来讲,一个资源对应一个 uri,用多个 uri 来同时表示唯一一个资源是不合理的。content types。由上文可

42、知,uri 即代表着资源的地址,而 rest 里面的资源都有它特有的概念,而不单单只是表示如 txt 或 xml 等这样的一个文件。同一个资源因为可能存在多种不同的表现形式,所以也就可能存在多个 uri 指向同一个资源的不同的表现形式,但是都是指向同一个资源本身的情况。这种不同的资源表现形式就是这里的 content types。也就是说,这里的 content types 与资源文件既相关又有不同,代表着资源的一种表现形式,一个资源可以有多种表现形式,多种表现形式可以用来表示同一个资源。verbs。就是提的对资源的操作方式。众所周知,对于数据库而言,对数据的处理只有四个基本动作,即经典的 c

43、urd(get、post、put 及 delete),分别对应数据库数据的一种操作(查询、创建、修改及删除)。我们对数据处理的所有操作,不管是简单的还是复杂的,都是由这四个基本操作所组成的。其实,对于上文提到的资源的操作也是一样的,对于 web 应用而言,每个uri 其实都指向一个资源,所以通过 uri 所产生的 http 请求的各种操作也是基于以上四种基本操作的。即网络本身就可以看作一个超大的资源数据库,所以对资源的操作与数据库一样,超不出以上四种基本的动作。“标识”即资源标识(resource identifier),是用来对每一个确定的资源进行宁波工程学院本科毕业设计论文19标识。res

44、t 中对与资源相关的一组值进行处理是通过一个通用的接口来实现的,不与成员函数的定义及用来作请求处理的软件的类型相关,这里的处理包括值的存取与操作。资源的标识必须保证此标识不能因时间的变化而发生更改。rest 里的资源要求服务提供者选择一个与该资源最合适的标识来对其进行标识。“表示”即一系列的字节数据与用来表示这些字节数据的元数据。一个表示通常可以包括数据与元数据,也可以包括用来对元数据进行描述的元数据。3.1.4 rest 的设计准则rest 风格架构的设计应该具备一些基本的设计准则:(1)网络上的所有事物都被抽象为资源(resource),每个资源对应一个惟一的资源标识符18:资源能成为资源

45、的必要条件是:每个资源必须用 uri 标识,使资源可定位,也因此使缓存成为可能。超文本系统、http 和 internet 分层协议之间是不能交流的,uri 把所有这些协议集成到了 web 中。资源用 uri 命名,资源通过 uri 定位,uri 中不仅包含资源的地址,还包含对资源的操作指令,服务器端则根据 uri 中的指令确定客户请求的处理方式。因此,这里的 uri 不是单纯的网址19。在定义了资源后就要考虑如何去表述资源。表述是资源的当前状态(应客户请求返回的网页),对 rest 风格的服务来说表述是超媒体,表述中不仅包含着当前资源的信息,还包含了相关资源的链接。表述具体涉及资源的数据及数

46、据格式。可用于表述的超媒体格式有多种,如:应用 xhtml+xml、应用 atom+xml、应用 json。(2)统一接口:rest 是基于 http 协议的,任何对资源的操作行为都是通过 http 协议来实现的。http 把对一个资源的操作限制在 4 个方法以内:get、post、put和 delete,简称为 crud 操作。在 rest 风格的架构中,要求所有服务按照http 标准方式使用上述方法。(3)对资源的各种操作不会改变资源标识符:由于资源和 uri 是一一对应的,执行 http 操作的时候 uri 是没有变化的,这和以往的 web 开发有很大的区别。正由于这一点,极大地简化了

47、web 开发宁波工程学院本科毕业设计论文20,也使得 uri 可以被设计成更为直观地反映资源的结构。(4)所有的操作都是无状态的:rest 中的无状态是指仅有一种状态,在服务器组件上不允许存在会话状态,从客户端发到服务器的每个请求必须包含理解请求所必需的全部信息,不能利用任何保存在服务器上的上下文(context),会话状态全部保存在客户端。3.23.2restrest 风格的面向资源的架构风格的面向资源的架构rest 只是一个架构的风格,不是一种架构,没有所谓的 rest 架构。总结rest 的特点,它将 web 看做是资源的集合。所以说符合 rest 风格的架构是一种资源和资源之间的联系作

48、为主要研究的架构。3.2.1 资源资源的名称uriweb 上的一个资源能够被看到,是因为它有至少一个 uri。uri 是资源的名字和地址。如果一段信息没有一个 uri,则它不是一个资源,并且不是真正在 web 上,只能算作描述资源的数据。uri 应该具有描述性。资源及其 uri 应该给人以直觉上的关联。资源的表示在把应用分解为资源的同时,也增加了应用暴露的“表面积” ,用户可以自己构造适当的 uri 直接进入你的应用的某一特定的状态。但是这些资源不是数据,它们只是服务设计者为了把数据分解成为类似“有关 rest 的信息”的想法。web 服务器无法发送给你一个想法;它只能发送采用特定文件格式的字

49、节序列,这就是我们所说的资源的表示。资源间的链接表示一般是序列化的数据结构,目的是为了取得其中的数据。当时在大部分的 rest 式的服务里面,表示是超媒体类型(hypermedia)的,表示不仅包含数据,还包含指向其他资源的链接。服务器通过超媒体告知客户端当前有那些后续状态可以进入。宁波工程学院本科毕业设计论文213.2.2 面向资源架构的特性rest 是一种使用非常广泛的软件架构风格,是一种设计的原则。当用这个设计原则来指导 web 设计,并且使用如 http 机制,uri 结构等技术实现的时候,它就是面向资源的架构(resource 一 oriented architecture roa)

50、。web 服务和网站的不同在于客户端的能力大小不同,web 服务的用户是预先编好的客户端。web 服务和网站都受益于 http,uri,xml 的面向资源的设计(resource-oriented)。资源是某个可以存放在计算机上并体现为比特流的事物。可以是一个实物,也可以是一个抽象概念。只要你决定它有被引用的必要,那么它就是一个资源。资源概念是 roa 的核心概念。前面已经对资源进行了详细的研究,下面分析了面向资源架构的特性:可寻址性如果一个程序将它的数据集有价值的方面暴露为资源,则它是可寻址的。由于资源通过 uri 来暴露,则一个可寻址的程序对每个它想服务的信息片段暴露一个 uri。这通常是

51、无限多的 uri。对于 rest 式的 web 服务而言,它们暴露的 uri 有无数个;而对于 rpc 式的 web 服务而言,它们暴露的 uri 数量很少,一般是仅仅有一个。无状态性无状态性意味着每个 http 请求都是完全孤立的。当客户端发出一个 http请求时,请求里包含服务器实现该请求所需的全部信息,服务器不依赖任何之前请求提供的信息。假设本次请求需要之前某个请求提供的信息,那么客户端应当把那个信息也包括在本次请求里。更实际的,从可寻址性方面来考虑无状态性。可寻址性要求:服务器所能提供的每一则有价值的信息都应该作为资源来发布,而且每个资源都有自己的 uri。无状态性要求:服务器可能的状

52、态也是资源,也应该有自己的 uri。客户端不必为了让某个请求可被服务器接受而诱使服务器进入某状态。连通性服务器通过超媒体告诉客户端当前状态有哪些后续状态可以进入。搜索结果里的“下一页”链接就是起这种“推进状态”的作用。这种“具有链接”的特性为连通性。假如你通过跟随链接和提交表单就能改变一个 web 服务的状态,那么这个 web 服务就是连通的。连通性要求资源应当通过它们的表示彼此链接起宁波工程学院本科毕业设计论文22来。统一接口在 web 上,能对资源采取的仅限于一些基本的操作。http 提供了四种基本方法,用于最常见的操作。get 用于获取资源的一个表示;如要创建一个新资源 ,则向一个新 u

53、ri 发送 put,或者向一个已有的 uri 发送 post;向已有 uri发送 put 是修改已有资源;delete 是用于删除已有资源。当然 http 还有 head、options、trace 等方法也可以纳入统一接口的范围,但不常用。3.33.3restfulrestful webweb 服务优势分析服务优势分析fielding 在其论文中首次提出了 rest 的基本理念。对于 rest 而言,其与全栈式的 web 服务有所不同,其不同主要有三个方面的原因:1)rest 就其核心抽象来说,不是在于远程的调用上,而是在于远程资源上。2)rest 只是一种架构风格,是在当前的 web 规范

54、的基础之上添加其它的新规范所形成的,所以在标准方面,rest 还是采用 internet 相关标准,如:http。3)rest 提出的只是用来解决常见问题的理念,没有对所有可能的场景。下面就对基于 rest 的 web 服务与当前传统的基于 soap 的 web 服务进行比较。主要是从以下三个方面(效率和易用性、安全性及应用设计与改造)对它们进行比较分析:1)效率和易用性。消息体及消息头的定义使 soap 协议有很好的可扩展性,如消息头的定义为各种互联网的相关标准的可扩展提供了基础。另一方面,随着需求的不断膨胀及不断地追求对 soap 的扩充以满足新的需求,最后带来的显然只有性能上的不断下降,

55、在其易用性上与学习成本方面也会带来相应的影响。相比 soap 复杂度的增高,rest 以其高效、简洁、易用的特性引起了人们的广泛重视。这种高效特性既源于 rest 充分地利用了 http 协议本身的分布式特性及最初的设计理念,也源于其在资源接口的设计与操作的抽象化上使开发更简易。其实 rest 对于 web2.0 前端技术的支持对开发而言必将带来更高的效率。例如 rest 可以支持多种资源表示形式(如 xml、json 等),这就给前端开发人员提供了更大的数据选择及操作处理前的便利。宁波工程学院本科毕业设计论文23综上所述,就效率与易用性上而言,显然 rest 相比 soap 要更强一些。2)

56、安全性。对于当前网络应用而言,安全始终是需要关注的话题,而且很多时候需要提到很高的高度上来,特别是针对一些特定的场景(如以第三方的外部接口形式发布时)而言。soap 通过 ws-security(基于 xml-security 和 xml-signature)来实现其对安全方面的控制,同时其当前已经得到了各大厂商、种类语言环境的广泛支持。相比 soap 而言,rest 在安全方面还没有制定任何规范,当前的一些大型网站对 rest 的安全性保障要么是以安全信息封装的形式要么是依靠硬件上的 ssl 来进行保障,但都不能比较有效地解决安全上的漏洞,比如 ssl 对于多点传输就无法保障。3)应用设计与

57、改造。相对于传统的设计思想而言,要接受 rest 的转变会有一段适应的时间,因为当前系统中很可能同时存在有两种服务,一种是新设计并创建的服务,另一种就是那些存在的并需求向外发布的那些服务。另一方面,rest 在针对资源型的服务构建上会相对更容易一些,而对于那些非资源型的复杂服务接口而言,soap 可能相比 rest 会更合适一些,否则就有违 rest 思想的初终了。综上所述可知,就跨平台性、分布式特性而言,rest 与 soap 是不冲突的,另外 rest 还更具有高效、简洁、易用的特点。另外从应用上讲,rest 更适合资源型服务接口的实现,在对于那些非资源型的复杂服务接口而言,soap 可能

58、相比 rest 会更合适一些。宁波工程学院本科毕业设计论文24第第 4 4 章章 基于基于 restrest 架构风格的架构风格的 webweb 服务设计服务设计前面讲述了传统的 web 服务存在哪些问题,对 web 进行了综述,也对 rest 式 web 服务进行分析也研究。接下来我们来实现一个真正意义上的基于 rest的 web 服务。目前存在的 rest 式的 web 服务不多,而且也仅仅是部分满足 rest 风格,比如说实现一个天气预报的查询系统,来供用户使用。4.14.1方案的设计原则方案的设计原则方案设计的一般目标是设计一个动态的可伸缩的系统,能够随着功能需求的变化而方便地扩展,能

59、够保证运行的稳定性和可靠性。一个好的设计方案应尽量满足以下准则:重用性:能够重用以前的代码和设计,从而避免重复劳动,降低成本,提高开发效率。可扩展性:在保持结构稳定的前提下,很容易进行扩充。简洁性:易于理解、学习和维护,各层次、模块间的交互尽量简洁,将复杂的操作封装在模块内部,呈现给用户的只是接口或者抽象类方法。性能:选择合理、成熟的框架技术和组织形式,保证系统的性能的可靠性。安全性:安全是任何系统都需要考虑的重要因素。在方案设计时就需要考虑系统的安全性,而不是等到实现时再引入安全机制。总之,方案设计是系统开发的骨架,通过方案设计,能使开发人员清楚地把握系统的组织结构和相互关系,从而方便以后的

60、应用开发,本文提出的基于 rest 式的 web services 的开发都符合上述准则。宁波工程学院本科毕业设计论文254.24.2框架的设计及解决方案框架的设计及解决方案4.2.1 uri采用 rest 原则进行 web services 设计的一个重要思想转变就是以 uri 设计为中心,实现资源与 uri 之间的一一映射,下面分析 uri 的设计原则和 uri 映射原理。uri 设计原则:在 rest 看来服务器上的所有事物都是资源,uri 是基于业务逻辑而不是技术的,定义良好的 uri 与抽象资源一一对应是非常重要的任务。uri 设计可遵循如下的原则:uri 是统一的,用路径变量表达良

温馨提示

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

评论

0/150

提交评论