已阅读5页,还剩60页未读, 继续免费阅读
(计算机应用技术专业论文)基于rails框架市场管理系统设计与研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 在w e b 应用程序开发中,随着用户需求日益复杂多变以及改善用户体验的 要求不断提升,软件开发工作越来越繁重。在这种背景下,本文探讨了利用r a i l s 框架实现快速w e b 应用开发的解决方案。 本文的研究目标是在r a i l s 框架构建的同一平台上架构多种r i a 客户端的快 速开发的解决方案,将r a i l s 框架、r e s t 网络结构、a j a x 和f l e x 技术在舵落口 市场管理系统进行了应用。本文努力寻求一种开发叠代迅速、部署方维护方便、 用户体验好,以及能够在保持底层( 服务器端) 架构不变,可以自由的选择程 序的表现方式的一种架构方式或者开发模式。 本文主要做了以下工作: 1 对系统的相关技术进行了阐述和研究,说明了r i a 定义、概念及特点。着 重阐述了系统开发使用的f l e x 技术与r a i l s 框架,研究了w e b 风格的m v c 设计 模式。研究了r e s t 网络架构。 2 介绍了舵落口市场管理系统架构方式以及总体设计。 3 对r e s t 网络架构下m v c 模式的发展进行了讨论,并探讨了基于r e s t 网络架构的m v c 模型。 4 从数据库设计、系统资源结构、模型类的实现以及多种客户端输出等方面 对系统的设计与实现进行了详细阐述和说明。 5 设计实现f l e x 与r a i l s 框架接口,并给出了关键性的代码。同时,介绍了 h t m l 、a j a x 和f l e x 三种客户端的实现,并比较了h t m l 、a j a x 和f l e x 三种客 户端的差异,给出了各种技术的应用范围。 关键词:富网络应用程序,f l e x ,a j a x ,r a i l s ,表述性状态转移 a b s t r a c t i nw e ba p p l i c a t i o nd e v e l o p m e n t ,w i t ht h ei n c r e a s i n g l yc o m p l i c a t e da n dv a r i a b l e d e m a n d so ft h ec u s t o m e r sa n dt h ec o n t i n u o u sl i f t i n go ft h er e q u i r e m e n t si m p r o v i n g t h eu s e re x p e r i e n c e s ,t h ew o r k l o a do ft h es o f t w a r ed e v e l o p e r sb e c o m e si n c r e a s i n g l y o n e r o u s u n d e rt h i sb a c k g r o u n d ,t h i st h e s i sd i s c u s s e sar a p i dw e ba p p l i c a t i o n d e v e l o p m e n ts o l u t i o nw i t ht h er a i l sf r a m e w o r k t h er e s e a r c ht a r g e to ft h et h e s i si st ou s et h ef r a m e w o r ko fr a i l st oc o n s t r u c ta s o l u t i o no ft h ef a s td e v e l o p m e n tw h i c hc a ns t r u c t u r em a n i f o l dc l i e n t so fr i ab u i l to n t h eo nt h es a m ep l a t f o r m ,a n da p p l yt h ef r a m e w o r ko fr a i l s ,t h en e t w o r ks t r u c t u r eo f r e s t , t h et e c h n o l o g i e so fa j a xa n df l e xt ot h ed u o l u o k o um a r k e tm a n a g e m e n t s y s t e m t h et h e s i st of i n da n a r c h i t e c t u r et h a t s u p p o r t s t h ei t e r a t i v ea n dr a p i d d e v e l o p m e n t ,t h ec o n v e n i e n td e p l o y m e n ta n dm a i n t e n a n c e ,a n dt h eg o o d u s e r e x p e r i e n c e s i t n o to n l yr e t a i n st h eu n c h a n g e da r c h i t e c t u r eo ft h eb o s o ml a y e r ( s e r v e r - s i d e ) ,b u ta l s oc a nf r e e l yc h o o s eas t r u c t u r em o d eo rad e v e l o p m e n tm o d ef o r t h ep r o g r a mi nt h ee x p r e s s i o nf o r m s t h em a i nw o r ko ft h et h e s i si sa sf 0 i l l o w s : 1 t h et h e s i se x p o u n d sa n ds t u d i e st h er e l e v a n tt e c h n o l o g i e so ft h es y s t e m ,a n d e x p l a i n st h ed e f i n i t i o n ,t h ec o n c e p ta n dt h ef e a t u r eo fr i a t h e ni te m p h a t i c a l l y d e s c r i b e st h ef l e xt e c h n o l o g ya n dt h ef r a m e w o r ko fr a i l su s e di nt h es y s t e m d e v e l o p m e n t ,a n ds t u d i e st h ew e bs t y l eo ft h em v cd e s i g np a t t e r na n dt h en e t w o r k a r c h i t e c t u r eo f r e s t 2 t h ea r c h i t e c t u r em o d eo ft h ed u o l u o k o um a r k e tm a n a g e m e n ts y s t e ma n dt h e w h o l ed e s i g na r eg i v e n 3 t h ed e v e l o p m e n to ft h em v c p a t t e r nu n d e r t h en e t w o r ka r c h i t e c t u r eo fr e s t , a n de x p l o r e st h en e t w o r ka r c h i t e c t u r eo fr e s tb a s e do nt h em v cp a t t e r n 4 t h et h e s i sd e s c r i b e sa n de x p l a i n st h ed e s i g na n di m p l e m e n t a t i o no ft h es y s t e m i nd e t a i l ,i n v o l v i n gt h ed a t a b a s ed e s i g n ,t h es t r u c t u r eo ft h es y s t e mr e s o u r c e ,a n dt h e i m p l e m e n t a t i o no ft h em o d e lc l a s sa n dt h eo u t p u to f t h em a n yc l i e n t sa n ds oo n 5 t h et h e s i sd e s i g n sa n di m p l e m e n t st h ef r a m e w o r ki n t e r f a c e so ff l e xa n dr a i l s , a n dg i v e st h ek e yc o d e s a n dt h et h e s i si n t r o d u c e st h er e a l i z a t i o no ft h et h r e ec l i e n t s o nh t m l ,a ja xa n df l e x ,a n dc o m p a r e st h e i rd if f e r e n c e sa n dg i v e st h ec o r r e s p o n d i n g a p p l i c a t i o nr a n g ef o re a c ht e c h n o l o g y k e y w o r d s :r i a ,f l e x ,a ja x ,r a i l s ,r e s t 独创性声明 本人声明,所呈交的论文是本人在导师指导下进行的研究。i :作及取得的研 究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其 他人已经发表或撰写过的研究成果,也不包含为获得武汉理l :入学或其它教育 机构的学位或证书而使_ h 过的材料。与我一同j i :作的同志对本研究所做的任何 贡献均已在论文中作了明确的说明并表示了谢意。 关于论文使用授权的说明 本人完全了解武汉理r 火学有关保留、使h j 学位论文的规定,即学校宵权 保留、送交论文的复印件,允许论文被卉阅和借阅;学校可以公布论文的全部 或部分内容,可以采用影印、缩印或其他复制手段保存论文。 ( 保密的论文在解密后应遵守此规定) 哆期: 武汉理 :大学硕士学位论文 1 1 研究背景 第1 章绪论 计算机应用程序经过不断的发展和计算机网络的不断变革,以b s 模式的 w e b 应用程序( w e b a p p i i c a t i o n ) 占据了主导地位。然而传统的w e b 应用程序无法 使用丰富的效果来展示数据,用户体验比较糟糕。随着w e b 应用程序复杂性越 来越高,传统的w e b 应用程序己经渐渐不能满足用户更高的体验要求了。为了 满足这种需求,产生了r i c hi n t e r a c ta p p l i c a t i o n ( r i a ) 技术。r i a 程序是将桌面应 用程序的用户交互体验与传统的w e b 应用的部署灵活性和低成本结合起来并提 供互动多媒体通、信的实时快捷的新一代网络应用程序。 由于操作系统的差异,用户程序对部署运行环境的依赖,“一次编写,随处 运行 并没有完全实现。浏览器的差别、安全性的考虑,增强了可降解性的需 求。一种架构( 或者说是一个后台) 多种客户端的开发模式,可以降低程序设 计开发的复杂度,增强系统的可维护性,提高代码复用性。当前用户需要日益 复杂多变以及改善用户体验要求的不断提升,以至于软件开发者工作日益繁重, 软件开发的软件即服务( s o f t w a r ea sas e r v i c e ,s a a s ) 的发展方向更需要软件设计 开发者在一种架构上为客户提供更多种的选择。 f l e x 提供了一整套的r i a 组件框架和运行时数据处理服务来构建复杂的网 络应用程序。f l e x 具有基于标准的架构,与当前企业开发人员的工具、方法和 设计模式互补l 。 r e s t 网络架构使构建网络超媒体分布式系统更加简单1 2 1 ,使开发基于w e b 的多种客户端输出成为可能。r e s t 网络架构将是构建企业分布式应用新的方 向。 r u b yo i lr a i l s ( 以下简称r a i l s ) 是使用纯面向对象脚本r u b y 语言编写的一个 使w e b 应用程序的开发、部署和维护变得更容易的全栈式的基于m v c 架构的 框架。使用r a i l s 开发w e b 程序更自然、更简单、更快速1 3 1 。 在这种背景下,本文将这些技术在武汉市舵落口大市场办公自化系统的子 系统舵落口市场管理系统进行了应用,探讨了利用r a i l s 框架快速开发w e b 应用的解决方案。 武汉理1 :入学硕士学位论文 1 2 研究的目的和意义 “仓廪实则知礼节,衣食足则知荣辱”。人类发展总是不断满足自己需求的, 计算机程序也是一样。当服务器端解决了若干重要问题之后,服务器端的技术 问题基本得到了解决后,用户对简单、丑陋的b s 结构的客户端越来越觉得不 满,提高用户的体验逐渐成为w e b 程序要解决的首要问题。 客户需要不确定因素始终是困扰软件开发者重要问题,这使得软件开发始 终不能彻底当做产业对待,更多的倾向为服务业。随着用户对应用程序复杂性 要求的日益增加,无论是传统的瘦客户端还是胖客户端都会受到客户的挑剔, 从而导致软件开发者不断更改设计、修改代码。 由于上述原因本文努力寻求一种开发叠代迅速、部署维护方便、用户体验 好,以及能够在保持底层( 服务器端) 架构不变,可以自由的选择程序的表现 方式的一种架构方式或者开发模式。 r a i l s 框架、r e s t 网络架构和r i a 应用都处于起步发展阶段,研究它们并 使它们无缝的结合一起,可以提高w e b 程序开发的效率、提高用户的体验,使 w e b 程序得到更广泛的应用,并且对基础开发平台的研究有一定的指导作用和 参考意义。 1 3 本文主要工作 本文论述了基于r a i l s 框架市场管理系统的设计开发实现,主要做了以下工 作: ( 1 ) 阐述了系统开发的相关技术以及w e b 下m v c 设计模式,研究了r e s t 网络架构。 ( 2 ) 介绍了舵落口市场管理系统总体设计及架构方式。 ( 3 ) 分析r e s t 网络架构与m v c 模式共享性的问题,探讨了基于r e s t 网络 架构的m v c 模型。 ( 4 ) 说明了系统数据库、模型类设计和多种客户端输出实现,阐述了系统资 源结构。 ( 5 ) 设计了f l e x 与r a i l s 框架的接口,并给出关健性的代码。同时,实现了 h t m l 、a j a x 和f l e x 三种客户端,并分析了三种技术的特点,探讨了它们的适 2 武汉理r 大学硕士学位论文 用环境。 1 4 本文的组织结构 本文分为六章: 第一章绪论。主要对课题研究背景、国内外研究发展的现状、本文主要工 作等进行了论述。 第二章技术概述。主要说明了r i a 定义、概念及特点。着重阐述了系统开 发使用的f l e x 技术与r a i l s 框架,研究了w e b 风格的m v c 设计模式。 第三章r e s t 。主要研究了一种分布式超媒体系统网络架构r e s t 网络 架构,从r e s t 规范、r e s t 架构方式、资源定位、r e s t 与c r u d 与多客户端 等方面探讨了r e s t 网络架构。 第四章舵落口市场管理系统的架构与设计。介绍了系统开发环境、系统架 构和系统分析设计。分析了r e s t 网络架构与m v c 模式共享性的问题,探讨立 了基于r e s t 网络架构的m v c 模型。分析设计了系统功能模块、用例,跟据用 例对系统模型类进行了分析。最后介绍了系统的数据库与系统资源结构的设计。 第五章舵落口市场管理系统详细设计实现。主要从模型类的实现、多种客 户端输出、f l e x 与r a i l s 框架接和广告收费子系统三种客户端的实现对系统的实 现阐述和说明。最后比较了三种客户端的差异,给出了各种技术的应用范围。 第六章总结与展望。对全文工作进行了总结,并指出技术的发展趋势和下 一步工作的重点,展望了r a i l s 框架和r e s t 网络架构在企业应用中发展的前景。 3 武汉理r = 大学硕士学位论文 第2 章相关技术研究 2 1 富网络应用程序 r i a ( r i c hi n t e r n e t a p p l i c a t i o n s ,r t a ) ,一般翻译为富网络应用程序。富网络 应用程序是将桌面应用程序的交互的用户体验与传统的w e b 应用的部署灵活性 结合起来的网络应用程序。 传统的浏览器月艮务器( b r o w s e r s e r v e r ,b s ) 应用程序架构的缺点主要是受制 于浏览器和h t m l 语言,缺少丰富的效果来展示数据,用户体验比较糟糕。为 了克服浏览器的局限性,实现具有高度互动性、丰富用户体验以及功能强大的 客户端,引入了富网络应用程序r i a ,r i a 应用程序结合了桌面应用程序的反应 快、交互性强和用户体验丰富的优点与w e b 应用程序易部署、跨平台的特剧4 1 。 2 1 1r i a 概念 r i a 是集桌面应用程序的最佳用户界面功能与w e b 应用程序的普遍采用和 快速、低成本部署以及互动多媒体通信的实时快捷于一体的新一代网络应用程 序。 r i a 中的r i c hc l i e n t ( 丰富客户端) 提供可承载已编译客户端应用程序( 以文 件形式,用h 1 呼传递) 的运行环境,客户端应用程序使用异步客户服务器架构 连接现有的后端应用服务器,这是一种安全、可升级、具有良好适应性的新的 面向服务模型,这种模型由采用的w e b 服务所驱动【5 1 。结合了声音、视频和实 时对话的综合通信技术使r i a 具有前所未有的网上用户体验。 不像j 2 e e 程序那样,客户端的请求会导致系统生成一个页面再返回客户端, 一个富网络应用系统程序可以支持更小的单元或组件,这些组件从小到一个投 票问题到一个完整的视图或界面,富客户模型将界面分解成许多的既可以和用 户直接交互又可以和服务器进行通信的小单元模块。这种将应用程序的设计从 以一个个相对独立的页面为中心转移到以组件为中心上来,这种转变将会使客 户层的设计提升到一个新的层次,并且会使客户层变得更加灵活。富客户层不 再成为服务器响应的最终端,这同时也使程序的性能得以提高,用户使用的感 觉就好像程序不需要和服务器进行通信或者只是偶尔才需要进行通信。富客户 4 武汉理f :人学硕士学位论文 端应用程序模型另一个特点是事件模型,它不像传统的模型那样,等服务器收 到请求后才由上至下的创建客户端界面,也不用预测事件的顺序。既然每个组 件都是独立的,就没有必要因为一个请求而做出影响整个视图的反应。要使每 个组件都具有向服务器传送信息的能力就需要每个组建知道如何处理服务器传 递回来的信息。在富网络应用系统中,客户端和服务器端交互数据是不同步的, 这样就可以控制组件创建信息发送给服务器和处理服务器的响应,可以为更零 散的控制去藕和分离程序功能并且组建面向服务的程序结构。 图2 - 1 是一个典型的r i a 体系结构,x m l 通常被用作数据传输的格式,有 时也被用来描述窗体的布局。在很多的实例中,客户端可以保持与数据源的连 接,这样服务器能够实时地对客户端数据进行更新。对数据的访问可以通过w e b 服务调用来完成【6 1 。 二三匠 客户端运行环境 1。一,j j x m l i j 磊r 应用程序控制层 i 一一一一一一一:w bs 一i c 调运 一 ls q l 图2 - 1r i a 体系结构 2 1 2r i a 特点 r i a 是w e b 应用程序和传统桌面应用程序的跨越,将一些操作转移到了客 户端 r l 。富网络应用系统( r i a ) 和j 用具有很强交互性的富客户端技术来为用户提 供一个更高和更全方位的网络体验。r i a 具有的桌面应用程序的特点包括:在消 息确认和格式编排方面提供互动用户界面,在无刷新页面之下提供快捷的界面 响应时间,提供通用的用户界面特性如拖放( d r a ga n dd r o p ) 以及在线和离线操作 能力。同时r i a 具有的w e b 应用程序的特点包括:立即部署、跨平台一、采用 逐步下载来检索内容和数据以及可以充分利用被广泛采纳的互联网标准。r i a 具 有通信的特点则包括实时互动的声音和图像。客户机在r i a 中的作用不仅是展 5 武汉理i :人学硕士学位论文 示页面,它还可以在幕后与用户请求异步地进行计算、传送和检索数据、显示 集成的用户界面和综合使用声音和图像,这一切都可以在不依靠客户机连接的 服务器或后端的情况下进行1 8 1 。 目前r i a 解决方案有f l e x 、a j a x 、l a s z l o 、x a m l 、j a v a 、x u l 等等1 9 1 。 2 2f l e x 技术 2 2 1f l e x 架构 f l e x 是a d o b e 公司的支持r i a ( r i c hi n t e m e ta p p l i c a t i o n s ) 开发和部署的平台, 它是一系列发展中的技术和产品线的概括词,包括f l e xf r a m e w o r k ,f l e xb u i l d e r 2 ,f l e xe n t e r p r i s es e r v i c e s2 等【1 们。 f l e x 试图通过提供一个程序员们已经熟知的工作流和编程模型,让程序员 比从前更快更简单地开发动画及r i a 应用。在多层式开发模型中,f l e x 应用属 于表现层。f l e x 的语言和文件结构也试图把应用程序的逻辑从设计中分离出来。 f l e x 应用程序与传统的h t m l 应用程序的主要区别在于f l e x 应用程序处理 最适合在客户端运行,如字段校验、数据格式、分类、过滤、工具提示、合成 视频、行为及效果等。f l e x 可使开发人员更好地交互应用程序,这种应用程序 使用户可以迅速反应、在不同状态与显示间流畅过渡,并提供毫无中断的连续 的工作流。 f l e x 是编写表示层的语言,其数据需要服务器端提供。f l e x 应用程序框架 由拥有丰富的用户界面组件、用于排布这些组件的基于x m l 的标记语言 m x m l ,以及可以处理用户交互的面向对象编程语言a c t i o n s c r i p t 以及f l e x 类 库构成。开发人员利用m x m l 及a c t i o n s c r i p t 编写f l e x 应用程序。利用m x m l 定义应用程序用户界面元素,利用a c t i o n s c r i p t 定义客户逻辑与程序控制。f l e x 类库中包括f l e x 组件、管理器及行为等。利用基于f l e x 组件的开发模型,开发 人员可在程序中加入预建的组件、创建新组件或是将预建的组件加入复合组件 中。f l e x 内置的界面可以由f l a s h 播放器显示在客户端。f l e x 运行时服务提供用 于f l e x 应用程序地数据管理和安全集成【1 1 l 。 由此可见,f l e x 的实质是: ( 1 ) 描述应用程序界面的m x m l 语言 ( 2 ) 脚本语言( a c t i o n s c r i p t ) ,用于处理用户与服务器事件,构建复杂数据模 6 武汉理j :人学硕十学位论文 ( 3 ) f l e x 类库,包括容器,控件,数据模型和行为 ( 4 ) 运行时的即时服务 ( 5 ) 由m x m l 文件生成s w f 的编译器 2 2 2 在n 层模型中应用f l e x 企业级应用程序通常都是采用分层模式设计的,将个企业应用程序细分 为功能组件,又将这些组件划分成若干层。这样就把整个系统划分成明显的功 能单元:客户端,表示层,业务逻辑层,综合层( i n t e g r a t i o n ) ,e i s 。这种架构确 保了责任的明确划分,使系统更加易于维护和扩展【1 2 l 。 f l e x 在n 层的w e b 程序体系结构作用如图2 2 所示。 f l a s hp l a y e r 运行f l e x 程序 l f l e x 数据服务器 厂、 e j b sw e bs e r v i c e sj a v a b e a n s 数据库 图2 2f l e x 在1 1 层的w e b 程序体系结构的作用 在f l e x 应用程序中,客户端程序和表示层的逻辑处理程序能够同时运行在 客户机的由h a s hp l a y e r 提供的平台上。f l e x 应用程序通过f l a s hp l a y e r 处理用户 交互,数据的校验,h 1 曙、s o a p 和a m f 的数据请求,以及其它一些原本在服 务器上执行的操作。因为f l a s hp l a y e r 在各个主要的操作系统和浏览器上都始终 如一地运行,开发者不必担心f l e x 应用程序是否会在某个特定浏览器或操作系 统上无法正常工作。 f l e x 是用来编写表示层的,其数据需要服务器端提供。服务器端可以使用 j a v a 、n e t 、p h p 、r u b y 等多种服务器,通过帅、s o a p 、a m f ( a c t i o ns 面p t 7 武汉理工人学硕十学位论文 m e s s a g i n gf o 咖a t ) 通信,较好的屏蔽了不同服务器的差异。在表示层上应用f l e x 技术不需要改动业务逻辑层和综合层,这就意味可以重用原有网络应用程序中 的业务逻辑层和综合层代码。 2 3r a i l s 框架 2 3 1 使用r a i l s 的理由 r u b yo nr a i l s ( 以- f 简称r a i l s ) 是使用纯面向对象脚本r u b y 语言编写的一个 使w e b 应用程序的开发、部署和维护变得更容易的全栈式的基于m v c 架构的 框架。使用r a i l s 开发w e b 程序更自然、更简单、更快速。 r a i l s 使用a c t i v e r e c o r d 架构做为自己的m o d e l 层,其属于 o r m ( o b j e c t - r e l a t i o n a lm a p p i n g ,o r m ) 的范畴。o r m 用来把对象模型表示的 对象映射到基于s q l 的关系模型数据库结构中去,可以使用面向对象技术操作 关系数据库【1 3 j 。a c t i v e r e c o r d 可以的实现对数据库映射与建模。 r a i l s 还提供了r e s t ( 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 ,r e s t ) 的支持。r e s t 最成功的互联网分布式架构之一,使用r e s t 使得开发更简便,使用r e s t 能使 得系统的可伸缩性进一步提高。 2 3 2r a i l s 主要特点 r a i l s 框架遵循了约定优于配置和d r y ( d o n tr e p e a ty o u r s e l f ) 两个原则,主 要有如下的6 大特点1 1 4 j 。 ( 1 ) 全栈式的m v c 框架。r a i l s 是一个全栈式的m v c 框架,换句话说,通 过r a i l s 可以实现m v c 模式中的各个层次,并使它们无缝地协同运转起来。 ( 2 ) 约定优于配置。为了说明各个对象之间的关联关系,一般的w 曲应用开 发框架往往采用写入x m l 配置文件的方法。这种方式虽然可以解决这些问题, 但是却带来了管理上的混乱。r a i l s 对此的态度是约定优于配置,这意味着在r a i l s 中不会出现x m l 配置文件。r a i l s 使用w e b 应用多年来积累的各种常见约定( 更 具体地说是命名规则) 来代替x m l 配置文件,而在r a i l s 内部的映射与发现机 制根据这些约定可以实现对象之间的关联。 ( 3 ) 更少的代码。使用约定来代替x m l 配置文件说明r a i l s 本身完成了大量 8 武汉理工大学硕士学位论文 的底层工作,这意味着使用更少的代码来实现应用程序是极有可能的。r a i l s 遵 循d r y ( d o n tr c p c a ty o u r s e l f ) 原则,系统中的每项知识只应该在一个地方描述, 在r a i l s 应用程序中几乎会看不到重复的代码,每件事情只需要说一遍一一只要 在符合m v c 架构惯例的某个地方说一遍。此外,代码量的缩减也减小了出现 b u g 的可能性,降低了维护程序和升级程序的难度。 ( 4 ) 生成器。r a i l s 使用的实时映射技术和元编程技术,免去了开发人员在开 发过程中编写大量样板文件代码的烦恼。在少数需要使用样板文件代码的时候, 开发人员可以通过r a i l s 内建的生成器脚本实时创建,而不再是通过手工编写。 r a i l s 的这个特点可以使开发人员更专注于系统的逻辑结构,而不必为一些琐碎 的细节所烦扰。 ( 5 ) 零周转时间。对已有的w e b 应用系统进行修改后,其一般需要经过配置、 编译、发布、重新设置、测试等一系列步骤才能投入使用,这明显浪费了许多 时间。而使用r a i l s 开发w e b 应用系统,可以通过浏览器即时查看程序运行结果, 从而节约了大量的时间。 ( 6 ) 支架系统。r a i l s 的支架系统可以自动为任何相关的数据库表创建一套包 含标准c r u d 操作和前台视图的系统。通过支架系统,开发人员可以方便快捷 地操纵数据库中的数据表。此外,r a i l s 也允许开发人员使用自己设计的代码或 视图来替换自动生成的代码和视图。 2 3 3r a i l s 的工作原理 r a i l s 是一个全栈式的m v c 框架,换句话说,通过r a i l s 可以实现m v c 模 式中的各个层次,并使它们无缝地协同运转起来。r a i l s 使用a c i o n v i e w 、 a c t i o n p a c k 和a c t i v e r e c o r d 模块分别实现了m v c 框架的v i e w 、c o n t r o l l e r 和 m o d e l 层【1 5 l 。 无疑r a i l s 的a c t i o v e r e c o r d 模块是r a i l s 框架的核心。r a i l s 的a c t i v e r e c o r d 是对m a r t i nf o w l e r 的a c t i v er e c o r d 设计模式的同名实现,它对应于m v c 设计 模式中的m o d e l 层,属于o r m 层的范畴1 1 6 1 。a c t i v e r e c o r d 可以轻松地实现对数 据库映射与建模,即将数据库表映射到类、将记录映射到对象、将字段映射到 对象的属性,同时为其添加访问器和调整器,动态生成对数据库的c u r d ( 数 据库的c r e a t e ,r e a d ,u p d a t e ,d e l e t e ) 操作。a c t i v er e c o r d 放弃了大量烦琐的配 置文件,取而代之的是名称约定,即“约定优于配置 ,使用了一组缺省设置, 9 武汉理r 人学硕+ 学位论文 除了数据库连接之外,几乎不需要任何配置信息。 a c t i v e r e c o r d 通过一些非常直观的命名规则和动态的反射实现了模型对象 封装数据库中的一行数据并提供c r u d 的默认操作。当创建一个a c t i v e r e c o r d : b a s e 的子类时便和数据库中以类名的复数形式做为表名的表建立了映射, a c t i v e r e c o r d 会在运行时动态判断数据库中有哪些字段,并将数据库结构反映在 对应的模型类1 1 7 1 。a c t i v e r e c o r d 从数据库中读取信息时,会使用读取的结果构造 一个模型对象,此读取的结果的数据便是该对象属性数据。a c t i v e r e c o r d 的模型 类通过继承的a c t i v e r e c o r d :b a s e 类,而获得了c r u d 操作的默认处理。 a c t i v e r e c o r d 通过数据库创建特定命名约定的字段和声明相应方法可是很 方便实现数据库表间的关联,同时也为模型对象增加了特定的方法【1 8 】。只要在 模型类中定义继承体系,并确保与基类对应的数据库表包含继承体系所有的属 性字段,以及用于描述每条记录所对应对象型的附加字段( t y p e 字段) a c t i v e r e c o r d 便可以实现单表继承( s i n g l et a b l ei n h e r i t a n c e ) 。a c t i v e r e c o r d 可以 在保存对象时能够自动的对模型对象进行校验。a c t i v e r e c o r d 借助回调方法 ( c a l l b a c k ) 可以编写代码参与到模型对象的生命周期中,实现更复杂的校验、将 数据库中保存的值映射成自定义的值、阻止某些操作【1 9 1 。 r a i l s 的控制器负责从a c t i v e r e c o r d 取回这些模型数据,由于r a i l s 的一体化 的设计a c t i o n p a c k 与a c t i v e r e c o r d 交互并不需要额外的编写代码,a c t i o n p a c k 可以直接读取a c t i v e r e c o r d 对象。a c t i o n p a c k 向用户或( 者说是向视图v i e w ) 发出 应答是通过a c t i o n 来完成的。a c t i o n p a c k 的路f l 了( r o u t e ) 组件会将控制器及其a c t i o n 置换成相应的u r l 发送到客户端并进行反向操作。r a i l s l 2 路由组件提供了对 r e s t 支持l 删。 a c i o n v i e w 模块让开发者可以方便地渲染模板。主要有r h t m l 模板、r x m l 模板和r j s 模板,分别生成h t m l 、x m l 或者是j a v a s c r i p t 给用户,完成视图 ( v i e w ) 部分。a c t i o n v i e w 中可以直接使用a c t i o n p a c k 对象,甚至是a c t i v e r e c o r d 对象。 r a i l s l 2 以后的版本提供了对r e s t 支持,使r a i l s 框架具有分布式使用的 特点,而且不需要为其它的使用单独编写接口。因此使用r a i l s 框架为主体的应 用程序的表示层不再仅仅停留在h t m l 表现层次之上,可以有更丰富多彩的表 现形式。 1 0 武汉理工大学硕十学位论文 2 4w e b 风格的m v c 模式研究 2 4 1m v c 设计模式 m v c ( m o d e l - v i e w c o n t r o l l e r , m v c ) ,即把一个应用的输入、处理、输出流 程按照m o d e l ,v i e w ,c o n t r o l l e r :的方式进行分离,这样一个应用被分成三个 层模型层、视图层、控制层1 2 1 , 2 2 1 。如图2 3 所示。 业务处理 图2 - 3m v c 程序设计模型 模型( m o d e l ) :就是业务流程状态的处理以及业务规则的制定。业务流程的 处理过程对其它层来说是黑箱操作,模型接受视图请求的数据,并返回最终的 处理结果。业务模型的设计可以说是m v c 最主要的核心。业务模型还有一个很 重要的模型那就是数据模型。数据模型主要指实体对象的数据保存( 持续化) 。 视图( e w ) 是用户与系统交互的界面,显示基于模型的数据。视图是用来显 示数据的,对于同一个模型的数据,往往可以显示不同的形式。 控制( c o n t r o l l e r ) 可以理解为从用户接收请求,将模型与视图匹配在一起,共 同完成用户的请求。划分控制层的作用也很明显,它清楚地告诉你,它就是一 个分发器,选择什么样的模型,选择什么样的视图,可以完成什么样的用户请 求。控制层并不做任何的数据处理,它只把用户的信息传递给模型,告诉模型 做什么,选择符合要求的视图返回给用户。因此,一个模型可能对应多个视图, 一个视图可能对应多个模型。 m v c 要求对应用分层,这虽然要花费额外的工作,但使得产品的结构清晰, 武汉理1 = 大学硕十学位论文 产品的应用通过模型也可以得到更好地体现。其优点可以表述如下1 2 3 】: ( 1 ) 松散的耦合:多种设计组件以灵活的方式相互作用; ( 2 ) 并行的开发:职责明确,可以将功能划分为不同的组件,以便不同的开 发人员进行开发,设计清晰,容易集成,便于维护; ( 3 ) 可扩展性:控制器和视图可以随着模块的扩展进行相应的扩展; ( 4 ) 可重用性:将业务规则封装到组件中可提高模块的重用性。广泛采用可 复用的组件,能够降低新项目的开发成本,通过对设计的复用,使得开发小组 之间更易于沟通,设计的系统更易于理解。 ( 5 ) 模块的有效性:如果需要,任何组件甚至整个模块都可以换出换进,视 图、控制器或模块的程序改变不会影响到其他程序的运行,不同组件的开发能 够同时进展; ( 6 ) 模型的可移植性:因为模型是独立于视图的,所以可以把一个模型独立 地移植到新的平台工作,需要做的只是在新平台上对视图和控制器进行新的修 改。 2 4 2w e b 风格的m v c 设计模式 m v c 是一种目前广泛流行的软件设计模式。随便w e b 应用程序大量的涌现, m v c 被大量的引入到w e b 应用程序中来。 然而在经典m v c 中用户与视i 訇( v i e w ) 进行交互,填入数据并点击按钮,控 $ 1 器( c o n t r o l l e r ) 接收到来自视图的事件并对模型( m o d e l ) 进行操作,根据用户提 供的数据更新模型( m o d e l ) 视图也会接到“模型改变”的事件通知,因此,它会 随着模型而更新,将模型更新的结果显不给用户。通过注册更多的事件监听器 对多个视图和控制器进行配置,以便让它们使用相同的共享模型。这种模式在 单机且实时更新的应用程序中可以起到很好的作用。但是,在w e b 世界中,这 种经典的m v c 模式就失效了。在w e b 世界中,视图是在客户端的浏览器中生 成的,而控制器和模型则是在服务器端,经典的m v c 在h t i p 和h t m l 的世 界里是行不通的。 在w e b 版本的m v c 中,视图是不能经典m v c 的那样直接调用控制器的, 但是可以基于w e b 请求映射成不同的u r l 。视图不是一个可以被更新的对象, 而是在客户端发出一个新请求的时一候随之重新呈现的w e b 页面。同时,模型 也不能将自身的改变通知视图,因为视图呈现于另外一台计算机的用户浏览器 1 2 武汉理工大学硕十学位论文 中。因此,视图每次都需要依照最新的数据重新生成。 图2 4 展示了w e b 风格的m v c 模式。在w e b 世界中的经典m v c 应用程 序是通过使用前端控制器( f r o n tc 0 n t r o l l e r ) 模式来实现的1 2 4 j 。这个模式包含了一 个分发器( 在r a i l s 的w e bm v c 实现中,通过路由来实现分发器) ,而分发器将 请求u r l 映射至需要被执行的命令实例( c o m m a n di n s t a n c e ) ,命令实例在r a i l s 中就是a c t i o n 。a c t i o n 与系统后端的服务进行交互,通常这些服务会组合在一起 做为模型。命令实例在处理完业务逻辑之后返回一个码值,而这个返回码会映 射到某一个视图( 通常是一个w 曲页面模板,譬如j s p 和r a i l s 的r h t m l 模板) 。 最后,结合控制器和模型,视图将会呈现给用户。 2 5 本章小结 图2 4w e b 风格的m v c 模式 本章首先说明了r i a 定义、概念及特点。接着着重阐述了系统开发使用的 f l e x 技术与r a i l s 框架。最后研究了经典的m v c 设计模式以及w e b 模式下的 m v c 设计模式变化和发展。 1 3 武汉理工大学硕士学位论文 第3 章r e s t 网络架构 r e s t ( 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 ,r e s t ) 中文一般翻译为“表述性状态 转移 ,他是由r o yt h o m a sf i e l d i n g 博士2 0 0 0 年在他的论文( ( a r c h i t e c
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026及未来5年可倾台面万能圆锯机项目可行性研究报告(市场调查与数据分析)
- 2026及未来5年发电机组滤芯项目可行性研究报告(市场调查与数据分析)
- 2026及未来5年双面木工压刨床项目可行性研究报告(市场调查与数据分析)
- 2026及未来5年双组份水性环氧地坪底漆项目可行性研究报告(市场调查与数据分析)
- 2026及未来5年双开二针管夹项目可行性研究报告(市场调查与数据分析)
- 2026及未来5年L-半胱氨酸碱项目可行性研究报告(市场调查与数据分析)
- 2026年专业技术人员继续教育公需科目-合作与共赢继续教育历年参考题库含答案解析
- 2026山西省机关事业单位工人技术等级考试(收银审核员·高级)历年参考题库含答案详解
- 2026山西法检系统书记员招聘考试(职业能力测试)历年参考题库含答案详解
- 2026山西乡村医生招聘考试(公共基础知识)历年参考题库含答案详解
- 2025年公司主要负责人安全培训考试试题及答案(有一套)
- 文学概论讲义
- 河南警察学院引进高层次人才考核办法(试行)
- 医院审方中心工作制度
- 2026年中铝集团校园招聘笔试
- 专科医生如何带教全科医生课件
- 2026年春岭南版(新教材)小学美术二年级下册教学计划及进度表
- 雨课堂学堂在线学堂云《Age of Sustainable Development(SDG Academy)》单元测试考核答案
- 人保财险理赔培训
- 教育培训机构招生销售人员面试问题集
- 雕塑总体施工方案(3篇)
评论
0/150
提交评论