




已阅读5页,还剩77页未读, 继续免费阅读
(计算机应用技术专业论文)基于rest的轻量级j2ee架构实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
浙江大学硕士学位论文摘要 摘要 本文针对基于j 2 e e 平台的w e b 应用,在整合各种框架的基础上,在一个更 高的层面分析了传统的j 2 e e 架构( 即以e j b 容器为核心的j 2 e e 架构) ,包括经典 e j b 架构以及本地e j b 架构,和以s p r i n g 框架为代表的轻量级j 2 e e 架构,提出 了他们各自的局限性和不足。 以x m l 中间件,x 札w e bs e r v i c e 为切入点,通过引进r e s tw e bs e r v i c e 的概念,在此基础上提出了基于r e s t 的轻量级架构。本架构是通过r e s tw e b s e r v i c e s 模型来实现的s e r v i c e - o r i e n t e da r c h i t e c t u r e ,在以实现高效性,配 置的灵活性,安全性,易用性和实用性,可移植性的目标为基础上,进行了详尽, 全面地设计,并对该系统的实现进行了分析。在物理意义上把整个架构划分成w e b 层和r e s o u r c e 层,进行了总体的设计,在功能意义上把整个架构划分成若干个 功能模块。不光在理论上论述了该架构的可行性、优越性,并实际通过组件开发 的模式给出具体的设计和实现。本文重点介绍了各个组件的功能点,并设计了对 外的接口。通过这个项目的实践,在传统的j 2 e e 开发模式上面作了尝试,并和 现存的一些轻量级j 2 e e 架构进行了比较,为今后类似的系统开发提供了参考。 最后,通过实际项目的运用,充分验证了新架构在高效性、配置的灵活性、 可测试性、安全性、易用性和实用性和可移植性上有着独特的优势。 关键词x m l ,r e s t ,l i g h tw e i g h t ,f r o n tc o n t r o l l e r 浙江大学硕士学位论文 a b s t r a c t b a s e do nt h ej 2 e ew e ba p p l i c a t i o np l a t f o r m ,i nt h ef r a m e w o r ko fi n t e g r a t i o n o nt h eb a s i so fv a r i o u sa r c h i t e c t u r e s t h i st h e s i sa n a l y s et h et r a d i t i o n a l j 2 e ea r c h i t e c t u r e ( t h ej 2 e ea r c h i t e c t u r eu s i n ge j bc o n t a i n e ra st h ec o r e c o n t a i n e r ) ,i n c l u d i n gt h et r a d i t i o n a le j ba r c h i t e c t u r ea n dt h el o c a le j b a r c h i t e c t u r e ,a n dt h el i g h t w e i g h tj z e ea r c h i t e c t u r e ( e s p e c i a l l yf o rt h e s p r i n gf r a m e w o r k ) i nah i g h e rl e v e l ,a n dp o i n t so u tt h e i rl i m i t a t i o n sa n d i n a d e q u a t e t h i st h e s i su s e sx m lm i d d l e w a r e ,x m lw e bs e r v i c ea st h ee n t r yp o i n t s , i n t r o d u c e st h el i g h t w e i g h tj z e ea r c h i t e c t u r eb a s eo nt h er e s ts e r v i c ei n t h ec o n c e p t i o no fr e s tw e bs e r v i c e t h ef r a m e w o r ki sas e r v i c eo r i e n t e d a r c h i t e c t u r eb a s e do nt h er e s tw e bs e r v i c e sm o d e l w i t ht h eg o a lt oa c h i e v e h i g he f f i c i e n c y ,c o n f i g u r a t i o nf l e x i b i l i t y ,s a f e t y ,e a s eo f u s ea n d p r a c t i c a l i t y ,p o r t a b i l i t y ,t h i st h e s i sg i v e sa d e t a i l e da n dc o m p r e h e n s i v e d e s i g n ,a n da l s og i v e st h ei m p l e m e n t a t i o no ft h ew h o l es y s t e m i np h y s i c a l l a y e r ,t h ew h o l es y s t e mi sd i v i d e di n t ow e bt i ea n dr e s o u r c et i e ,w i t h a no v e r a l ld e s i g n i nf u n c t i o n a l i t yl a y e r ,t h ew h o l es y s t e mi sd i v i d e d i n t os e v e r a lf u n c t i o n a lm o d u l e sa n df u l l yi m p l e m e n t e db a s e do nt h ep a t t e r n o fc o m p o n e n tb a s e dd e v e l o p m e n t t h ef u n c t i o n a l i t yp o i n tf o re a c hc o m p o n e n t i sw e l li n t r o d u c e d ,a n dad e t a i l e dd e s i g nf o rt h eo u t s i d ei n t e r f a c e si s a l s og i v e n t h r o u g ht h i sp r o j e c t ,s o m e t h i n gh a sb e e n t r i e di nt h e t r a d i t i o n a lj 2 e ed e v e l o p m e n tm o d e , a n dc o m p a r e dw i t hs o m ee x i s t i n g l i g h t w e i g h tj 2 e ea r c h i t e c t u r e ,w h i c hc a np r o v i d ear e f e r e n c ef o rt h e f u t u r ed e v e l o p m e n to fas i m i l a rs y s t e m f i n a l l y ,t h r o u g ht h eu s a g eo ft h ea c t u a lp r o j e c t ,f u l l yd e m o n s t r a t i n gt h e u n i q u ea d v a n t a g e f o rh i g he f f i c i e n c y ,c o n f i g u r a t i o nf l e x i b i l i t y , t e s t a b i l i t y ,s e c u r i t y ,e a s eo fu s e ,p o r t a b i l i t ya n dp r a c t i c a l i t yo ft h e n e wa r c h it e c t u r e k e y w o r & x m l ,r e s t ,l i g h tw e i g h t ,f r o n tc o n t r o l l e r i i 浙江大学硕士学位论文图目录 图目录 2 - 1x s l t 输入和输出的树状结构7 2 2 客户请求某航空公司7 4 7 飞机的服务 2 3f r o n tc o n t r o l l e r 的类结构 2 - 4f r o mc o n t r o l l e r 的业务流程 3 1j 2 e e 标准组件框架 3 - 2e j b 的工作原理 3 - 3 经典e j b 架构 3 4 本地e j b 架构 3 - 5 基于s t r u t s ,h i b e r n a t e 和s p r i n g 的j 2 e e 框架 3 - 6 基于r e s t 的j 2 e e 架构之w e b 层流程 1 4 2 0 2 2 3 7 基于r e s t 的j 2 e e 架构之r e s o u r c e 层流程4 1 4 - l 基于r e s t 的j 2 e e 架构之w 曲层s e q u e n c e 图4 4 4 2 基于r e s t 的j 2 e e 架构之r e s o u r c e 层s e q u e n c e 图4 5 4 - 3 基于r e s t 的j 2 e e 总体架构 4 - 4f r o n tc o n t r o l l e r 接口定义图 4 - 5f r o n tc o n t r o l l e rs e q u e n c e 图。 4 - 6a u t h o r i z a t i o n 接口定义图 4 7f o r mv a l i d a t o r 接口定义图 4 - 8f o r mv a l i d a t o rs c h e m a 图 4 9r e s tc o n t e x tb u i l d e r 接口定义图 4 1 0r e s tc o n t e x tb u i l d e rs c h e m a 图 4 1 1x m l 2 s q l 接口定义图 4 1 2r e s u l t s e tx m l 接口定义图 4 1 3x s l e n g i n e 接口定义图 4 1 4x s le n g i n e 功能流程图。 4 1 5r e s ts e r v i c e 接口定义图。 5 - 1t r a d i n gc o m p e t i t i o n s y s t e m 5 - 2p o r t f o l i o 的p r o t o t y p e 页面 1 4 6 4 8 4 9 5 0 5 7 5 8 6 0 6 1 6 6 6 9 7 1 拐巧”勰 铉铉鲐铂 图图图图图图图图图图图图图图图图图图图图图图图图图图图图 浙江大学硕士学位论文第1 章绪论 第1 章绪论 1 1 引言 随着企业级应用的发展,从w e b 应用系统到j 2 e e ( j a v a2p l a t f o r i l l e n t e r p r i s ee d i t i o n ) 领域已存在众多框架。框架是一些经过实践证明的、能用 来开发高效应用系统的技术,基于框架的解决方案能够弥补j 2 e e 的不足。在j 2 e e 中引入框架就是把j 2 e e 中的某种服务抽取出来,使之变得更简单易用。框架的 使用对开发者来说是透明的,即框架不会过多干涉程序代码,它使得开发人员更 专注于业务逻辑的开发。在系统架构分析时,如何应用这些已有框架为系统量身 定做一个合适的架构,对j 2 e e 设计开发者提出了挑战。 传统的j 2 e e 架构是基于e j b 而实现的,通常认为,j e e e 平台就广泛的认为 是这个架构,运行在j 2 e e 服务器上的e j b 容器可以认为是此结构的核心。e j b 所 提供的一堆重量级的企业服务,使开发的组件可以很好地集成e j b 容器提供的企 业级服务,如j t a 、j m s 等。尽管j 2 e e 平台承诺,开发应用很简洁、高效,但实 际情况并非如此。e j b 容器的服务往往是“买一送三”,不要都不行,于是随之而 来的就是开发效率低下、部署复杂、运行缓慢、难于测试、维护困难等一系列问 题。e j b 把一种复杂的编程模型强加给了开发者,对于中小型企业,使用完整的 j 2 e e 实现过于庞大,最终常导致开发的失败。 系统架构上的复杂性,如果并非出于必要,则一定就是坏事。复杂性会带来 大量不必要的代码;复杂的架构和代码表现出的性能往往是低下的;复杂的代码 会使构建过程复杂化,并且经常还会使开发过程依赖于某些复杂的工具;复杂的 代码难以理解。 为了简化应用程序开发、部署,降低开发的风险,提高程序的可维护性,必 须引入轻量级j 2 e e 架构模型。所谓轻量级是相对“重”而言的,众多的中小型 系统中需要的是一种“可选择”的服务容器,轻量级容器正是在这种需求驱动下 提出的。 在轻量级容器中,容器对应用代码没有丝毫的侵入性,应用代码不需要实现 任何容器的接口,只在需要使用容器的地方调用容器的a p i ,用户可以自己定义 服务。轻量级j 2 e e 架构致力于简化编程模型并提供更具响应能力的容器,旨在 消除j 2 e ea p i 中的复杂性和种种限制、融合最新的技术、支持现有的最佳开发 实践、降低应用程序的部署难度并缩短应用程序的部署时间,它使应用系统和业 浙江大学硕士学位论文第1 章绪论 务组件的耦合关系进一步分离,方便系统的快速开发、测试和维护。 在轻量级框架的领域,控制反转( i o c ) 模式被大量的采用,这使开发人员不 需要编写复杂的代码来执行查询、处理基础架构异常或管理连接,就能够解决对 象依赖性问题。这有助于简化代码、将业务逻辑与基础架构分离,从而使应用程 序更易于维护。 轻量级框架的另一个关键特征是,它不会强迫业务对象遵循平台特定接口。 这允许开发人员在普通旧式j a v a 对象( p o j o ) 中实现业务逻辑,从而使编程更加 方便。由于业务逻辑实现在p o j o 中,所以不再需要将对象部署到重量级容器中 去测试它。完全可以将对象放在像j u n i t 之类的简单测试环境中,同时为进行快 速迭代单元测试模拟外部容器的技术就变得不再需要了 1 2 课题研究的目的和意义 目前,轻量级容器在o p e ns o u r c e 范围已经得到了广泛的认可,以下是目前 己存在的一些轻量级容器框架: p i c o c o n t a i n e r :h t t p :w w w p i c o c o n t a i n e r o r g a v a l o na p a c h es o f t w a r el i c e n s e :h t t p :a v a l o n a p a c h e o r g n a n o c o n t a i n e r :h t t p :f f 棚n a n o c o n t a i n e r o r g p e a p o d :h t t p :v n w p e a p o d o r g c a r b o n :h t t p :c a r b o n s o u r c e f o r g e n e t e x c a l i b u r :h t t p :e x c a l i b u r a p a c h e o r g i n d e x 。h t m l g r a v i t y :h t t p :g r a v i t y d e v j a v a n e t 其中s p r i n gi o c 容器,已经成为这里面的佼佼者,其典型代表是如今广泛 流行的s p r i n g + s t r u t s + h i b e r n a t e 框架。s t r u t s + s p r i n g + h i b e r n a t e 的 轻量级j z e e 架构是以s t r u t s 框架作为表现层,s p r i n g 框架作为业务逻辑层, h i b e r n a t e 作为持久化层。 但是并不是说该框架是万能的,是适用于所有的w e b 应用的。它是一种轻量 级的架构方案,没有分布式事务调度,因此,架构不太适合分布式的企业级应用。 另外,对于业务逻辑不是很复杂,但层与层之间的数据交互很大,持久层关系映 射比较复杂的w e b 应用,其开发效率和运行效率并不是很理想。 在整合各种框架的基础上,本文在一个更高的层面分析了传统的j 2 e e 架构 ( 即以e j b 容器为核心的j 2 e e 架构) ,包括经典e j b 架构以及本地e j b 架构,和 以s p r i n g 框架为代表的轻量级j 2 e e 架构,提出了他们各自的局限性和不足。 浙江丈学硕士学位论文第1 章绪论 本课题的切入点有以下两点: x m l 中间件:严格的说x m l 中间件可能还不能看作一个概念,虽然有些 人尝试着为其下一个定义,但这些定义仍然各有侧重,并不能很好的涵 盖当前所存在的各种所谓的x m l 中间件产品,这或许正是一个新的概念 要诞生前的混沌,毕竟x m l 中间件这个称谓已经开始被到处使用了。一 般来说,我们可以将x b l l 中间件理解为与数据库的接口( 以x m l 来查询 数据库,并返回x m l 结果) 或者是与w e b 浏览器的接口( 传递x m l 信息, 并通过x s l 组织显示) 。 x m lw e bs e r v i c e :x m lw e bs e r v i c e 是在i n t e r n e t 上进行分布式计 算的基本构造块。开放的标准以及对用户和应用程序之间的通信和协作 的关注产生了这样一种环境,在这种环境下,x m lw e bs e r v i c e 成为应 用程序集成的平台。应用程序是通过使用多个不同来源的x m lw e b s e r v i c e 构造而成的,这些服务相互协同工作,而不管它们位于何处或 者如何实现。 本论文通过引进r e s tw e bs e r v i c e 的概念,在此基础上提出了基于r e s t 的轻量级架构,在物理意义上把整个架构划分成w e b 层和r e s o u r c e 层,进行了 总体的设计,在功能意义上把整个架构划分成若干个功能模块。不光在理论上论 述了该架构的可行性、优越性,并实际通过组件开发的模式给出具体的设计和实 现。该轻量级j 2 e e 的架构实现,使表现层、业务逻辑层和持久化层彻底分离, 保持了层次和组件之间的松耦合,并在系统高效性、配置的灵活性、可测试性、 安全性、易用性、实用性和可移植性上有着独特的优势。 1 3 论文的组织 本篇论文共分为七个部分,组织如下: 第一部分主要介绍了本课题的背景、研究的目的和意义 第二部分对本系统相关技术理论作了一个简单的研究和分析。 第三部分对现存的各种架构进行了详细分析,从而引发了本项目架构的提 出。 第四部分主要给出了本项目的架构设计及其具体的实现方法。 第五部分主要介绍了实现的功能与效果。 第六部分总结了整个项目的设计,并对将来的规划作了展望。 第七部分列举了本文写作过程中使用的参考文献。 浙江大学硕士学位论文第2 章基本概念和相关研究 第2 章基本概念和相关研究 2 1 ) 眦 x m l 哪,又称为可扩展标记语言( e x t e n s i b l em a r k u pl a n g u a g e ) ,是一种用来 创建自己标记的标记语言。 x m l ( 可扩展标记语言) 是从称为s g m l ( 标准通用标记语言) 的更加古老的 语言派生出来的。s g m l 的主要目的是定义使用标签来表示数据的标记语言的语 法。标签由包围在一个小于号( ) 之间的文本组成,例如 。 起始标签( s t a r tt a g ) 表示一个特定区域的开始,例如 ;结束标签( e n d t a g ) 定义了一个区域的结束,除了在小于号之后紧跟着一个斜线( ) 外,和起 始标签基本一样,例如 。s g m l 还定义了标签的特性( a t t r i b u t e ) ,它们是 定义在小于号和大于号之间的值,例如 中的s r c 特 性。如果你觉得它看起来很熟悉的话,应该知道,基于s g m l 的语言的最著名实 现就是原始的h t m l 。 s g m l 常用来定义针对h t m l 的文档类型定义( d t d ) ,同时它也常用于编写x m l 的d t d 。s g m l 的问题就在于,它允许出现一些奇怪的语法,这让创建h t m l 的解 析器成为一个大难题: 1 ) 某些起始标签不允许出现结束标签,例如h t m l 中 标签。包含了结 束标签就会出现错误。 2 ) 某些起始标签可以选择性出现结束标签或者隐含了结束标签,例如h t m l 中 标签,当出现另一个 标签或者某些其他标签时,便假设在这之 前有一个结束标签。 3 ) 某些起始标签要求必须出现结束标签,例如h t m l 中 标签。 4 ) 标签可以以任何顺序嵌套。即使结束标签不按照起始标签的逆序出现也 是允许的,例如, t h i si sa s a m p l e s t r i n g 是正确的。 5 ) 某些特性要求必须包含值,例如 中的s r c 特性。 6 ) 某些特性不要求一定有值,例如 中的n o w r a p 特性。 7 ) 定义特性的两边有没有加上双引号都是可以的,所以 和 都是允许的。 这些问题使建立一个s g m l 语言的解析器变成了一项艰巨的任务。判断何时 应用以上规则的困难导致了s g m l 语言的定义一直停滞不前。以这些问题作为出 4 浙江大学硕士学位论文第2 章基本概念和相关研究 发点,) ( m l 逐渐步入我们的视野。 x m l 去掉了之前令许多开发人员头疼的s g m l 的随意语法。在x m l 中,采用了 如下的语法: 1 ) 任何的起始标签都必须有一个结束标签。 2 ) 可以采用另一种简化语法,可以在一个标签中同时表示起始和结束标签。 这种语法是在大于符号之前紧跟一个斜线c ) ,例如 。x m l 解析 器会将其翻译成 。 3 ) 标签必须按合适的顺序进行嵌套,所以结束标签必须按镜像顺序匹配起 始标签,例如 t h i si sa s a m p l e s t r i n g 。这好比是将起 始和结束标签看作是数学中的左右括号:在没有关闭所有的内部括号之 前,是不能关闭外面的括号的。 4 ) 所有的特性都必须有值。 5 ) 所有的特性都必须在值的周围加上双引号。 这些规则使得开发一个】( i l 解析器要简便得多,而且也除去了解折s g 札中 花在判断何时何地应用那些奇怪语法规则上的工作。仅仅在x m l 出现后的前六年 就衍生出多种不同的语言,包括m a t h m l 、s v 6 、r d f 、r s s 、s o a p 、x s l t 、】( s l - f 0 , 而同时也将h t m l 改进为x h t g l 。 ) ( l l 是一种元语言。所谓“元标记”就是开发者可以根据自己的需要定义自 己的标记,比如开发者可以定义如下标记 ,任何满足x m l 命名规 则的名称都可以标记,这就为不同的应用程序打开了的大门。因此x m l 可以成为 描述电子商务数据、多媒体演示数据、数学公式等各种各样数据应用语言的基础 语言。 x m l 又是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这 些标记可以用方便的方式建立,虽然x m l 占用的空间比二进制数据要占用更多的 空间,但x m l 极其简单易于掌握和使用。一个x m l 文件就是一个小的数据库,通 过对数据关系的定义形成各种关系、属性的数据,实现数据交换、上下文检索、 多媒体传输等。x m l 与a c c e s s ,o r a c l e 和s q ls e r v e r 等数据库不同,数据库提供 了更强有力的数据存储和分析能力,例如:数据索引、排序、查找、相关一致性 等,x m l 仅仅是展示数据。事实上x m l 与其他数据表现形式最大的不同是:他极 其简单。这是一个看上去有点琐细的优点,但正是这点使x l i l 与众不同。x i i l 的 简单使其易于在任何应用程序中读写数据,这使x l l l 很快成为数据交换的唯一公 共语言,虽然不同的应用软件也支持其它的数据交换格式,但不久之后他们都将 浙江大学硕士学位论文第2 章基本概念和相关研究 支持) ( m l ,那就意味着程序可以更容易的与w i n d o w s 、m a c0 s ,l i n u x 以及其他平 台下产生的信息结合,然后可以很容易加载x m l 数据到程序中并分析他,并以x m l 格式输出结果。 如今,x m l 已经是世界上发展最快的技术之一。它的主要目的是使用文本以 结构化的方式来表示数据。在某些方面,x m l 文件也类似于数据库,提供数据的 结构化视图。 综上所述,x m l 有以下几点特性: 1 ) 结构化:) ( m l 是一种极端标准化的语言规范。x m l 文件利用了一个d t d 规 范来定义x m l 文件的语法、句法和数据结构的标准。x m l 定义这些更严格的数据 结构,使用户可以使用结构化的x m i 文件作为一种中介体让数据在两种数据库之 间灵活的进行转移。 2 ) 自描述:x m l 的第二个重要特性就是允许有自描述的信息。尽管并不要求 x m l 文件必须是可以自描述的( 只要求是结构化的) ,但带有自描述可以增强w e b 的检索功能。 3 ) 允许集成不同来源的结构化数据。一般情况下,使用代理,在中间层服务 器上集成来自后端数据库和其他应用程序的数据,使该数据能够传递给桌面或者 其他服务器,做进一步聚合、处理和分布。 4 ) 描述来自多种应用程序的数据。由于x m l 是可扩展的,因此它可以用于描 述来自多种应用程序的数据,从描述w e b 页面集合到数据记录。由于数据是自描 述的,因此不需要数据的内置描述,也能够接收和处理数据。 2 2x s l x s l 之于x m l ,就像c s s 之于h t m l 。它是指可扩展样式表语言 ( e x t e n s i b l es t y l e s h e e tl a n g u a g e ) 。这是一种用于以可读格式呈现x m l 数据 的语言。x s l 实际上包含两个部分: x s l t 一用于转换x m l 文档的语言 x p a t h 一用于在x m l 文档中导航的语言 x s l t 心是指x s l 转换( x s lt r a n s f o r m a t i o n ) ,它是x s l 最重要的部分。 x s l t 用于将一个x m l 文档转换成另一个x m l 文档或另一种类型的文档,也就是将 一个) ( m l 文档转换成浏览器所能识别的一种格式,这其中之一就是b t m l 。通常, x s l t 将每个x m l 元素都转换成一个h t m l 元素。) 【s l t 还可以对) ( i l l 树进行下列 操作: 6 浙江大学硕士学位论文第2 章基奉概念和相关研究 添加和删除元素 添加和删除属性 对元素进行重新排列或排序 隐藏或显示某些元素 查找或选择特定元素 鬲。圈 图2 一lx s l t 输入和输出的树状结构 描述这种转换过程的一个常用说法是:用x s l t 将一个x m l 来源树转换成另 一个x m l 结果树( 或将一个x m l 源文档转换成另一个涮l 结果文档) ,如图2 - 1 所示。 x s l 在设计时有几个目标用途,这些用途使它成为某些开发情况下的完美解 决方案,而对另一些开发情况则毫无用处。 x s l 专门用于处理x m l 文档,并且遵循x m l 语法。因此,它只能在支持x 札 的应用程序中与黼l 结合使用。最合适使用x m l 和x s l 的情况是:w e b 门户、 新闻聚合器、社区网站或其它任何需要向各种设备及大量客户端提供信息的w e b 应用程序。 x s l t 是一种基于模式匹配的语言。它会查找匹配特定条件的节点,然后应 用相应的规则。因此,它不具备大多数编程语言的计算能力。例如,x s l 无法在 运行时更改变量的值。它不应该用于从使用复杂公式的动态数据源( 例如在线商 店) 来计算值。w e b 编程语言更适于此用途。 x s l 不能代替或补充c s s 。它不应( 也不能) 用于设置h t m l 的样式。但是, 7 浙江大学硕士学位论文 第2 章基奉概念和相关研究 您可以将其用于需要频繁重新设计可视化效果、频繁更换稚局以及以灵活格式处 理数据的网站。 x s l 不是内容管理工具。它不应( 也不能) 用于更改) ( m l 文档的内容或者 编辑信息。但是,您可以将x m l 和x s l 用于需要处理几种不同格式文档的内容 管理系统。 2 3 w e bs e r v i c e 从表面上看,w e bs e r v i c e 就是一个应用程序,它向外界暴露出一个能够通 过w e b 进行调用的a p i 。这就是说,你能够用编程的方法通过w e b 来调用这个应 用程序。我们把调用这个w e bs e r v i c e 的应用程序叫做客户。例如,你想创建一 个w e bs e r v i c e ,它的作用是返回当前的天气情况。那么你可已建立一个a s p 页 面,它接受邮政编码作为查询字符串,然后返回一个由逗号隔开的字符串,包含 了当前的气温和天气。要调用这个a s p 页面,客户端需要发送下面的这个h t t p g e t 请求: h t t p :h o s t c o m p a n y c o m w e a t h e r a s p ? z i p c o d e = 2 0 1 7 1 返回的数据就应该是这样:2 1 ,晴 这个a s p 页面就应该可以算作是w e bs e r v i c e 了。因为它基于h t t pg e t 请 求,暴露出了一个可以通过w e b 调用的a p i 。当然,w e bs e r v i c e 还有更多的东 西。 下面是对w e bs e r v i c e 更精确的解释( 引自w i k i 百科) :w e bs e r v i c e 是一 种面向服务的架构的技术,通过标准的w e b 协议提供服务,目的是保证不同平台 的应用服务可以互操作。 根据w 3 c 的定义,w e b 服务( w e bs e r v i c e ) 应当是一个软件系统,用以支持 网络问不同机器的互动操作。网络服务通常是一组应用程序接口( a p i ) ,它们部 署在网络系统( 如国际互联网) 的远程服务器端,客户提交特定的请求来访问这 些接口,使程序执行。w e bs e r v i c e 平台需要一套协议来实现分布式应用程序的 创建。任何平台都有它的数据表示方法和类型系统。要实现互操作性,w e bs e r v i c e 平台必须提供一套标准的类型系统,用于沟通不同平台、编程语言和组件模型中 的不同类型系统。w e bs e r v i c e 平台同时也必须提供一种标准来描述w e bs e r v i c e , 让客户可以得到足够的信息来调用这个w e bs e r v i c e 。最后,我们还必须有一种 方法来对这个w e bs e r v i c e 进行远程调用。这种方法实际是一种远程过程调用协 议( r p c ) 。为了达到互操作性,这种r p c 协议还必须与平台和编程语言无关。 8 浙江大学硕士学位论文第2 章基本概念和相关研究 可扩展的标记语言( x m l ) 是w e bs e r v i c e 平台中表示数据的基本格式。除了 易于建立和易于分析外,x m l 主要的优点在于它既是平台无关的,又是厂商无关 的。无关性是比技术优越性更重要的:软件厂商是不会选择一个由竞争对手所发 明的技术的。x m l 解决了数据表示的问题,但它没有定义一套标准的数据类型, 更没有说怎么去扩展这套数据类型。例如,整形数到底代表什么? 1 6 位,3 2 位, 还是6 4 位? 这些细节对实现互操作性都是很重要的。w 3 c 制定的x m ls c h e m a ( x s d ) 就是专门解决这个问题的一套标准。它定义了一套标准的数据类型,并给出了一 种语言来扩展这套数据类型。w e bs e r v i c e 平台就是用x s d 来作为其数据类型系 统的。当你用某种语言( 如v b n e t 或c # ) 来构造一个w e bs e r v i c e 时,为了符合 w e bs e r v i c e 标准,所有你使用的数据类型都必须被转换为x s d 类型。你用的工 具可能已经自动帮你完成了这个转换,但你很可能会根据你的需要修改一下转换 过程。 w e bs e r v i c e 建好以后,你或者其他人就会去调用它。简单对象访问协议( s o a p ) 提供了标准的r p c 方法来调用w e bs e r v i c e 。实际上,s o a p 在这里有点用词不当: 它意味着下面的w e bs e r v i c e 是以对象的方式表示的,但事实并不一定如此:你 完全可以把你的w e bs e r v i c e 写成一系列的c 函数,并仍然使用s 0 a p 进行调用。 s o a p 规范定义了s o a p 消息的格式,以及怎样通过h t t p 协议来使用s o a p 。s o a p 也是基于x m l 和x s d 的,x m l 是s o a p 的数据编码方式。 你会怎样向别人介绍你的w e bs e r v i c e 有什么功能,以及每个函数调用时的 参数呢? 你可能会自己写一套文档,你甚至可能会口头上告诉需要使用你的w e b s e r v i c e 的人。这些非正式的方法至少都有一个严重的问题:当程序员坐到电脑 前,想要使用你的w e bs e r v i c e 的时候,他们的工具( 如v i s u a ls t u d i o ) 无法给 他们提供任何帮助,因为这些工具根本就不了解你的w e bs e r v i c e 。解决方法是: 用机器能阅读的方式提供一个正式的描述文档。w e bs e r v i c e 描述语言( w s d l ) 就 是这样一个基于x m l 的语言,用于描述w e bs e r v i c e 及其函数、参数和返回值。 因为是基于x m l 的,所以w s d l 既是机器可阅读的,又是人可阅读的,这将是一 个很大的好处。一些最新的开发工具既能根据你的w e bs e r v i c e 生成w s d l 文档, 又能导入w s d l 文档,生成调用相应w e bs e r v i c e 的代码。 2 4s o a p 和r e s t s o a p 是w e b 服务中的基础协议,它采用的交互模型是基于r p c 机制的。s o a p 设计的初衷之一就是使在i n t e r n e t 上的d c 0 m 、c o r b a 和e j b 等中间件之间相互 9 浙江大学硕士学位论文第2 章基本概念和相关研究 沟通,而这些中间件在实现企业逻辑时基本都是通过基于r p c 或方法的,所以采 用r p c 来作为w e b 服务的交互模型是理所当然的。在一个相对封闭的环境中,r p c 模型取得了较大成功。因为在封闭环境中,所有用户都是已知的,可以共享一个 数据模型,用户直接调用发布接口的a p i 来获得服务,服务器端的开发者也通过 接口获得了很大的灵活性。然而,在w e b 环境,尤其是当应用达到了w e b 级的规 模可伸缩性,就会出现一些问题。首先,使用r p c 的方法会导致调用者和服务之 间的紧密耦合。举例来说,在一个订单处理系统中,可能会使用信用卡授权服务, 在客户端使用r p c 方法调用了服务后,它必须等待,直到服务器端处理完成后, 才能进行订单处理的动作。整个订单服务将会持续很长时问,而r p c 不支持长时 间的连接活动。其次,r p c 系统在i n t e r n e t 的规模下产生接口复杂性。接口与实 现它的对象或服务之间都有一定的约定,如方法调用的顺序、参数类型等,这样, 每个接口都具有自己的语义。随着接口个数的增加,接口的语义有可能以接口个 数平方增长,这在w e b 级的规模上会产生接口复杂 当前基于r p c 机制的s o a p 协议存在一些不足,主要表现在: 安全性。r p c 交互模型下是通过调用方法来访问服务的,所以要访问的 服务对象名称藏在方法的参数中,无法在代理服务器一级进行有效的控 制。而安全问题是企业计算环境中需要面对的关键问题,也是w e b 服务 达到大规模商业应用的一个障碍。 代理和缓存。由于采用r p c 模型,服务调用者要访问的资源和调用的方 法被封装在s o a p 消息中,单从u r i 和h t t p 上无法得到有用的信息,因 此在w e b 环境下,s o a p 在支持代理和缓存服务器方面有一定的困难。 使用复杂性。由于在s o a p 中可以任意定义自己的方法集合,因此要有一 个描述和发现机制,使服务调用者获得服务及它提供的方法的语义后, 才能根据这些信息进行调用。 当前,基于远程过程调用( r p c ) 的交互模型,在相对封闭的、小的应用环境 中取得了较大成功。然而,在w e b 这个开放、分布的环境中会产生紧密耦合和接 口复杂等问题,难以达到w e b 级的规模可伸缩性。r e s t ( r e p r e s e n t a t i o n a ls t a t e t r a n s f e r ) 是对当前w e b 体系结构潜在设计原则的一种描述,也是对w e b 最成功 要素的总结。采用基于r e s t 的交互模型的w e b 服务将克服基于r p c 的交互模型 的诸多不足,适应w e b 级的规模可伸缩性,促使w e b 服务得到普遍应用和进一步 发展。 l o 浙江大学硕士学位论文第2 章基本概念和相关研究 r e s t 脚是r o yf i e l d i n g 在他的博士论文中发明的一个新名词,它代表 r e p r e s e n t a t i o n a ls t a t et r a n s f e r ,是对w e b 体系结构设计原则的一种描述。 r e s t 的目的是决定如何使一个好定义的w e b 程序向前推进:一个程序可以通过选 择一个带有链接的w e b 页面上的超链( 状态变换) ,使得另一个w e b 页面( 代表程 序的下一个状态) 返回到用户,使程序进一步运行。如图2 - 2 ,客户请求某航空公 司7 4 7 飞机的服务( 使用逻辑u r i ) ,返回结果页面中包含有航班次和时刻表两个 链接,这两个链接是对服务端提供资源的表示( r e p r e s e n t a t i o n ) ,而不是直接对 资源的操作动作。得到返回结果后,客户选择一个链接来决定下一步动作,这样 可以做到客户维护自己的程序状态。 图2 - 2 客户请求某航空公司7 4 7 飞机的服务 r e s t 不是一个协议,它是当前w e b 体系结构的风格,是对当前w e b 体系结构 设计原则的一种抽象和描述。从这个意义上讲,w e b 是r e s t 系统的一个实例。r e s t 描述了如何设计和开发分布式系统。对r e s t 的应用只能是理解它,把它的原则 应用到w e b 服务的设计中。 r e s t 的目标是: 1 ) 组件相互作用的规模性; 2 ) 接口的一般性; 3 ) 组件的独立分发; 4 ) 支持中间媒介。 r e s t 系统中的组件必须遵守下列约束: 1 ) 网络上的所有事物都被抽象为资源( r e s o u r c e ) ; 2 ) 每个资源对应一个唯一的资源标识( r e s o u r c ei d e n t i f i e r ) ; 3 ) 通过通用的连接器接口( g e n e r i cc o n n e c t o ri n t e r f a c e ) 对资源进行操 作; 浙江大学顾士学位论文第2 章基本概念和相关研究 4 ) 对资源的各种操作不会改变资源标识; 5 ) 所有的操作都是无状态的( s t a t e l e s s ) 。 对于当今最常见的网络应用来说,r e s o u r c ei d e n t i f i e r 是u r l ,g e n e r i c c o n n e c t o ri n t e r f a c e 是h t t p ,第4 条准则就是我们常说的u r l 不变性。这些概 念中的r e s o u c e 最容易使人产生误解。r e s o u c e 所指的并不是数据,而是数据+ 特定的表现形式(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年合肥市骨科医院招聘41人考前自测高频考点模拟试题及答案详解(网校专用)
- 2025安徽安庆医药高等专科学校面向校园招聘21人模拟试卷有答案详解
- DB1310-T 357-2024 液晶显示器件用背光组件测试规范
- 职场情商测评题及提升策略
- 工厂电气设备安装维护操作流程
- 现代温室大棚种植技术操作规范
- 2025福建农信春季招聘194人报考须知考前自测高频考点模拟试题及答案详解(名校卷)
- 2025福建省梧凤文旅集团有限公司招聘1名工作人员考前自测高频考点模拟试题及答案详解(典优)
- 白细胞增多症中氧化应激反应机制-洞察及研究
- 医美行业营销推广活动方案
- DB45∕T 2659-2023 儿童青少年心理健康诊疗服务规范
- 电商税务筹划课件模板
- 洗煤厂安全生产管理制度
- 旧楼拆除防尘降噪专项措施
- 2025年中国毛皮服装市场调查研究报告
- 矿山开采运输管理制度
- 律师行业税务问题课件
- 湖北建筑工程资料表格全套
- 中医耳鼻喉科学多媒体课件-鼻炎课件
- 2025年中医适宜技术考试练习题库(含答案)
- GB/T 196-2025普通螺纹基本尺寸
评论
0/150
提交评论