(计算机软件与理论专业论文)基于soa的遗产web系统重构研究.pdf_第1页
(计算机软件与理论专业论文)基于soa的遗产web系统重构研究.pdf_第2页
(计算机软件与理论专业论文)基于soa的遗产web系统重构研究.pdf_第3页
(计算机软件与理论专业论文)基于soa的遗产web系统重构研究.pdf_第4页
(计算机软件与理论专业论文)基于soa的遗产web系统重构研究.pdf_第5页
已阅读5页,还剩69页未读 继续免费阅读

(计算机软件与理论专业论文)基于soa的遗产web系统重构研究.pdf.pdf 免费下载

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

文档简介

南京邮电大学硕士研究生学位论文摘要 摘要 近年来,软件行业飞速发展。w e b 技术的发展是个代表,它的发展促进了企业应用软 件的开发。由于业务的发展,需求的不断变化,很多企业面临着如何更新他们的系统,以 使得系统适应市场的需求,这就导致软件重构问题的出现。重构遗留系统并不意味着对原 有系统的放弃来开发新的,而是取其精华,去其糟粕地接受,让系统跟上企业的发展。面 向服务的架构是一种架构,强调了松耦合,平台无关性,高灵活性,它可以便利地被用来 重构遗留系统。它的应用可以延长遗产系统的生命周期,并且可以提高重用度,降低开发 成本,所以越来越多的软件采用这种思想来设计他们的软件。 本文首先w e b 服务、面向服务的架构、面向方面的程序设计以及与他们相关的技术; 然后讨论了遗产系统、重构的目的和意义、遗产系统现代化的一般方法。面向方面的重构 方法,尤其是在方面挖掘和横切关注识别,本文也做了着重介绍。本文针对遗产系统提出 了一种基于s o a 和a o p 的重构方案。 根据架构重构,首先基于业务流程分析系统的应用域;然后,通过逆向工程和方面挖 掘,从遗产系统中找出面向对象模型和横切关注,并对比前两步生成的模型以及横切关注, 这时必须的。第三步,在前面工作的基础上,从中识别出w e b 服务和方面。面向对象模型 是用u m l 语言描述的。接着,新建或重构w e b 服务和方面,这一步不是单纯地进行逆向工 程,而主要是正向工程;最后,使用w e b 服务来重新构造一个基于s o a 和a o p 的应用程序。 文章最后一章,通过一个案例,来验证上面的方案的可行性和合理性。 关键词:s o a ,w e b 服务,a o p ,遗产w e b 系统,重构 南京邮电大学硕士研究生学位论文 a b s t r a c t a bs t r a c t i nr e c e n ty e a r s ,t h es o f t w a r ei n d u s t r yh a sb e e nd e v e l o p i n gr a p i d l y t h ed e v e l o p m e n to fw e b t e c h n o l o g yi s ar e p r e s e n t a t i v e ,w h i c hp r o m o t e st h ed e v e l o p m e n to fe n t e r p r i s ea p p l i c a t i o n s o f t w a r e s d u et of a s tb u s i n e s sd e v e l o p m e n ta n dc o n s t a n tc h a n g e ,t h ec o m p a n i e sa r ef a c e dw i t h h o wt ou p g r a d et h e i ra p p l i c a t i o n st om e e tt h en e e d so ft h em a r k e t ,a n dt h i st h u sb r i n g su pt h e p r o b l e mo fs y s t e mr e f a c t o r i n g r e f a c t o r i n gl e g a c ys y s t e md o e sn o tm e a nd i s c a r d i n gt h eo l da n d p r o d u c i n g an e wv e r s i o no fi t ,b u tm a i n t a i n i n gt h ea d v a n c e m e n ta n d r e j e c t i n g i t s d i s a d v a n c e m e n t 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 ei saf r a m e w o r kt o e m p h a s i z el o w - c o u p l i n g , p l a t f o r mi n d e p e n d e n c e ,h i g hf l e x i b i l i t ya n di tc a r lb eu s e df o rr e f a c t o r i n gl e g a c ys y s t e m sn a t u r a l l y a n da p p r o p r i a t e l y t h i sp a p e ri n t r o d u c e sf i r s tw e bs e r v i c e ,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 ,a s p e c t - o r i e n t e d p r o g r a m m i n ga n dt h e i rr e l a t e dt e c h n i q u e s t h e n i td i s c u s s e st h el e g a c ys y s t e m s ,t h ep u r p o s e s , p r i n c i p l e sa n dt h eg e n e r a lm e t h o d sf o rl e g a c ya p p l i c a t i o nm o d e r n i z a t i o n t h ea s p e c t - o r i e n t e d r e f a c t o r i n g ,e s p e c i a l l ya s p e c tm i n i n ga n dc r o s s c u t t i n gc o n c e r n sa r ep a i dm u c ha t t e n t i o n as o a b a s e da n da s p e c t o r i e n t e dr e f a c t o r i n gf r a m e w o r kf o rl e g a c ys y s t e m si sp r o p o s e di nt h i sp a p e r a c c o r d i n gt ot h er e c o n s t r u c t i o nf r a m e w o r k ,t h ef i r s ts t e pi sa p p l i c a t i o n d o m a i na n a l y s i s b a s e do nb u s i n e s sp r o c e s s t h e nt h eo b j e c t o r i e n t e dm o d e la n dc r o s s - c u t t i n gc o n c e r n sa r e e x t r a c t e df r o mt h el e g a c ys y s t e mb ym e a n so fr e v e r s ee n g i n e e r i n ga n da s p e c tm i n i n g ,t h e c o m p a r i s o nw i t ht h ea p p l i c a t i o nd o m a i na r en e e d e dd u r i n gt h er e v e r s ep r o c e s s t h et h i r ds t e pi s t oi d e n t i f yw e bs e r v i c e sa n da l s ot h ea s p e c t so nt h eb a s i so fe a r l yw o r k t h eo b je c t o r i e n t e d m o d e li sd e s c r i b e db yu m l t h el a s ts t e pi sn o tap u r er e v e r s es t e p ,b u ti sm a i n l yaf o r w a r d e n g i n e e r i n g ,w h i c hs h o u l dc r e a t eo rr e b u i l dw e bs e r v i c e sa n da s p e c t s 。f i n a l l yt h ea p p l i c a t i o n u s i n gw e bs e r v i c e sc a nb er e c o n s t r u c t e d ,w h i c hi sb a s e do ns o aa n da o p as t u d yc a s ei sg i v e n i nt h el a s tc h a p t e rt os h o wt h er e a s o n a b i l i t ya n df e a s i b i l i t yo ft h ef r a m e w o r k k e y w o r d s :s o a ,w e bs e r v i c e ,a o p ,l e g a c yw e bs y s t e m ,r e f a t o r i n g 南京邮电大学学位论文原创性l 声明 本人声明所呈交的学位论文是我个人在导师指导下进行的研究工作及取得 的研究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包 含其他人已经发表或撰写过的研究成果,也不包含为获得南京邮电大学或其它 教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的 任何贡献均己在论文中作了明确的说明并表示了谢意。 研究生签名:垂止日期:! 挈。l 鱼一 南京邮电大学学位论文使用授权声明 南京邮电大学、中国科学技术信息研究所、国家图书馆有权保留本人所送 交学位论文的复印件和电子文档,可以采用影印、缩印或其它复制手段保存论 文。本文电子文档的内容和纸质论文的内容相一致。除在保密期内的保密论文 外,允许论文被查阅和借阅,可以公布( 包括刊登) 论文的全部或部分内容。 论文的公布( 包括刊登) 授权南京邮电大学研究生部办理。 研究生签名:j 啦导师签名:j 啦一日期:! 拦 南京邮电大学硕士研究生学位论文第一章引苦 1 1 课题背景 第一章引言 进入二十一世纪以来,伴随着信息技术的飞速发展,网络信息化正在社会的各行各业 产生巨大的作用,i n t e r n e t 技术的应用给人们的生活带来了前所未有的便利。w e b 正是在 这样的环境下,高速发展。但是技术是日新月异的,传统的w e b 系统由于不够灵活,维护 困难以及难以和其他系统集成等原因,已经跟不上时代的步伐。但是它们对于企业是很有 价值的,同时也是原开发者们的心血,凝聚着众人的智慧,更包含着企业的宝贵业务逻辑, 完全抛弃固然是不可取的,要“去其糟粕,取其精华”地对其进行改造! 面向服务的架构( s e r v i c eo r i e n t e da r c h i t e c t u r e ,s o a ) 的出现和发展,给人们描 绘了一幅美丽的前景。它不拘泥于某种语言,可以用任何编程语言来实现;它不受开发平 台的限制,显示平台无关性;它是松散耦合的,提供了拓展业务简洁增加模块的方便;它 提高系统的可重构性,为未来的发展打下扎实的基础。因此,s o a 得到了业界的广泛关注, 如何将遗产系统迁移到基于s o a 的系统中,成为了现在的具有研究价值的课题。 1 2 研究现状 对于如何迁移遗产系统到基于s o a 的系统架构中,国内外已经研究和测试了很久,虽 然实现s o a 的技术有很多,例如c o r b a ,d c o m 还有j a v ar m i 等,但是使用最多的还是w e b 服务。随着标准和规范日趋成熟,也得到越来越多的软件厂商和企业客户的认可。许多主 流软件厂商( 如:i b m 、m i c r o s o f t 、s u n 、b e a 等) 推出各自的s o a 策略、架构以及产品, 如:i b m 的w e b s p h e r e 、m i c r o s o f t 的n e t 平台、s u n 的s u nj e s 以及b e a 的w e b l o g i c 。 企业的加入,让s o a 的理论“着陆”,也更加推动了理论的研究。当然在构建w e b 服务的 s o a 系统时,如何封装遗产系统也成了很多公司和机构的研究方向。在国外,n o o s p h e r i c s t h e o l o g i e s 公司提出了利用一个x m l 适配器来完成遗产系统的封装。在国内,清华大学自 动化系开发了一个基于w e b 服务的研究;北京大学以杨芙清教授为首开发的北大青鸟软件 生产线系统中的青鸟程序理解系统j b p a s 是其中一项成果。 1 9 9 7 年g r e g o rm c z a l e s 在欧洲面向对象程序设计大会( e c o o p 9 7 ) 提出了面向方面的 程序设计( o r i e n t e da s p e c tp r o g r a m m i n g ,a o p ) ,其目的是让程序员能够在自己的代码 南京邮电大学硕士矽f 究生学位论文 第章引言 中将“横切关注”模块化。由于遗留系统中存在代码“纠缠 和“散布 现象,在重构系 统时,有人提出从这个角度对原系统进行改进,把a o p 引进了重构的领域中。t w e n t e 大学 的m e h m e ta k s i t 及其小组【2 】是基于组合过滤器的a o p 方法最早和最突出的倡导者。在方面 挖掘上,各家提出不同的方法。如:通过聚类分析,通过扇入值,通过概念分析技术等。 在主流框架上,主要有a s p e c t j 、s p r i n g n e t 、e o s 、a s p e c t # 以及a s p e c t d n g 等。 1 3 研究内容与主要工作 由于遗产系统是前人的智慧的结晶,是企业业务逻辑的很好的体现,如何将其迁移到 基于s o a 的系统中来是本文的研究重点,本文的研究内容主要是如何将遗产系统重构为 符合s o a 理念的系统。具体包括:了解遗产系统的特征,如何将其现代化的理论基础以 及现代化的方法;软件重构的理论和方法;实现s o a 的方法以及关键技术等。 本文的工作以国内外近年来的相关工作为基础,针对遗产系统的特点,研究现在流行 的重构方法以及关键技术。在此基础上,设计一种基于s o a 的重构方法。本文的研究工 作主要包含以下几个方面:遗产系统的特点、软件重构的理论基础、软件重构的方法以及 现实意义、s o a 的实现技术等。例如:s o a 、w e b 服务及其关键技术等。 本文在了解基本理论的基础上,对现有重构方法、关键技术以及相关工具进行了系统 的研究。以现有的方法为基础,提出了基于s o a 的重构方案。该方案首先自上向下地从 应用域的角度出发,分析出系统的业务流程模型和横切关注,业务流程模型使用u m l 语言 描述;然后了解遗产系统自下而上地使用逆向工程技术,得出系统中面向对象模型和挖掘 出系统中的方面;其次,对比上面得出的横切关注以及u m l 描述的模型指导下一步服务的 鉴别;再次,从业务流程模型和面向对象模型中鉴别出服务,并对它们进行对比,找出设 计不佳的服务,以及缺乏的服务等;第四,重构服务以及重构方面,新建缺乏的服务、组 合服务;最后,编写修改原客户层代码,在其中调用所需的w e b 服务,形成基于a o p 的面 向服务的系统。本文最后采用一个案例来验证此重构方案。 本文在提取方面时,借鉴经典的挖掘方法,提出基于扇入分析和聚类分析的横切代码 识别( a b f c c ) 方法;在逆向工程提取服务时,本文借鉴前人的做法,在对比了白盒法、 黑盒法以及灰盒法之后,采用灰盒法,基于同步细化策略,抽象出系统的框架,提取出系 统的服务。 2 南京邮电大学硕士研究生学位论文第一章引言 1 4 论文结构 第一章为引言,介绍了本文的背景以及研究现状。 第二章为相关理论介绍。包括面向服务架构和面向方面的程序设计两大部分,详细阐 述了这两部分各自的相关技术以及相关概念。 第三章介绍了何所谓遗产系统以及遗产系统重构的一般方法:包括基于s o a 的重构和 基于a o p 的重构,并且详细说明了这些重构方法,并且将这些方法作了对比。 第四章在前面的基础上提出了一种基于s o a 的重构方案,并对涉及到的主要技术进行 了介绍。 第五章采用案例进行研究,为了说明前面设计的方案,本文构建了一个简单的案例来 对方案进行了验证。 第六章为总结与展望,总结了本文的内容及方案的优缺点、价值以及对未来研究的展 望。 南京邮电大学硕士研究生学位论文第二章面向服务的架构和面向方面的程序设计 第二章面向服务的架构和面向方面的程序设计 2 1 面向服务的架构和w e b 服务技术 2 1 1 面向服务的架构 1 s o a 的特征 目前s o a 是人们讨论关注的领域,人们对它的认识还在螺旋前进。 最早提出s o a 思想的是g r a n t e r ,他将s o a 描述为“客户端服务器( c l i e n t s e r v e r , c s ) 的软件设计方法,一项应用由软件服务和软件服务者组成,s o a 与大多数通用的c s 模型的不同之处,在于他着重强调软件组件的松散耦合,并使用独立的标准接口。”由于 当时软硬件条件还不足以使它进入实用阶段。二十一世纪,随着w e b 服务等相关标准的出 现和成熟,s o a 开始由概念走向实用。2 0 0 4 年初,b e a 率先宣布全面转向s o a ,宣称它的 所有产品已经完全基于s o a 建设。紧随其后,i b m 、o r a c l e 、微软等也纷纷相继推出了各 自的s o a 解决方案,并且鼓励用户逐渐转向s o a 。 s o a 的关键是“服务 的概念。w 3 c 将服务定义为:“服务提供者完成一组工作,为服 务使用者交付所需的最终结果。最终结果通常会使使用者的状态发生变化,但也可能使使 用者的状态改变,或者双方都发生变化 。 s o a 具有如下的特征: ( 1 ) 松散耦合 服务请求者到服务提供者的绑定与服务之间是松耦合的。松散藕合旨在将服务使用者 和服务提供者在服务实现和客户如何使用服务方面隔离开来。服务接口作为与服务实现分 离的实体而存在,服务请求者不知道提供者实现的技术细节,比如程序设计语言、部署平 台等。服务请求者往往通过消息调用操作一请求消息和响应一而不是通过使用a p i 和文件 格式。服务实现的修改完全不会影响到服务的使用者。 ( 2 ) 粗粒度服务 服务粒度( s e r v i c eg r a n u l a r i t y ) 指的是服务所公开功能的范围,一般分为,细粒度 ( f i n e g r a i n e ds e r v i c e ) 和粗粒度( c o a r s e - g r a i n e ds e r v i c e ) 。其中,细粒度服务是那些 能够提供少量商务流程可用性的服务。粗粒度服务是那些能够提供高层商务逻辑的可用性 服务。粗粒度服务可以灵活组合稳定性强、重用性高的细粒度服务,而快速形成新的业务 4 南京邮电大学硕士研究生学位论文第二章面向服务的架构和面向方面的程序设计 逻辑。虽然细粒度的接口为请求者应用程序提供了更多的灵活性,它同样也意味着交互的 模式可能随着不同的服务请求者而不同。这可能使对于服务提供者的支持更加困难。粗粒 度接口保证服务请求者将以一致的方式使用服务。面向服务的体系结构( s o a ) 不要求使用 粗粒度接口,但是推荐使用它们作为外部集成的最佳实践。服务编排可以用来创建运行由 细粒度操作组成的业务流程的粗粒度接口。 ( 3 ) 标准化的接口 服务描述的重点在于几部分交互所用的操作:服务、调用操作的消息、构造这种消息 的细节和关于向何处发送用于构造这种消息的处理细节的消息的信息。s o a 通过服务接口 的标准化描述,从而使得该服务可以提供给在任何异构平台和任何用户接口使用。该接口 隐藏了实现服务的细节,允许独立于实现服务基于的硬件或软件平台和编写服务所用的编 程语言使用服务。 ( 4 ) 无状态服务 服务应该是独立的、自包含的请求,在实现时它不需要从一个请求到另一个请求的信 息或状态。服务不应该依赖于其他服务的上下文和状态。当需要依赖时,它们最好定义成 通用业务流程、函数和数据模型,而不是实现构件( 比如会话密钥) 。当然,请求者应用程 序需要服务调用之间的持久状态,但是这不应该与服务提供者分开。 2 s o a 的基本结构 s o a 的体系结构中主要包含三个主体角色:服务请求者、服务注册中心和服务提供者。 ( 1 ) 服务请求者 实现服务的查找与调用,首先到服务注册中心去查找满足特定条件的、可获得的服务, 一旦找到,服务请求者将绑定到服务提供者并进行实际的服务调用。 ( 2 ) 服务注册中心 集中存储服务信息,以便于服务请求者的查找。同时,服务提供者可以把它们所要提 供的服务在服务注册中心里进行注册。 ( 3 ) 服务提供者 典型情况下,服务提供者即服务的拥有者,它负责将服务信息发布到服务注册中心, 同时要控制对服务的访问、执行以及服务的维护和升级。 对于这三个行为主体,s o a 也包括三种主要的操作【3 】: ( 1 ) 查找服务 服务请求者使用查找服务来定位服务,查找服务的操作由用户通过用户界面或者通过 其它的服务发起。 5 南京邮电大学硕士研究生学位论文第二章面向服务的架构和面向方面的程序设计 ( 2 ) 注册服务 服务提供者将服务的信息发布到服务注册者,服务的信息包括所有与该服务交互必要 的信息,如网络位置、传输协议以及消息格式等。 ( 3 ) 绑定服务 一旦服务请求发现合适的服务,它将根据服务描述中的信息在运行时直接激活服务。 服务角色及其操作如图2 1 所示。 绑定服务信息的方式有两种:静态绑定和动态绑定。静态绑定是在开发应用程序的时 候查询相关的服务信息,并得到服务的接口信息。在这种方式下,服务注册中心是可选的, 因为服务请求者不必一定要从服务注册中心处获得服务提供者的访问位置,还有很多其它 的方式同样可以获得服务提供者的信息,比如f t p 、u r l 、e m a i l 等;动态绑定是指服务 请求者在运行过程中从服务注册中心处获得服务信息并动态调用相关功能的过程。尽管静 态和动态的发现页面都提供了有关站点上已有的w e bs e r v i c e 信息,但是它们很少向其他 开发人员广告它们的存在。如果开发人员不知道有这样的服务存在,那么他们就不可能使 用这些服务。如果服务开发者想让其他人可以利用,可以使用u d d i 对服务进行广告。 图2 1s o a 角色及操作 3 s o a 的实现 现阶段,w e b 服务被广泛地使用来实现s o a ,以至于很多人误以为w e b 服务就是s o a 。 y e f i m n a t i s 解释说:“w e b 服务是技术规范,而s o a 是设计原则。特别是w e b 服务中的 w s d l 。是个s o a 配套的接口定义标准,这是w e b 服务和s o a 的根本联系。”从本质上来 说,s o a 仅是体系架构上的概念,它不是任何特定技术的集合,若要在实际的系统中运用 6 南京邮电大学硕士研究生学位论文第二章面向服务的架构和面向方面的程序设计 s o a 架构,则必须采用具体的技术。s o a 描述了整个系统如何动态地相互查找服务,以及 如何按照不同方式对服务进行组合,让多个服务一起协同完成某一特定功能。s o a 的最终 目标是跨操作系统、编程语言和硬件平台来集成应用系统。目前实现s o a 的技术有c o r b a , w e b 服务等,其中基于x m l 技术的w e b 服务是实现s o a 的最佳选择。 w e b 服务是一个描述了一组可以在网络上通过标准化的x m l 消息来通信的软件接口, 它是自包含、自描述、模块化的应用程序,可以被发布、定位,并通过w e b 调用,是一种 组件服务【2 】。也可以说w e b 服务就是一个应用程序,能够用编程的方法通过w e b 来调用这 个应用程序。 相对于原有的企业应用,w e b 服务有着明显的优势,它克服了传统企业应用集成的重 大障碍。从前面的定义可知,w e b 服务的引入,可以把企业应用从逻辑上分割为一些独立 的应用服务,提高了可重用性,从而降低了开发成本;增强了可扩展性,从而可以在商务 活动中与更多的企业进行协作;增强了可用性,从而使更多的人能通过对w e b 服务的调用 来完成自己的业务。并且,w e b 服务符合企业应用在w e b 上的发展模式,建立在h t t p 和 x m l 基础上的各种开放协议与标准也为w e b 服务的发展提供了技术基础。 2 1 2w e b 服务及其关键技术 1 w e b 服务及其特点 w e b 服务是一个自包含、自描述、模块化的应用程序标准机制,其应用可以通过w e b 发布供客户端动态发现和调用,可以执行从简单请求到复杂商务处理的任何功能。w e b 服 务是一种基于透明标准体系的组件化松散耦合技术,其目标是实现不同系统间跨平台和跨 编程语言的互操作性。 和传统技术相比,w e b 服务具有如下特点: ( 1 ) 平台的无关性 w e b 服务使用的h t t p 、简单对象访问协议( s i m p l eo b j e c ta c c e s sp r o t o c o l ,s o a p 3 1 ) 等协议己经是互联网上通用的协议,任何能够访问i n t e r n e t 的平台都可以访问w e b 服务。 任何与i n t e r n e t 建立连接的应用程序都可以向i n t e r n e t 上的任何个w e b 服务发送x m l 格式的s o a p 消息,同时也可以接收来自w e b 服务的s o a p 消息。 ( 2 ) 松散耦合 这一特征也是源于对象组件技术,当一个w e b 服务的实现发生变更的时候,调用者 是不会感到这点的,对于服务调用者来说,只要w e b 服务的调用界面不变,w e b 服务的 南京邮电大学硕士研究生学位论文第二章面向服务的架构和面向方面的程序设计 实现任何变更对他们来说都是透明的,甚至是当w e b 服务的实现平台从j 2 e e 迁移到了n e t 或者是相反的迁移流程,用户都可以对此一无所知。对于松散耦合而言,尤其是i n t e r n e t 环境下的w e b 服务而言,需要有一种适合i n t e r n e t 环境的消息交换协议。而x m l s o a p 正 是目前最为适合的消息交换协议。 ( 3 ) 功能重用 功能重用采用了许多与接口相关的技术,可以使用面向对象的技术和组件对象的技术 来创建系统。功能重用的应用程序设计具有在自己的程序中使用其他的系统执行特殊功能 的特性,通过使用外部厂商提供的w e b 服务,开发人员能够利用外部厂商己经实现的功能。 这意味着可以使用较少的时间开发与解决那些和具体的业务问题无关的应用程序,使用第 三方的技能和经验,可以使你集中精力处理业务问题。以前,为寻求某一功能,开发人员 不得不在某些技术中做出选择,w e b 服务则支持开发人员选择正确的功能,而不是选择正 确的技术。其原因就在于,接口是己经定义好的,执行实际功能的应用程序可以用任意的 编程语言编写。开发人员选择这项功能的唯一依据是系统需求,而不是技术的约束。 ( 4 ) 使用标准协议规范 作为w e b 服务,其所有公共的协约完全需要使用开放的协议完全需要使用开放的标准 协议进行描述、传输和交换。这些标准协议具有完全免费的规范,以便由任意方进行实现。 一般而言,绝大多数规范将最终有w 3 c 或o a s i s 作为最终版本的发布方和维护方。 2 w e b 服务体系结构及其关键技术 w e b 服务的体系结构描述了3 个角色:服务提供者,服务请求者和服务注册中心,如图 2 2 所示。 w e b 服务提供者的发布服务使用统一描述、发现和集成协议( u n i v e r s a ld e s c r i p t i o n d i s c o v e r ya n di n t e g r a t i o n ,u d d i 【3 】) ,查找服务使用u d d i 和w e b 服务描述语言( w e b s e r v i c ed e s c r i p t i o nl a n g u a g e ,w s d l 3 1 ) 的组合。绑定服务使用w s d l 和s o a p ,其中包 含服务的实际使用。正是由于服务提供者和服务请求者对s o a p 规范的全力支持,才实现 了无缝互操作性。 南京邮电大学硕士研究生学位论文第二章面向服务的架构和面向方面的程序设计 构建w e b 服务的w e b 服务技术家族的主要成员有x m l 、s o a p 、w s d l 和u d d i 。x m l 技术 标准是整个w e b 服务技术架构的基础。在w e b 服务体系中,使用w s d l 来描述服务,u d d i 来发布、查找服务,而s o a p 来执行服务调用。最后通过w e b 服务流语言( w e bs e r v i c e sf l o w l a n g u a g e ,w s f l ) 将分散的、功能单一的w e b 服务组织成一个复杂的有机应用整体。这几 个主要技术将在下面详细介绍。 ( 1 ) x m l 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 。中文含义:可扩展标记语言3 1 。它是一套 定义语义标记的规则,这些标记将文档分成许多部件并对这些部件加以标记。它是元语言, 即定义了用于其他与特定领域有关的、语义的、结构化的标记语言句法。它是国际标准组 织w 3 c ( w o r l dw i d ew e bc o n s o r t i u m ) 为适应w w w 的应用,将s g m l ( s t a n d a r dg e n e r a l i z e d m a r k u pl a n g u a g e ) 标准进行简化的标记语言。s g m l 是完备的,但是它是过于复杂繁琐的 元语言,不适合运用在i n t e r n e t 上。x m l 是它的最小完备子集,继承了s g m l 的强大功能, 而抛弃了s g m l 的复杂繁琐的弊端。 x m l 文件包含三部分:x m l 声明、处理指示( 可选) 和x m l 元素。 ( 2 ) s o a p o s o a p 概述 s o a p 是在分散或者分布式环境中交换信息的简单协议,它基于x m l 协议。它以x m l 形 式提供了一个简单且轻量的用于在分布环境中交换结构化和类型信息的机制,其本身并没 有定义任何应用程序语义,如编程模型或特定语义的实现。而是通过提供一个有标准组件 q 南京邮电大学硕士研究生学位论文 第二章面向服务的架构和面向方面的程序设计 的包模型和在模块中编码数据的机制定义了一个简单的表示应用程序语义的机制,使其能 够用于从消息传递到r p c 的各种系统。 s o a p 的组成结构 s o a p 包含如下4 个部分: i 封装( e n v e l o p ) :封装结构定义了一个整体框架,描述消息中包含的可选或必须的 内容、发送者和处理。 i i 编码规则( e n c o d i n gr u l e s ) :表示应用程序需要使用的数据类型的实例。 r p c 表示( p r cr e p r e s e n t a t i o n ) :定义一个用来表示远程过程调用和应答的协定。 绑定( b i n d i n g ) :使用底层协议交换消息。 这四个部分在功能上是正交的。信封和编码规则是被定义在不同的x m l 命名空间 ( n a m e s p a c e ) 中,这样有利于通过使用模块化的设计获得实现的简明。s o a p 采用了已经 广泛使用的两个协议:h t t p 和x m l 。其中h t t p 用于实现s o a p 的p r c 风格的传输,而x m l 是它的编码模式,一个s o a p 请求实际上就是一个h t t pp o s t 请求。其消息格式如图2 3 所示。 图2 3s o a p 的消息结构 l o 塑塞些皇奎兰堡主型! 窒竺兰垡笙奎望三童雪塑竖堑堕窭塑塑塑旦銮查竺堡壁堡生 w s d l 概述 w s d l 是用来描述网络服务的一种x m l 语言,它用于动态发布w e b 服务、查找己发布的 w e b 服务以及绑定w e b 服务。w s d l 将w e b 服务定义成一系列的端口( p o r t ) ,每个端口用来 表示从抽象端口类型( p o r t t y p e ) 到用于调用w e b 服务的具体通信协议的一个映射。端口类 型由一组与s e r v i c e 提供者交换信息的操作组成,它支持对包含消息的数据类型的定义。 ( 窑) w s d l 的主要元素 w s d l 是一种x m l 应用,其作用是将一个w e b 服务描述为一组服务访问点。w s d l 在描 述w e b 服务时主要使用了以下元素: i t y p e s :提供用于描述所交换信息的数据类型定义。 i i m e s s a g e :代表所传输数据的抽象定义。使用t y p e s 所定义的类型来定义整个消息 的数据结构。m e s s a g e 元素包含了一组p a r t 元素,每个p a r t 元素都是最终消息的一个组 成部分。 i i i p o r t t y p e :定义抽象操作的集合。每个操作可以由一个或多个服务访问点来支持。 一个p o r t t y p e 可以包含若干个o p e r a t i o n ,而p o r t t y p e 的定义中会引用消息定义部分的 一个到两个消息,作为请求或响应消息的格式。 i v b i n d i n g :为由特定p o r t t y p e 定义的操作和消息指派具体的传输协议和数据格式 规范。 v p o r t :为绑定( b i n d i n g ) 指定一个地址,从而定义一个服务访问点。 v i s e r v i c e :用于聚合一组相关的服务访问点构成一个w e b 服务的定义。一个服务往 往会包含多个服务访问入口,而每个访问入口都会使用一个p o r t 元素来描述。 通过扩展使用其它的类型定义语言,w s d l 允许使用多种网络传输协议和消息格式。同 时,w s d l 也应用了当代软件工程中的复用理念,分离了抽象定义层和具体部署层,使得抽 象定义层的复用性大大增强。 ( 4 ) u d d i u d d i 概述 u d d i 能够通过i n t e r n e t 进行业务服务描述、发布和集成,它是一种平台独立的框架 协议。w e b 服务的提供者可以通过u d d i 注册服务登录w e b 服务;被登录在u d d i 系统中的 w e b 服务,可以被其他w e b 服务消费者根据服务的名字、服务提供者、功能、对象等条件 来发现和检索。 u d d i 的数据信息以w s d l 语言定义的形式加以存储,以s o a p 协议作为通信方式。并且 u d d i 规则定义了一套s o a pa p i ( s o a p 应用程序接口) 用来发布和检索服务:注册数据模 1 1 堕皇坚曼奎兰塑主墅塞皇兰堡堡三苎三茎耍苎堡墨生墨塑翌堂旦互耍塑堡要堡生 型与s o p 消息格式;s o a pa p i 的w s d l 定义、识别以及对被注册的服务进行u d d l 分类等 几方面的信息嗍。 u d d i 的工作原理 作为w e b 服务协议拽基础的核心部件之一,u d d i 构建于网络传输层和基于s o a p 的枷l 消息传输层之上。u d d i 的核心主要包括两个部分:第一部分是技术标准;第二部分是w e b 服务的注册信息库。在一个典型的场景中,u d d i 注册中心主要负责两项操作:第一项就是 接受服务提供者的声明;第二项就是在注册中心查找匹配用户需要的服务口】。下面简要地 分析u d d i 的工作原理,如图2 4 所示。 发布规葩描进信忠 图2 4u d d i 的工作原理1 6 】 自 5 奎韭调用胍奔避行 简易动亳集成 图24 说明了如何往u d d i 注册中心送入数据,顾客又如何能发现和使用这一信息。 u d d i 注册中心建立在顾客提供的数据的基础上。要使数据能在u d d i 中物尽其用需要以下 几个步骤1 6 】: 第1 步:软件公司和标准组织在u d d i 中注册行业或者企业的说明规范时,开始向注 册中心发布有用的信息。这些规范叫做技术规范( t m o d e l ) 。 第2 步:公司注册关于其业务及其提供的服务的描述信息。 第3 步:u d d i 注册中心会给每个实体指定一个在程序中唯一的标志符,叫做 u u i d ( u n i q u eu n i v e r s a li d e n t i f i e r ) 键,从而能随时了解所有这些实体的情况。u u i d 键 是必须唯一的,并且在一个u d d i 注册中心中从来都不会变化,从而可以利用这些键来引 用与之相关联的实体。 1 2 堕塞塑皇奎堂堡主堕窒生兰篁丝奎墨三垦塑塑里堑竺丝塑塑雪塑垄雪竺堡壁堡生 第4 步:类似于搜索引擎的客户机与商业应用程序使用u d d i 注册中心来发现他们感 兴趣的服务。 第5 步:其他的企业就可以调用这些服务,简便地进行动态集成。 在分析了u d d i 的工作原理后,简要地分析u d d i 是如何工作的,以及u d d i 是如何在 用户端和注册中心进行交互地,具体见图2 5 所示 从图2 5 可以清晰看出,客户端的s o a p 请求传到注册中心节点,该节点的s o a p 处理 器在接受到客户端请求的s o a p 信息包后,会根据其中的信息去查询u d d i 存储资料库,然 后进行相应处理后,然后再反方向将s o a p 消息传至客户端。图2 5 中,绿色实线箭头表 示客户端的请求路径,红色虚线箭头表示服务器端送回消息的路径。 图2 5u d d i 信息交互图 2 2 面向方面的程序设计 2 2 1a o p 的发展及与o o p 的关系 传统的软件开发主要是以面向对象编程技术( o b j e c to r i e n t e dp r o g r a m m i n g ,o o p ) 的思想来实现,借助于面对对象的分析、设计和实现技术,开发者可以将问题领域的“名 词”转换成软件系统中的对象,从而很自然地完成从文体到软件的转换。面向对象设计最 根本的魅力在于它能够将真实世界领域中的实体及各自的行为建模为抽象的对象。但是对 象模型和问题域有时候并不能很好的吻合,有时候一个需求或关注点由若干个对象共同实 南京邮电大学硕士研究生学位论文第二章面向服务的架构和面向方面的程序设计 现,而这些对象又实现了若干其他的需求或关注点,从而导致混乱和交叉。 面向方面编程( a s p e c to r i e n t e dp r o g r a m m i n g ,a o p ) 是一种新的程序设计技术,虽 然其概念的出现不过是这几年的事情,但是很好地体现了简单而深刻的“分而治之 的解 决问题思想。其核心思想是分散关注,从软件系统架构角度看,分散关注点的思想在设计 之初专注于核心需求,其他各种辅助功能的需求作为核心功能需求的扩展和补充。因此各 个功能模块均可看作是系统的关注,一个复杂的系统就是由多个关注点来组合实现的。它 因此很好地解决了面向对象编程和过程化方法不能很好解决的横切( c r o s s c u t ) 问题,如 访问控制、日志、事务等横切关注问题。 从本质上来说,a o p 是o o p 的一种补充,或者说是某种改进。它转换了编程的范式和 视角,关注了一直以来被o o p 忽略或者未能解决好的角落,使开发人员可以更好地将本不 该彼此纠缠在一起的责任分离开来。通过面向方面的编程,可以将程序的责任分开,对象 与方面互不干扰。面向方面的模块并非显式地为对象所调用,而是通过或注入或截取的方 式,去获得被封装的对象内部方法间的消息,然后做出相应地处理。也许面向方面的模式 破坏了对象的封装,却正因为如此,方能降低模块与模块之间的耦合度。同样地,通过对 “方面”的封装,将这些通用的功能从不同的类中分离出来,使不同的模块都能共享同样 的“方面”,这也极大地减少了重复代码。 2 2 2 基本概念 f i l m a n 等人 a s p e c to r i e n t e ds o f t w a r ed e v e l o p m e n t 一书中给出了横切关注分离 研究的核心词汇及最初定义。这些词汇分别是关注分离、关注、横切关注、横切关系、散 布、纠缠、方面、通知、切入点和连接点。它们最初的定义如下: 关注分离:通过使用专门的技术,对整个系统中的元素合理的配置,简化系统开发。 关注:在一个工程过程中,软件工程师关心的事。 横切关注:是一个关注,其实现散布在系统的其他实现中。 横切:是关注的一个特性,关注的实现散布在系统的其他实现中。 散布:没有明确的定义。 纠缠:实现关注的代码混杂在一起。 方面:是一个设计成实现某个关注点的模块单元。 连接点:在程序结构中或者是执行流中的一些定义好的位置,在这些位置可以附加额 外的行为。 堕室些皇奎堂婴! :型! 窒竺兰垡堡苎笙三童耍塑坚堑堕窒塑塑耍塑銮堕堕堡壁丝! 切入点:描述了连接点的集合。 通知:定义了将在连接点执行的行为。 2 0 0 5 年b e r g 等人提出了一种对横切关系的可操作定义。

温馨提示

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

评论

0/150

提交评论