




已阅读5页,还剩61页未读, 继续免费阅读
(计算机科学与技术专业论文)基于mvc模式的web开发框架ruby+on+rails的研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
中文摘要 摘要:近年来,随着w e b 应用的逐渐普及和需求的多样化,现有的w e b 应用开发 框架渐渐显现出了技术结构复杂、开发运行速度缓慢等许多不足之处,已经不能 满足开发者的需求,开发者们迫切需要一款能够简化开发过程、降低开发难度、 提高开发效率的框架,而w e b 应用开发框架r u b yo nr a i l s 的突起在极大程度上满 足了这种需求。 诞生于2 0 0 4 年7 月的r u b yo nr a i l s 开发框架可以说是w e b 应用开发框架中 的新军,可它却在w e b 开发领域的几百个m v c 和o r m 框架的包围中脱颖而出, 不到半年的时间里就迅速成为w e b 开发者社群特别是主流j 2 e e 社群关注的焦点, 近几年更是炙手可热。 本文简要介绍了r u b yo nr a i l s 开发框架以及涉及到的关键技术,并着重研究 了该框架的核心体系结构,并在与几款经典开发框架的比较后提出了r u b yo nr a i l s 框架的优缺点,通过基于r a i l s 框架的业务辅助系统的设计与实现论证了优点的正 确性,并结合实践着重在框架性能的缺陷上提出了改进的解决方案。 关键词:w 出应用;开发框架;r u b y o nr a i l s ;m v c ;a e t i v e r e c o r d :性能 分类号:t p 3 1 9 i i i a b s t r a c t a b s t r a c t :i nr c l c a l ty e a r s ,w i t ht h ep o p u l a r i t yo fw e ba p p l i c a t i o n s a n dt h e d i v e r s i f i c a t i o no fd c m a n d t h ee x i s t i n gw e ba p p l i c a t i o nd e v e l o p m e n tf r a m e w o r k ss h o w 1 0 t so fs h o r t c o m i n 萨g r a d u a l l ys u c ha sc o m p l e xt e c h n i c a ls t r u c t u r e ,t h es l o ws p e e dm d e v e l o p m e n t sa n ds oo n t h e s ef r a m e w o r k sc a n ts a t i s f yt h en e e do f d e v e l o p e r sy e t , d e v e l o p e r su r g e n t l yr e q 咖a k i n do fw e bd e v e l o p m e n tf r a m e w o r kw h i c hc a ns i m p l i f y t h ed e v e l o p m e n tp r o c e s s ,r e d u c et h ed i f f i c u l t y i nd e v e l o p m e n ta n dl m p r o v e t h e d e v e l o p m e n te f f i c i e n c y , a n dt h ew e ba p p l i c a t i o nd e v e l o p m e n tf r a m e w o r kr u b y 0 n r a i l sh a sj u s ts a t i s f i e dt h i sr e q u i r e m e n t 1 1 1 er u b vo nr a i l sd e v e l o p m e n tf r a m e w o r kw h i c hw a sb o r ni nj u l y 2 0 0 4i sa 舶s h m a i li nw e ba p p l i c a t i o nd e v e l o p m e n tf r a m e w o r k s ,b u ti tm a k e si t s e l fs t a n do u t 锄o n gh 腑( 1 r e d so fm v c a n do r mf r a m e w o r k si nt h ef i e l do fw e bd e v e l o p m e n t a l l di t b e c o m e saf o c u sr a p i d l yi nw e bd e v e l o p e r sc o m m u n i t y , e s p e c i a l l yi n t h em a i n s t r e a m j 2 e ec o m m u n i t y , a n d i t sh o t t e rr e c e n t l y t h i sp a p e rb r i e f l yi n t r o d u c e dt h er u b yo nr a i l sd e v e l o p m e n tf r a m e w o r ka n di t s k e yt e c h n 0 1 0 西e s ,b a s e do nt h i s ,i tf o c u s e d o nt h ec o r ea r c h i t e c t u r eo ft h ef r a m e w o r ka n d s l 】m m 撕z e dt h ea d v a n t a g e sa n dd i s a d v a n t a g e sa f t e rt h ec o m p a r i s o nw i t hs e v e r a l c l a s s l c 爵锄e w o r k s ,p r o v e dt h ec o r r e c t n e s so ft h et h e o r yt h r o u g h t h ep r o j e c tn a m e db u s u l e s s s u p p o r ts y s t e mb a s e do nr a i l s ,f i n a l l g c o m b i n e dw i t ht h ep r a c t i c et h ep a p e rp u t f o r w a r das o l u t i o ni nt h ee n h a n c e m e n to fp e r f o r m a n c e k e y w o r d s :w e ba p p l i c a t i o n ;f r a m e w o r k ;r u b yo nr a i l s ;m v c ;a c t i v e r e c o r d ; p e r f o r m a n c e c i 。a s s n o :t p 3 1 9 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作和取得的研 究成果,除了文中特别加以标注和致谢之处外,论文中不包含其他人已经发表或 撰写过的研究成果,也不包含为获得北京交通大学或其他教育机构的学位或证书 而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作 了明确的说明并表示了谢意。 学位论文作者签名:签字日期: 妒7 年月f be l 学位论文版权使用授权书 本学位论文作者完全了解北京交通大学有关保留、使用学位论文的规定。特 授权北京交通大学可以将学位论文的全部或部分内容编入有关数据库进行检索, 提供阅览服务,并采用影印、缩印或扫描等复制手段保存、汇编以供查阅和借阅。 同意学校向国家有关部门或机构送交论文的复印件和磁盘。 ( 保密的学位论文在解密后适用本授权说明) 学位论文作者签名: 签字日期:弦。7 年6 月6 日 导师签名:芯2 岛 签字日期:0 口夕年么月,日 致谢 本论文的工作是在我的导师朱卫东教授的悉心指导下完成的,朱卫东教授严 谨的治学态度和科学的工作方法给了我极大的帮助和影响。在此衷心感谢两年来 朱卫东老师对我的关心和指导。 朱卫东教授悉心指导我们完成了实验室的科研工作,在学习上和生活上都给 予了我很大的关心和帮助,在此向朱卫东老师表示衷心的谢意。 朱卫东教授对于我的科研工作和论文都提出了许多的宝贵意见,在此表示衷 心的感谢。 在实验室工作及撰写论文期间,唐建强、马楠等同学对我论文中的r a i l s 研究 工作给予了热情帮助,在此向他们表达我的感激之情。 另外也感谢我的父母、妹妹,他们的理解和支持使我能够在学校专心完成我 的学、i 让。 1 绪论 1 1 研究背景及意义 j 2 e e 的出现,在w e b 应用开发的发展中起到了至关重要的作用。j 2 e e 由于 其本身所具有的跨平台性、开放性而在w 曲应用的开发中占有主流地位,众多开 发人员、研究人员也将焦点聚集在应用该平台的开发框架上,然而j 2 e e 的众多开 发框架中,普遍存在着技术结构复杂、开发运行速度缓慢等严重影响开发效率的 问题,开发人员往往会因为上手困难以及应用中存在的大量繁杂的配置文件而头 疼。在这种背景下,由r u b y 语言编写的基于m v c 模式的r u b y o nr a i l s 框架以其 快捷、简单、清晰的特点,极大的简化了开发过程,显著降低了开发成本,并能 够同时兼顾开发和运行效率,因而一经推出,迅速成为w e b 应用开发中的焦点。 在w e b 开发领域,开发人员梦寐以求的是拥有一个快速、有力的开发手段, 使用更少的代码换取更清晰、健壮的应用,而这正是r u b y o n r a i l s 所追求的。r u b y o nr a i l s 很好的将r u b y 语言的易用性、快速性融入到了r a i l s 框架中。 r u b yo nr a i l s 是一个全栈式的m v c 框架,通过r a i l s 可以实现m v c 模式中 的各个层次,并使它们无缝的协同运转起来,从而避免了m o d e l 、v i e w 、c o n 仃o l l e r 三层技术的分类整合。r u b yo nr a i l s 以很多隐式的功能将敏捷开发思想和m v c 模 式融人w e b 丌发中,使开发者对其产生依赖,在不知不觉中遵守了这些约定。r a i l s 应用程序具有清晰的项目结构, 如:a p p c o n t r o l l e r s ,a p p m o d e l s 和a p p v i e w s , 实现了清晰且专一的m v c 思维方式,而不是让程序员自己写配置文件。当然r u b y o nr a i l s 也支持基于配置文件和注释的扩展形式,以满足应对复杂问题时所需的灵 活性,同时它提倡的d d d ( d o m a i nd r i v e nd e v e l o p m e n t ) 域驱动开发方式是一种最 新的o o 设计概念,受到了业界的广泛重视。 r u b yo nr a i l s 框架本身拥有着以下六大特点【1 】: 1 全栈式的m v c 框架,不需要其他技术的整合。 2 约定优于配置( c o n v e n t i o no v e rc o n f i g u r a t i o n ) ,完全独立于配置文件。 3 代码的大量减少。 4 功能强大的生成器,支持实时映射和元编程技术。 5 零周转时间。 6 独特的支架系统。 这些特点将在下述章节中一一为大家展示出来,在拥有了诸多优点后, r u b yo nr a i l s 以惊人的速度继续发展着,r a i l s 刚刚发布了2 3 2 版本,后续版本也 还在不断完善、不断更新中,或许在不久的将来,r u b yo nr a i l s 也将作为一款w e b 开发的标志性框架被广大开发者所接受。 1 2 国内外研究现状 r u b yo nr a i l s 框架( 简称r o r 框架) 的首次提出是在2 0 0 4 年7 月,由2 6 岁 的丹麦人d a v i dh e i n e m e i e rh a n s s o n 研发的,不同于已有复杂的w e b 开发框架, r a i l s 是一个更高效的w e b 开发框架,并且更符合实际需要,r a i l s 集合了p h p 体 系开发快速的优点和j a v a 体系程序规整的长处,在不到半年的时间中就成为了 w e b 开发人员关注的焦点,在w e b 开发领域的几百个m v c 和o r m 框架中脱颖而 出。r u b yo nr a i l s 发展的迅猛势头也从一个侧面反映了当前开发过程的繁琐,开 发人员需要对框架级的资源有着深入的理解,才能从事开发,而r o r 框架应用r u b y 语言恰恰弥补了这个缺点【2 】。 r o r 框架是基于动态语言r u b y 构建的,其产生和发展是与国外动态语言的兴 旺分不开的。国内动态语言一直处于一个半停滞状态,最近一段时间才有所升温, 究其原因,是由于中国软件业在技术选择与应用上缺乏独立性,太过于依附国外 大公司技术支持。所谓动态语言,是一种内置了丰富数据结构的开发效率很高的 语言,它限制少,能够灵活轻松的完成在传统语言中非常困难的工作,随着敏捷 思想的注入,动态语言的弱点也得到了一定的克服。但是在国内,利用r u b yo i lr a i l s 开发的w e b 应用相对较少,经过一段时间的调研发现,利用r u b yo nr a i l s 开发的 w e b 2 。0 网站大部分都是外包外企的主页,例如:h t t p :w w w s t r u c t u r e d c o m m o n s c o r n 和h t t p :w w w e l c t e c h c o r n 等,广州校内网也利用了这门技术,当然也不缺乏知名 网站,比如j a v a 开发人员非常熟悉的网站j a v a e y e :h t t p :w w w j a v a e y e c o m ,相 信熟悉j a v a 的开发人员都了解这个网站,总体来说r u b yo nr a i l s 技术在国内的发 展还处于一个初级的阶段,但是我认为它还有很大的上升空间。 反观国外,利用r u b yo nr a i l s 开发的w 曲2 o 网站相对较多,技术也相对成 熟不少,并且已经有很多应用投入了正式的使用,较早的典型的例子如: h t t p :w w w 4 3 t h i n g s c o r n 、h t t p :w w w t h e s e r v e r s i d e t o m 和一些w i k i 等,但实际付 诸于应用的多局限于小型应用,这种现象的产生也是很容易理解的,在大型项目 中,开发者考虑的最主要的因素是稳定,因此一门新技术不可能被广泛的应用于 大型应用中,真正利用其开发的大型网站并不多见。想必经过时间的见证,r o r 一定会作为一l - j 稳定、快速的框架在诸多w e b 开发框架中占有自己的一席之地。 而它现在所面临的境地,也应该是一门新技术由兴起走向成熟的必经之路。 2 1 3 论文结构 本文正是基于上述背景,希望对这一门全新的框架级技术做更深入的研究, 并通过r u b yo nr a i l s 应用的开发来体验敏捷思想在w 曲应用中的渗透,通过深入 讨论、研究r a i l s 应用及性能上的优化,以期望解决使用r o r 框架开发的系统中在 环境搭建、开发、部署过程中所遇到的瓶颈。 本文共分为五章: 第一章绪论主要分析论文研究的背景及意义,阐述该技术在国内外的研究 现状,通过研究可以对技术的发展所做出的作用等。 第二章w e b 应用系统开发框架综述从w e b 应用系统的传统开发模式谈起, 介绍了当下流行的集中w e b 开发框架,并对其优缺点进行了总结,进而引出了本 文将要讲述的r u b y o nr a i l s 框架。本章对r o r 框架以及其中涉及到的关键技术做 了简单介绍,并从整体架构上分层、分模块介绍了r u b y0 1 1r a i l s 框架,使读者对 其有相应的了解。 第三章基于r a i l s 的业务辅助系统的实现本章中将就一款基于r u b yo nr a i l s 框架的项目外研社业务辅助系统对r a i l s 框架做更深入的应用,并详细介绍开 发过程中的关键技术、框架选择、顶层配置、以及遇到的问题,并从一个开发者 的角度对遇到的问题给予了解决方案。 第四章实践中r a i l s 框架优缺点及性能调优本章通过结合项目中对r u b yo n r a i l s 的应用,提出了此框架在实际应用中与其他开发框架的不同之处,结合实际 应用详细分析了它的优缺点,并与典型j 2 e e 框架进行了比较,突出其优势。此外 本章最后,我以一个开发者的角度出发对应用此框架会存在的性能问题进行了总 结,并提出了相应的解决方案。 第五章总结与展望在本文的最后,详细总结了文章所做的工作,并对r u b y o nr a i l s 框架的现状与未来进行了分析,展示了r a i l s 3 0 的新功能、新技术,提出 了对r u b yo nr a i l s 开发框架发展的期待。 3 2w e b 应用系统开发框架综述 当代软件工业发展的一大趋势便是软件的构件化,软件复用已经从通用类库 复用发展为面向领域的应用框架。新的应用开发的目的便是提供一个开放的体系 结构,以方便构件的选择、组装和集成。框架的重用性已经成为软件生产中最有 效的重用方式之一。本章由框架重用性入手,从w 曲应用系统的传统开发模式谈 到现代主流w e b 开发框架,并在对它们的优缺点总结之后,引出了本文的研究对 象r u b yo nr a i l s 框架,同时本章对r o r 框架以及其中涉及到的关键技术做了简单 介绍。下面我们将从w e b 应用系统传统开发模式开始谈起。 2 1w e b 应用系统的传统开发方式 在w e b 应用系统的开发方式中,有两种传统方式占有了主要地位,也就是我 们平时所说的模型一和模型- - 3 1 。 1 、模型一:j s p + j a v a b e a n s 模型 在此模型开发的系统中,客户端会通过浏览器发送请求,当对应的j s p 页面进行响应后,调用相应的j a v a b e a n s 进行业务逻辑的处理,如图2 1 所示: 图2 - 1w e b 应用系统传统开发模型一 f i g u r e 2 - iw e ba p p l i c a t i o ns y s t e mt r a d i t i o n a lm o d e lo n e 基于这种模型进行的开发一定程度上分离了页面表现与业务逻辑处理,但是 这种方式需要在j s p 页面中嵌入大量的j a v a 代码,这样会使得页面看起来非 常的臃肿、复杂,不利于程序的阅读、调试和维护;同时由于可读性很差, 给前端页面设计人员和j a v a 开发人员之间的协作带来了不少困难,降低了项 目的整体开发效率。 2 、模型二:j s p + s e r v l e t + j a v a b e a n s 模型 4 模型二的提出有效的解决了模型一中的一些问题,在模型二中,使用 j a v a b e a n s 处理事务逻辑,使用j s p 技术实现页面表现,而使用s e r v l e t 作为系 统的总控制器,响应客户端请求,并将它们分发到各个j s p 页面。 模型二基本上实现了m v c 设计模式,对于模型、视图和控制器进行了分 离,因而具有更清晰的页面表现和开发角色的划分,也正因为如此,它基本 上满足了大多数w e b 应用对体系结构方面的要求。 r 翎l 乡卅o n t r o l l e r ) k s e r v l t j | b j a v a b e a n d l 。n l ) 1 一。a t a b a s e 套 , j i s p a p p l i c a t i o ns e r v e r e n t e r p r i s es e r v e r 图2 - 2w e b 应用系统传统开发模型二 f i g u r e 2 - 2w e ba p p l i c a t i o ns y s t e mt r a d i t i o n a lm o d e lt w o 随着技术的不停进步,这两种模型渐渐的只能作为两种概念的模型来存在了, w e b 应用系统不仅具有类似m v c 方面的共性,还具有一些共性操作,比如请求分 派、调用逻辑、视图组装等等。而模型一和二并没有这方面的服务,因而大型的 w e b 应用不可能采用这两种模型进行开发。 这两种开发方式都会面临诸如开发周期长、客户需求变化频繁、维护成本高、 可扩展性、可测试性比较低等问题,使得项目进展缓慢。因此大型w e b 应用系统 提出一个新的开发模式就显得尤为重要。而如今m v c 的设计模式【4 】( 详见2 3 2 ) 已经成为w e b 应用系统开发的主流,而w e b 开发框架正是这一思想精华的集中体 现。 2 2w e b 应用系统开发框架概述 框架【5 1 ( f r a m e w o r k ) 是整个或者部分系统的可重用设计,表现为一组抽象构 件及构件实例之间交互的方法,它规定了应用的体系结构,阐明了整个协作构件 之间的依赖关系、责任分配和控制流程,为构件复用提供了上下文( c o n t e x t ) 关 系。 5 框架是构件技术、软件体系结构研究和应用软件开发三者发展结合的产物。 大多数情况下框架都以一个构件库的形式而存在,但它也只是框架的一个不可或 缺组成部分。框架的关键在于框架内对象间的交互模式和控制流模式。 框架强调的是软件的设计重用性和系统的可扩充性,以缩短大型应用软件系 统的开发周期,提高开发质量。它的最大的好处就是重用性,而面向对象系统获 得的最大的复用方式就是框架,大型应用往往是由多层的相互协作的框架而组成 的。正因为框架具备代码可重用性的特点,因此从已有的构件库中建立一个应用 也会变得容易的多。目前主流w e b 应用系统开发框架都提供了对数据持久性、事 务、安全性、负载均衡性以及应用集成性问题的较好的解决方案,因此采用框架 技术进行软件开发具备了很多长处是其他开发所不能比拟的: 可重用代码量的增加,使软件生产效率和质量也得到了提高。 框架中允许采取快速原型的开发方式。 有助于项目组成员的协同工作。 大量的重用降低了开发费用,加快了开发速度,减少了参与开发人员,参数 化框架使其适应性和灵活性更强。 目前w e b 应用系统开发框架有很多种,尤其是国外的开源社区,基本上不到 一个月时间就会有一种新的w e b 开发框架问世,例如最常被提及的也是最著名的 m v c 开源框架之一的s t r u t s ,轻量级框架w e b w o r k ,另外s p r i n g ,c o c o o n 等等, 它们的问世在很大程度上加快了w e b 开发框架发展的速度,它们功能性能各有特 点,从多个方面为w e b 应用提供多种服务。下面我们来简单分析一下现有w e b 应 用开发框架的一些概况和特点 6 】。 1 、s t r u t s 7 】 在j a v a 的应用中,s t r u t s 是目前用户群最大、开发商支持最多的开源的w e b 开发框架。它是a p a c h e 基金会j a k a r t a 项目组的一个开源项目,它将s e r v l e t 2 2 和 j s p l 1 标记用作实现的一部分,由一组相互协作的类、s e r v l e t 和j s p 标记组成一 个可重用的系统设计。它有着优美的面向对象设计、清晰的显示逻辑与业务逻辑 的分离,也正因为如此,越来越多的大型w e b 应用系统开发都采用了s t r u t s 开发 框架。s t r u t s 应用主要包括三个部分的实现:配置s t r u t s c o n f i g x m l 文件,实现a c t i o n 类和实现一个视图( v i e w ) 。 但是s t r u t s 框架本身也存在许多的不足之处,例如它上手难度较大,标记库 t a g l i b 需要长时间的学习过程才能熟悉并灵活运用,否则将大大降低开发效率;需 要大量的额外配置并且将c o n t r o l l e r 分开,增加了系统的复杂度等等。 2 、w e b w o r k 【8 】 w e b w o r k 是o p e ns y m p h o n y 组织开发的一款致力于组件化和代码重用的 6 m v c 模式j 2 e ew e b 开发框架。目前w e b w o r k 已经分为了x w o r k l 和w e b w o r k 2 两个项目。 x w o r k l 简介灵活,是一个标准c o m m a n d 模式实现并且完全从w e b 层脱离了 出来,而w e b w o r k 2 正是我们要用到的w e b 开发框架,它建立在x w o r k 之上处理 h 1 v r p 请求和相应。 w e b w o r k 2 具有诸多优秀特性,它是一款灵活的v a l i d a t i o n 框架,允许用户在 x m l 文件中定义验证内容,在运行时通过i n t e r c e p t o r 自动应用,因此完全脱离了 a c t i o n 类;它允许用户在类之间做对象转换( t y p ec o n v e r s i o n ) 支持表达式语言 o g n l ( o b j e c tg r a p h i c a ln a v i g a t i o nl a n g u a g e ) ,允许动态对象图表遍历和方法执 行,使用v a l u es t a c k 透明访问多b e a n s 属性;支持多视图表示,视图部分可以受 用j s p ,v e l o c i t y ,f r e e m a r k e r ,x m l 等技术;容易和第三方软件集成,包括h i b e r n a t e , s p r i n g ,s i t e m e s h 等等。 3 、j s f 9 】( j a v as e r v e rf a c e s ) j s f 是一种用于构建j a v aw e b 应用程序的标准1 框架。它提供了一种以组件为 中心的用户界面( u i ) 构建方法,从而简化了j a v a 服务器端应用程序的开发。 j s f ( j a v as e r v e rf a c e s ) 技术为开发基于网络用户界面的j a v a 开发者提供了标准 的编程接口a p i 以及标签库。就像s t r u t s 框架一样,j s f 定义了一套j s f 标签,能 够生成与j a v a b e a n s 属性绑定在一起的h t m l 表单元素。从应用开发者的角度看, 两种框架十分相似,但是j s f 可能会得到更多的支持,因为j s f 是j a v a 的标准。 在未来的发展中,有可能所有的j 2 e e 应用服务器都需要支持j s f 。 4 、s p r i n gm v c 1 0 】 s p r i n g 是一个服务于所有层面的a p p l i c a t i o nf r a m e w o r k ,它提供了b e a n 的配 置基础、a o p 的支持、j d b c 的提取框架、抽象事务支持等等。在某个层面上如 果不需要s p r i n g 支持,就可以不用s p r i n g 的c l a s s ,也就是说,允许使用它的部分 功能。 s p r i n g 是一个轻量级的j 2 e e 应用开发框架,它的轻量级体现在其本身的基础 结构以及对其他应用工具支持和装配能力上。s p r i n gm v c 最显著的特点就是结构 清晰,a c t i o n 准确的称之为c o n t r o l l e r ,c o n t r o u c r 接收r e q u e s t ,r e s p o n s e 参数, 返回m o d e l a n d v i e w 对象,而在其他的w e b 框架中,a c t i o n 返回值一般都只是一 个v i e wn a m e ( 视图名称) ,m o d e l 需要通过一些其他途径( 比如设置请求参数) 来传递上去。 这些代表性的框架都各有优缺点,而如今w e b 开发框架层出不穷,每个新的 1 j a v ac o m m u n i t yp r o c e s s 规定的j s r - 1 2 7 标准 7 框架的出现都会在原有经典框架的基础上有所改进、有所创新,本文将要讲述的 r u b yo nr a i l s 框架也是如此。 2 3r u b yo nr a i l s 开发框架简介 诞生于2 0 0 4 年7 月的r u b yo nr a i l s 框架【u 】( 简称r o r ) 是w 曲应用开发框 架中的新军,却在w e b 开发领域的几百个m v c 和o r m 框架的包围中脱颖而出, 不到半年的时间里就成为w e b 开发者社群特别是主流j 2 e e 社群关注的焦点,几年 来更是一直处于争论的风1 2 1 浪尖上,热门的开发框架和数据库都在关注着r u b y o n r a i l s 。下面就让我们来研究一下它所具备的特性,进一步分析它能够如此迅猛的 在互联网w 曲开发技术中兴起的原因。首先我们从构建r a i l s 框架的语言r u b y 开 始。 2 3 1 r u b y 语言简介 r u b y 语言【l2 】是一种动态语言,它与p y t h o n 、s m a l r a l k 和p e d 这3 种编程语言 有些类似。r u b y 语言起源于日本,它的研发者是日本人松本行弘( m a t s u m o t o y u k i h i r o ) 。松本行弘在1 9 9 3 年开始着手r u b y 语言的研发工作,他开发r u b y 语言 的初衷是为了提高编程的效率。1 9 9 5 年1 2 月他推出了r u b y 的第一个版本r u b y o 9 5 。截止到目前为止r u b y 的版本号已经发展到1 8 6 ,有了更多的更新和完善。 r u b y 语言的主要特点如下: 1 面向对象语言 在r u b y 语言中,所有操作的东西都是对象,操作的结果同样是对象。同样定 义一个对象时需要创建类,接下来来定义它的实例。在r u b y 语言中对象是通过构 造子( c o n s t r u c t o r ) 而创建出来的,这是类中的一个特殊方法。标准的c o n s t r u c t o r 依然是n e w ( ) 方法,我们可以这样创建一个t e s t 对象: 这两个实例虽然出自同一个类,但却有着各自不同的特征。 在每个类中,我们都可以定义实例方法( i n s t a n c em 甜l o d s ) 。每个方法实现一块 功能,方法便可在类的内部或外部调用。这些实例方法又会访问对象的实例变量, 下面就是一些方法调用的实例,也同时体现了r u b y 语言中一切皆是对象的概念。 在“ 之前的被称为接收者( r e c e i v e r ) ,而其后面的名字就是被调用的方法 名。 2 解释型脚本语言 r u b y 语言是解释型脚本语言,它既有脚本语言强大的字符串处理能力和正则 表达式,又不失解释型语言的动态性。一方面,在最初设计r u b y 语言时,r u b y 的研发者松本行弘考虑到文字处理方面的需要,它借鉴了p e r l 语言在文字处理方 面的成功经验。另一方面,松本行弘将r u b y 语言设定为一种解释型语言,r u b y 的 动态性使得由r u b y 语言编写的程序不需要事先编译即可直接运行,这为程序的调 试带来了方便。同时,这一特点可以实现丌发过程中的快速反馈。 3 其他特点 1 ) 动态载入。可在运行时重定义自己,类也可以在运行时继承或取消。 2 ) 自动内存管理机制。 3 ) 多精度整数。 4 ) 迭代器和闭包。 5 ) 开源项目。 2 3 2r a i l s 框架的m v c 开发模式 1 9 7 9 年,t r y g v er e e n s k a u g 提出了一种开发交互式应用的全新架构。在他的 设计方案中,应用程序被分为了三类组件:模型( m o d e l ) 、视图( v i e w ) 以及控 制器( c o n t r o l l e r ) 。 模型( m o d e l ) 负责维持应用程序的状态,有时这种状态是短暂的,只在用 户的几次操作之间存在;有时则是持久的,需要将其保存在应用程序之外( 通常 是数据库中) 。模型携带着数据,但又不只是数据;它还负责执行施加于这些数据 之上的业务规则。因此模型不仅是数据的容器,还是数据的监护者。 视图( v i e w ) :负责生成与用户进行交互的界面,通常会根据模型中的数据来 生成。对于老式的w e b 应用程序来说,视图就是由h t m l 元素组成的界面,在新 9 j e 至堂厶芏殛堂焦盐至监b 廑田苤荭珏篮框翌继违 式的w e b 应用程序中,h t m l 依然在视图中扮演着重要的角色,但是一些新技术 已经层出不穷,例如在本文所介绍的项目中使用到的r h t m l 便是其中一种,另 外h a m l 也是最近兴起的一门视图表达技术。视图可以允许用户以多种方式输入 数据,但输入的数据是一定不会由视图本身来处理的,视图的唯一工作就是显示 数据。当然出于不同的目的,可能会有多个视图访问同一个模型。 控制器( c o n t r o l l e r ) ;负责怫调整个应用程序的运转,接收用户的输入,并调 用模型和视罔去完成用户的需要。当请求到达时,控制器接收请求,并决定由哪 个模型构什击处理请求,确定由哪个视图来显示模型处理返回的数据。 那么,模型、视图和控制器三个组件便构成了著名的m v c 架构模式,图2 - 3 大致描述了m v c 架构的概念。 弋 曰 7 o j b l 0 w s e 【s e n d sr e q u e s t o c o n t r o i 脚j n t e m c t s 砌m o o e l c o s t o l l e l l n v o k e s e w 固v i e wr e n d e f sp , e x t b r o w s e r s 口e e n 日。日:圄 图 3 :模型- 视图控制器架构 f i g u r e 2 - 3 t h e m o d e l v i e w - c o n t f o l l e r a x c h i t e c t u r e 而本文所讲述的r u b yo nr a i l s 框架也是m v c 框架的一种。r a i l s 强制要求开 发人员将应用程序按照模型、视图以及控制器进行划分,并遵循这一结构分别开 发各个部分的功能,而当程序运行时,r a i l s 会以一定的命名) ;! 【! 范把各个部分组装 在起。与通常只能完成w e b 应用程序某。特定方面需求的j a v a 框架相比( 如 s t r u t s ,本身没有自己的数据持久层) ,r a i l s 包含了非常完整的一套工具。 在一个r a i l s 应用程序中,r a i l s 收到u r l 请求首先会被发送给一个路由组件, 山陵组件判断应该将请求发送到程序的什么部分、如何解析这一请求。在这一阶 段,r a i l s 会找出控制器代码中的某个特定方法( a c t i o n ) ,要求它来处理这个请求, 。j 然a c t i o n 可以查询请求中携带的数据,并可与模型对象进行交互,或者调用其 他a c t i o n 。蛀后视图会将由a c t i o n 为其准备的充足信息展现给用户。图2 _ 4 展示了 r a i l s 处理一个u r l 为h t t p :m y u r l s t o r e a d d _ t o _ c a r v l 2 3 ( 其中1 2 3 为参数,比如 i d 号) 的请求的全过程。 上 一 嘲 1 图2 4 r a i l s 的m v c 构架 f l g i l 陀2 4 r a i l s s m v cs t m c t u r e 2 4 r a i l s 框架整体结构 而本文所讲述的r u b y o nr a i l s 框架也是m v c 框架的一种。r a i l s 强制要求开 发人员将应用程序按照模型、视图以及控制器进行划分,并遵循这结构分别开 发各个部分晌功能而当程序运行时,r a i l s 会以一定的命名规范把各个部分组装 在起。 r a i l s 中控制器是所有业务的核心控制者,它接收来自于外 【f 的h t t p 请求, 经映射米决定由哪个a c t i o n 来处理这个请求通过自身的o r m 机制a c t i v e r e c o r d 来对数据库中数据进行操作。之后将得到的数据再次通过c o n t r o l l e r 由它决定数 据由哪个视图显示出来。整体的简单业务流程如上所述图2 5 便是r u b y r o n r a i l s 框架的一个详细的架构模型: 韭立奎遵盘堂亟堂位垃奎 型曲应田至缝珏堇堑罄篮亟 r u b yo nr a i l s 吨函 曲 蚓2 - 5 r a i l s 架构模型 f i g u r e 2 5r a i l s ss t r u c v r em o d e l r a i l s 足一个用r u b y 语言编写的全栈( f i f l l s t a c k ) 、丌源的w e b 应用程序框 架。从整体架构上可以分为以h l 部分: 2 4 1w e b 服务器 r a i l s 架构可以使用很多不同的w e b 服务器,例如w e b r i c k 、l i g h t t p d 、a p a c h e 、 m o n g r e l 等,不同的服务器自然都有各自的优缺点,下表中列选了其中四种从易用 性、运行速度以及稳定性上进行了对比【”】。用符号“”代表评分 表2 - 1 凹种前端服务器的对比 t a b l e 2 1 c 咖p a d s o no f t h e f o u r k i n d so f w e bs e t t e r s w e bs e a w e r s易用性l 运行速度稳定性 r w e b i c k a p a c h e c g i a p a c h e - f c g i l i g h t t p d f c g i 蕾 寒 毒 小h 毋i 由表2 1 中可以看出,服务器各有优缺点,要根据应用系统的实际需要来选择 服务器。当然服务器的选择不会影响源代码。 2 4 2a c t i o n e w 在r a i l s 中,a c t i o n v i e w 负责创建将要在浏览器中显示的页面,可能是整个页 面,也可能是其中一部分。a c t i o n v i e w 最简单的情况下就是一段h t m l 代码,用 于显示固定的文本信息,当然如果要添加动态的内容的话就要通过c o r n r o l l e r 中的 a c t i o n 方法来制造了。 在r a i l s 中,动态内容都是由模板生成的。最常用的是便是r h t m l ,它需要借 助一个将r u b y 代码嵌入模板文件的系统对文件的内容进行扩展,这就是e r b 。e r b 可以理解成是一个过滤器,它可以讲r h t m 文件经过转换,输出h t m l 格式文件, 像j s p 中“ ”和“岭 之间代码会被编译为j a v a 代码一样,普通的h t m l 代 码将不会有任何变化,但是“ 之间的代码则会被编译为r u b y 代 码执行,结果将自动转换成字符串并替换到源代码的位置。当然还有其他模板形 式,比如m l 、h a m l 等。 2 4 3a c t i o n c o n t r o l l e r r a i l s 控制器是应用程序的指挥中心,负责协调用户、视图与模型之间的交互。 不过r a i l s 已经封装好了大部分的交互,而我们需要写的代码都集中在应用层面的 功能上,也正因为如此,r a i l s 的控制器非常容易开发和维护。 控制器还需要提供以下几种重要的辅助服务: 负责将外部请求引到内部a c t i o n ,它所采用的u r l 命名规则对于非开发 人员同样的清晰明了。 负责管理辅助模块,辅助模块还可以扩展视图模板的功能,而又不会增多 视图代码量。 负责管理缓存,可以在性能上为相应应用程序带来数量级上的提升。 负责管理s e s s i o n ,让使用应用程序的用户感觉到是在与我们进行着不断的 交互。 2 4 4 a c t i v e r e c o r d a c t i v e r e c o r d 是r a i l s 框架所采用的对象一关系映射( o b j e c t - r e l a t i o n a lm a p p i n g , 1 3 简称o r m ) ,它完全遵循标准o r m 模型,同样是将表映射到类,记录映射到对象, 字段映射到对象属性。当然r a i l s 的o r m 既然存在,便有其存在的价值,它与其 他大部分o r m 库的不同之处在于它的配置方式,它根据人们常用的命名惯例提供 了很有意义的默认配置,正是因为这些默认规则,使得开发人员省去了编写配置 代码的时问。这正是r a i l s 框架
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025广东江门市台山市公有资产管理委员会办公室招聘编外人员1人备考考试题库附答案解析
- 外包工程质量管理协议
- 2025浙江宁波开投私募基金管理有限公司招聘4人备考考试题库附答案解析
- 2025年营口市老边区城管协勤人员招聘备考考试题库附答案解析
- 2025泉州银行福建厦门分行招聘备考练习试题及答案解析
- 2025黑龙江鸡西市对外交流服务中心招聘事业单位工作人员4人备考考试题库附答案解析
- 2025四川虹信软件股份有限公司招聘实施顾问等岗位9人备考考试题库附答案解析
- 2025年甘肃酒泉瓜州县人民法院聘用制工作人员招聘备考考试题库附答案解析
- 2026中远海运船员管理有限公司招聘备考考试题库附答案解析
- 创新生态协同机制-洞察及研究
- 《昆山反杀案》课件
- 语言运用之句子的表达效果
- 电路检查记录表
- 前牙黑三角的树脂充填
- 华为质量管理评估模型(31个评估要素和评估报告)
- 模具凸凹模工艺文件工序卡
- 储备店长培训工作流程-课件
- 药品效期管理
- GB 42590-2023民用无人驾驶航空器系统安全要求
- 《精神科护理学》练习题及答案
- 护士执业注册体检表
评论
0/150
提交评论