已阅读5页,还剩80页未读, 继续免费阅读
(交通信息工程及控制专业论文)基于Rails框架的Web开发在EC系统中的应用.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
西南交通大学硕士研究生学位论文第1 页 摘要 随着w e b 技术的发展,以及电子商务在企业级的应用,电子商务与我们 的日常生活联系得越来越紧密,目前在企业级, e b 开发领域,j 2 e e 平台在电 子商务开发中使用较多,为了适应企业级应用开发的各种复杂需求,大量的 组件和x m l 配置文件被加入到j 2 e e 平台中,使系统变得日益庞大,在开发电 子商务系统时,降低了开发人员的开发速度,同时增加开发成本。2 0 0 4 年丹 麦程序员d a v i d 在3 7 s i g n a l s 公司支持下开发了r u b yo nr a i l s ( 简称r a i l s , 或r o r ) 框架。在r a i l s 框架中,快速的反馈周期、每次的交互控制和约定优 于配置等特点,使开发变得简单而快捷。与j 2 e e 相比,r a i l s 具有较少重复 的简洁代码,同时兼顾灵活性的特点,在快速开发和w e b 应用部署方面体现 了较强的优势。 本论文介绍了r a i l s 框架的相关特性、核心体系结构以及关键技术,通 过文中对r a i l s 框架和j 2 e e 框架的比较,7 在一定范围内体现了r a i l s 框架在 电子商务系统开发应用的优势。本论文通过实际开发一个网上农用品采购系 统,实践了一个基于r a i l s 框架的w e b 应用。 在开发过程中,r a i l s 框架严格遵守m v c 设计模式,采用了的敏捷开发 方法,同时,在多个模块内应用了a j a x 技术,针对e c 系统的开发代码进行 了大量的测试,一定程度保证了系统的健壮性。针对e c 系统中存在的安全问 题,改进了可能具有安全隐患的代码,在一定范围内保证了系统的安全性。 同时考虑到电子商务的特点,加入了网站运营模块,对相关数据进行统 计和分析,使e c 系统运营人员能够快速的根据网站运营状况进行相应的策略 调整,具有一定的现实参考价值。 关键词:r u b yo i lr a i l s ,m v c ,a j a x ,e c ( e l e c t r o n i cc o m m e r c e ) 西南交通大学硕士研究生学位论文第1 i 页 a b s tr a c t a se - c o m m e r c ef m d si t sa p p l i c a t i o ni ne n t e r p r i s e s ,a l o n gw i t hd e v e l o p m e n t o fw e bt e c h n o l o g y , i ti sc l o s e l yt i e dt oo u rd a i l yl i f em o r et h a ne v e r i nt h ep r e s e n t d e v e l o p i n gd o m a i no fw e bt e c h n o l o g yi ne n t e r p r i s e s ,j 2 e ep l a t f o r mi sr e g u l a r l y u s e di ne - c o m m e r c ee x p l o i t a t i o n 昕蛹t h ev i e wo fm e e t i n gc o m p l i c a t e d r e q u i r e m e n t so fe n t e r p r i s ea p p l i c a t i o na n dd e v e l o p m e n t ,m a s s i v ec o m p o n e n t sa n d c o n f i g u r a t i o nf i l e sh a v eb e e na d d e dt ot h ej 2 e ep l a t f o r m ,t h u sm a k i n gt h es y s t e m e v e nm o r ee n o r t n o u s ,i nw h i c hc a s e ,d e v e l o p e r sf r e dt h ee x p l o i t a t i o np r o c e s s s l o w e dd o w nw h i l ei t sc o s ti n c r e a s e di nt h ee x p l o i t a t i o no fe - c o m l 1 c r c es y s t e m i n2 0 0 4 ,d a v i d ,ad e n m a r k p r o g r a m m e r , d e v e l o p e dr u b yo nr a i l s ( r a i l so rr o r f o rs h o r t ) f r a m e w o r k ,s u p p o r t e db y3 7 s i g n a l sc o m p a n y w i t h i nt h a tf r a m e w o r k , e x p l o i t a t i o ni sm a d ee a s i e ra n df a s t e rw i t hf e a t u r e so fs w i f tf e e d b a c kc y c l e s , i n t e r a c t i o nc o n t r o la tat i m e ,a n db e t t e r e x p e c t a t i o n st h a nc o n f i g u r a t i o n c o m p a r e dw i t hj 2 e e ,r a i l sh a ss t r o n g e ra d v a n t a g e si nr a p i dd e v e l o p m e n ta n d w e b a p p l i c a t i o nd e p l o y m e n t ,d u e t ol e s s r e p e t i t i o u sc o m p a c t c o d ea n d s y n c h r o n o u sf l e x i b i l i t y t h i se s s a yi n t r o d u c e ss o m er e l a t e dp r o p e r t i e s ,t h ec o r es y s t e m a t i cs t r u c t u r e a n dk e yt e c h n o l o g i e so fr a i l sf r a m e w o r k i t sa d v a n t a g e si n e x p l o i t a t i o na n d a p p l i c a t i o n o fe - c o m m e r c es y s t e mi nc e r t a i na r e a sa r er e f l e c t e d t h r o u g h c o m p a r i s o n sb e t w e e nr a i l sa n dj 2 e ep l a t f o r m s t h i sr e s e a r c hm a k e sw e b a p p l i c a t i o n ,b a s e do nr a i l sf r a m e w o r k ,i n t oap r a c t i c eb ya c t u a l l yd e v e l o p i n ga n o n l i n ep u r c h a s i n gs y s t e mo fa g r i c u l t u r a lp r o d u c t s i nt h e e x p l o i t a t i o np r o c e s s ,m v ca n dp r o m p tm e t h o d sf r o mr a i l s a r e a d o p t e d ,i ja xt e c h o n o l o g eb eu s e di ne cs y s t e m ,s i m u l t a n e o u s l yw i t hn u m e r o u s t e s t so nd e v e l o p m e n tc o d eo fe cs y s t e m ,w h o s er o b u s t n e s si st h u se n s u r e dt oa l a r g ee x t e n t m o r e o v e r , c o d e sw i t hh i d d e nt r o u b l er r ei m p r o v e di na l l u s i o nt o s e c u r i t yi s s u eo fe cs y s t e m ,s ot h a tt h es y s t e mi sg u a r a n t e e dt ob es a f e m e a n w h i l e ,g i v e nt h ec h a r a c t e r i s t i c so fe - c o m m e r c e ,w e bo p e r a t i o nm o d u l e s a r ea d d e di nt oc a l c u l a t ea n da n a l y z er e l a t e ds t a t i s t i c s ;t h e r e f o r e ,o p e r a t i n g p e r s o n n e lc o u l da d j u s tt h e i rs t r a t e g i e si nt i m ea c c o r d i n gt ow e do p e r a t i o n c o n d i t i o n s w h i c hi sa p p r e c i a t e di nr e a ls i t u a t i o n k e y w o r d s :r u b yo nr a i l s , m v c ,i j a x ,e c ( e l e c t r o n i cc o m m e r c e ) 西南交通大学 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学 校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查 阅和借阅。本人授权西南交通大学可以将本论文的全部或部分内容编入有关 数据库进行检索,可以采用影印、缩印或扫描等复印手段保存和汇编本学位 论文。 本学位论文属于 1 保密口,在年解密后适用本授权书; 2 不保密彤使用本授权书。 ( 请在以上方框内打“) 学位论文作者签名:压衫全 日期:如水,2 、,弓? 躲鲐- - 2 - o 指导老师签名:仁捌汐 日期:广九,r 西南交通大学学位论文创新性声明 本人郑重声明:所呈交的学位论文,是在导师指导下独立进行研究工作 所得的成果。除文中已经注明引用的内容外,本论文不包含任何其他个人或 集体已经发表或撰写过的研究成果。对本文的研究做出贡献的个人和集体, 均已在文中作了明确的说明。本人完全意识到本声明的法律结果由本人承担。 本学位论文的主要创新点如下: ( 1 ) 通过实际开发一个网上农用品采购系统,实践了电子商务应用。 利用r a i l s 框架的特征驱动开发方法,分模块对网上农用品采购系统进行开 发,层次分明。由于r u b y 动态语言的特性,它相较于传统j a v a 和c 语言有 较大不同,开发过程中,体现了r a i l s 框架简洁、快速的特性。 ( 2 ) 详细介绍了系统关键模块的实现,并利用目前流行的a j a x 技术使 界面友好,给用户带来便利。同时,根据中小企业能够灵活响应市场的特点, 对传统电子商务系统进行扩展,加入了网站运营分析模块,通过图表让网站 运营情况直观的展现出来,使网站管理者能够迅速了解市场的变化改变销售 策略。 学位论文作者签名: 勿缈 醐:呷h 弓 西南交通大学硕士研究生学位论文第1 页 第1 章绪论 1 1 论文的研究背景与意义 随着i n t e r n e t 技术和企业信息化建设的发展,电子商务( e c ,e l e c t r o n i c c o m m e r c e ) 在世界各地迅速发展起来,进入人们的日常生活。电子商务改变 了企业的传统经营模式。企业通过电子商务系统扩展了企业的交易范围,使 经营活动不再受地域和时间的限制,同时,方便了客户,降低了企业进行跨 国、跨行业交易的成本,因此越来越多的企业采用电子商务作为交易模式。 电子商务作为一种交易形式在商务活动中扮演着越来越重要的角色,成为国 内外关注的热点。目前已经有一些非常成功的电子商务平台,例如e b a y 、阿 里巴巴、淘宝等。 r u b yo nr a i l s 也称r o r 或者简称r a i l s ,构建在r u b y 语言之上,是一 个用r u b y 编写的全栈的( f u l l - s t a c k ) 、开源的w e b 框架,作为一个较新 的w e b 应用程序框架,r a i l s 设计遵循两个核心观点:“低重复原则”( d o n t r e p e a ty o u r s e l f ) 和“约定优于配置( 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 ) , 使开发人员能够用它来轻松编写实际的应用程序,所需的代码也要比大多数 框架花在处理x m l 上的代码少,通过消除复杂的) ( m l 配置文件,以及使用 r u b y 语言的动态性,帮助把静态类型语言中常见的许多重复代码减少到最 少,使w e b 开发工作变得更轻松,快捷。 a j a x ( a s y n c h r o n o u s3 a v a s c r i p ta n dx m l ) 技术是一种创建交互式网页应 用的网页开发技术。a j a x 技术避免了传统b s 结构的一些缺点,能在不更新 整个页面的前提下维护数据,同时使用户对浏览器进行操作后,不用刷新页 面就能显示操作结果。改进了传统w e b 开发技术。 而r a i l s 框架提供了对a j a x 更高层次的封装,简化了a j a x 开发 电子商务的发展对传统w e b 技术提出了挑战。j 2 e e 框架作为当前主要的 e c 系统开发平台,为了适应企业级应用开发的各种复杂需求,同时给最终用 户提供更可靠、更完善的信息服务,大量的组件和x m l 配置文件被加入到j 2 e e 平台中,使系统变得日益庞大。在一定范围内,相比j 2 e e 框架,r a i i s 框架 具有较少重复的简洁代码同时兼顾灵活性的特点,让企业级应用开发更加简 单,同时,r a i l s 框架的遵循是敏捷开发原则,开发过程具有较高的透明度, 西南交通大学硕士研究生学位论文第2 页 客户能够立即看到开发者所做的工作,与开发人员进行良好的沟通。较好地 应对电子商务系统多变的需求。 1 2 国内外的研究状况及发展趋势 2 0 0 4 年6 月,丹麦程序员d a v i dh e i n e m e i e rh a n s s o n 在3 7 s i g n a l s 公 司支持下,开发出了r a i l s 的第一个版本。在w e b 应用开发平台引起了强烈 反响,r a i l s 框架一直保持着相当快的版本升级速度:2 0 0 5 年发布了 r a i l s l 0 版本,2 0 0 6 年初发布r a i l s l 1 版本,2 0 0 7 年初发布r a i l s l 2 版 本,在2 0 0 7 年1 2 月6 日,r a i l s 2 0 发布。2 0 0 b 年1 0 月r a i l s 发布了2 2 版本,r a i i s 框架每个大的版本升级都会带来了相当多的新功能。r a i i s l 0 带来了完善的单元测试和集成测试;r a ii s l 1 带来了d a t a b a s em i g r a t i o n 和r j s ;r a i l s l 2 体现了r e s t 的方便简洁;而r a i l s 2 2 更是增加了众多新 特性,在性能方面也有较大提升。 美国很多软件公司早已开始使用r a i l s 来作为企业级应用开发平台, r a il s 的上升趋势非常快。 商业化的r u b yo nr a i l s 应用产品如:b a s e c a m p ,o d e o ,4 3 t h i n g s 等印 证了r a i l s 在协同运作,内容管理,社区及电子商务等多方面的开发能力。基 于r u b y 语言的r a i l s 框架不仅得到如s i e m e n s 和i b m 等国际性大公司的支持, 而且还为许多著名的大流量应用网站所采用,如综合性社会网站s p o k e o 和人 名搜索网站s p o c k 。r a i l s 框架的成功为r u b y 语言成为主流开发语言起到了 重要地推动作用。 在国内,r a ii s 的研究正处于起步阶段,目前暂时没有大规模的r a i l s 的企业开发,但已经有越来越多的企业应用开发者加入到了r a i l s 的研究 中,例如国内著名的软件开发交流社区j a v a e y e ( h t t p :w w w j a v a e y e c o m ) 就是采用r u b yo nr a i l s 开发的。 1 3 选题的意义及全文结构 由于电子商务的飞速发展,越来越多的企业参与到电子商务的应用当中, 而本论文所实现的网上农用品采购系统,正是一个典型的e c 系统应用,它包 含了所有电子商务应用都需要解决的,诸如用户管理、购物车管理、商品维 西南交通大学硕士研究生学位论文第3 页 护和订单管理等业务逻辑。 网上农用品采购系统采用r a i l s 框架进行开发。由于该框架快捷高效的 特性,它非常适合应用于中小型的电子商务系统。 由于r a i l s 框架对a j a x 技术的良好支持,整个网上农用品采购系统,大 量采用a j a x 技术,从验证用户注册、文本框辅助输入到拖动商品进行购买, 这些交互式的方式大大增强了用户体验。 通过对网上农用品采购系统的开发,可以看到r a i l s 框架在电子商务系 统的广阔应用前景。它以更低的成本,无论是时间成本还是经济成本,让企 业开发自己的电子商务应用。 本论文研究了r a i l s 框架区别于其他框架的关键技术,并通过实际开发 一个网上农用品采购系统项目,实践了电子商务应用。 全文共分为六章,各章节内容安排如下: 第l 章主要讨论论文的研究背景、研究现状和选题意义。 第2 章主要讨论敏捷软件开发方法,以及r a i l s 框架的敏捷特性。 第3 章主要是对r a i i s 框架进行介绍,详细阐述了框架的各种特性、核 心体系结构以及关键技术,并把它与j 2 e e 框架进行了比较。 第4 章是对基于r a i l s 框架的网上农用品采购系统的分析与设计,包括 需求分析和系统用例图。 第5 章是网上农用品采购系统的具体实现,详细讨论了系统主要功能模 块的设计。 第6 章总结。 西南交通大学硕士研究生学位论文第4 页 第2 章r a i ls 框架与敏捷软件开发 2 1 敏捷开发方法的出现 r a i l s 框架提供了一种更容易开发、配置和管理的w e b 应用程序框架, 它在开发过程中直体现r “敏捷( a g i l e ) 思想,敏捷是r a i l s 的基础所 在。敏捷方法不是一个新的概念,早在2 0 世纪9 0 年代就已经提出,它是一 种新型软件开发方法。 在2 0 0 1 年初,一批业界专家聚集在一起概括出了一些可以让软件开发团 队具有快速工作和响应变化能力的价值观及原则,这就是敏捷宣言。敏捷宣 言的价值观是:个体和交互胜过过程和工具;可以工作的软件胜过面面俱到 的文档;客户合作胜过合同谈判;随时应对变化胜过遵循计划1 。 2 2a gi le 开发原则 2 2 1 团队和交互的重要性 人是获得成功最为重要的因素。如果团队中没有优秀的成员,那么就算 是使用好的过程也不能从失败中挽救项目。但是,不好的过程却可以使最优 秀的团队成员失去效用。如果不能作为一个团队进行工作,那么即使拥有一 批优秀的成员也一样会失败。 团队的构建要比环境的构建重要很多。许多团队和管理者就犯了先构建 环境,然后期望团队自动凝聚在一起的错误。相反,先构建团队,然后再根 据团队需要来配置环境往往是更合理的步骤。 2 2 2 软件和文档同步 一个好的软件需要有文档,代码不是交流系统原理和结构的理想媒介, 团队需要编写适宜的文档来描述系统。然而,过多的文档并不比比过少的文 档好多少。一编制众多的文档需要大量的时间,要使文档和代码保持同步,需 1 r o b e r tc m a r t i n 著,邓辉译敏捷软件开发:原则模式与实践清华大学出版社2 0 0 3 - 9 正文第4 页到第1 2 页。 西南交通大学硕士研究生学位论文第5 页 要花费更多的时间。如果文档和代码失去同步,那么文档就会变成庞大的、 复杂的并且毫无意义的文字,误导开发者。 对于团队来说,编写并维护一份系统原理和结构方面的文档是非常必要 的,而该文档最好能够短小精炼,主题突出。很多团队往往注重文档而非软 件,从而导致进度拖延。这常常是一个致命的缺陷。有一个规则可以有效的 预防该缺陷的发生一一m a r t i n 文档第一定律( m a r t i n sf i r s tl a wo f d o c u m e n t a t i o n ) :直到迫切需要并且意义重大时,才编制文档。 2 2 3 信息交流协作 成功的项目需要定期且频繁的客户反馈。这不是依赖于合同或者关于项 目的陈述,而是需要软件的客户和开发团队密切合作、交流。一个指明了需 求、进度以及项目成本的合同存在根本上的缺陷。只有那些为开发团队和客 户的协同工作方式提供指导的合同才是最好的合同。 2 2 4 计划灵活性 一个软件项目的成败往往取决于其应对变化的能力。在项目开始构建计 划的时候,就应该确保计划时灵活的,并且易于适应商务和技术方面的变化。 计划不能考虑的过远。因为首先商务环境很可能会变化,这会引起需求的变 动。其次,一旦客户看到系统运行的效果,他们很可能会改变需求。最后, 即使需求不会改变,要估算项目开发的时间也是很困难的。 较好的策略是:为下一周做详细的计划,为下3 个月做粗略的计划,再 以后就做极为简单的计划。计划中这种逐渐降低的细致度,意味着开发者仅 仅是对迫切的任务才花费时间进行详细的计划。一旦制定了这个详细的计划, 就很难再改变,因为团队会根据这个计划启动工作并做相应的投入。然后, 由于该计划仅仅支配一周的时间,计划的其余部分仍然保持着灵活性。 2 3 敏捷框架r ai is r a i l s 框架是真正敏捷的w e b 开发框架,它充分渗透了敏捷思想,这也 是其能在短短几年时间迅速流行的一个重要原因。r a il s 框架强调人和交互, 这里没有冗长的过程,没有复杂的配置,没有繁重的工具,开发过程具有较 高的透明度,客户能够立即看到开发者所做的工作,与开发人员进行良好的 西南交通大学硕士研究生学位论文第6 页 沟通。 r a i l s 框架提供了一整套敏捷开发设施,它的种种特性,强制开发者使 用敏捷开发实践2 。 ( 1 ) 无法按照瀑布软件流程,必须进行频繁迭代。 ( 2 ) 无法作过多的预先分析,因为设计即实现。 ( 3 ) 无法按照传统分层开发,必须采用特征驱动开发。 ( 4 ) 无法忽略单元测试的重要性,必须编写足够的单元测试。 ( 5 ) 无法回避团队协作,必须重视团队协作和沟通。 ( 6 ) 无法拒绝客户的需求变更要求,因为实现需求变化已经非常容易。 当前的敏捷开发方法诞生于以j a v a 为主流的静态类型的面向对象语言, 而r u b y 是动态类型的,未来的敏捷开发将会更多的使用r u b y p y t h o n 为主流 的动态脚本语言。r a i l s 框架的基础是敏捷开发原则,并采用了多种诸如g v c 和o r 映射的设计模式,让敏捷思想渗透进开发的每一步。 2 吕仁琦敏捷开发及在企业级p o r t a l 中的应用浙江大学硕士学位论文2 0 0 7 5 1 2 正文第1 2 页。 西南交通大学硕士研究生学位论文第7 页 3 1r u b y 语言 第3 章r a 1s 框架介绍 r a i l s 框架是使用r u b y 语言开发的,而且使用r a i l s 框架开发的w e b 应 用也是基于r u b y 语言的。r u b y 语言是一种动态语言,它是由日本人松本行 弘于1 9 9 3 年开始研发的。r u b y 语言是一种解释性语言,它有以下几大特点3 : ( 1 ) 面向对象支持。它提供普通的面向对象功能,也提供像m i x i n 、迭 代器等特殊的面向对象功能,此外还支持闭包。 ( 2 ) 是一种动态语言,允许我们在程序中动态修改已经定义过的类, 也可以在某个类的实例中定义该实例特有的方法。 ( 3 ) 是一种弱类型语言,也就是说变量无须声明,变量没有类型。 ( 4 ) 具有良好的可移植性。可以运行在w i n d o w s 、l i n u x 等多种操作系 统之上。 ( 5 ) 支持自动垃圾回收机制。 ( 6 ) 提供正则表达式支持,并支持运算符重载。 ( 7 ) 动态载入,运行时取决于所运行的操作系统。 3 2m v c 设计模式在r ai is 框架中的应用 3 2 1 “模型一视图一控制器设计模式( w c 设计模式) r a i l s 框架遵从m v c 设计模式。m v c 设计模式是一种软件架构模式,它 把软件系统分为三个基本部分:模型( m o d e l ) ,视图( v i e , ) 和控制器 ( c o n t r o l l e r ) 。m v c 由t r y g v er e e n s k a u g 提出,最早被应用在s m a l l t a l k - 8 0 环境中。它的目的是实现一种动态的程序设计,使后续对程序的修改和扩展 简化,并且使程序某一部分的重复利用成为可能。典型的m v c 三层结构是4 : ( 1 ) 模型( m o d e l ) 。“数据模型 ( m o d e l ) 用于封装与应用程序的业务 逻辑相关的数据以及对数据的处理方法。“模型有对数据直接访问的权利, 3 李刚,郭秋霞r u b yo nr a i l s 敏捷开发最佳实践电子工业出版社2 0 0 8 - 4 正文第6 3 页。 4 孙卫琴精通s l l u t s :基于m v c 的j a v aw e b 设计与开发电子工业出版社2 0 0 6 7 正文4 3 页。 西南交通大学硕士研究生学位论文第8 页 例如对数据库的访问。“模型不依赖“视图 和“控制器”,也就是说,模 型不关心它会被如何显示或是如何被操作。但是模型中数据的变化一般会通 过一种刷新机制被公布。为了实现这种机制,那些用于监视该模型的视图必 须事先在此模型上注册,从而,视图可以了解在数据模型上发生的改变。 ( 2 ) 视图( v i e w ) 。视图层能够实现数据有目的的显示( 理论上,这不 是必需的) 。在视图中一般没有程序上的逻辑。为了实现视图上的刷新功能, 视图需要访问它监视的数据模型( m o d e l ) ,因此应该事先在被它监视的数据 那里注册。 ( 3 ) 控制器( c o n t r o l l e r ) 。控制器起到不同层面间的组织作用,用于 控制应用程序的流程。它处理事件并作如响应,“事件 包括用户的行为和数 据模型上的改变。 大部分用过程语言比如a s p 、p h p 开发出来的w e b 应用,初始的开发模 板就是混合层的数据编程。例如,直接向数据库发送请求并用h t l i l 显示,开 发速度往往比较快,但由于数据页面的分离不是很直接,因而很难体现出业 务模型的样子或者模型的重用性,很难满足用户的变化性需求。m v c 要求对 应用分层,虽然要花费额外的工作,但产品的结构清晰,产品的应用通过模 型可以得到更好地体现。m v c 是目前w e b 开发的主流模式,其在开发中具有 很多优点。 首先,m v c 设计模式具有多个视图对应一个模型的能力。在目前用户需 求的快速变化下,可能有多种方式访问应用的要求。例如,订单模型可能有 本系统的订单,也有网上订单,或者其他系统的订单,但对于订单的处理都 是一样,也就是说订单的处理是一致的。按m v c 设计模式,一个订单模型以 及多个视图即可解决问题。这样减少了代码的复制,即减少了代码的维护量, 一旦模型发生改变,也易于维护。 其次,由于一个应用被分离为三层,因此有时改变其中的一层就能满足 应用的改变。一个应用的业务流程或者业务规则的改变只需改动m v c 的模型 r j j 医0 最后,它还有利于软件工程化管理。由于不同的层各司其职,每一层不 同的应用具有某些相同的特征,有利于通过工程化、工具化产生管理程序代 码。 西南交通大学硕士研究生学位论文第9 页 3 2 2r a iis 中的m v c r a i l s 框架严格遵守m v c 设计模式,用户在浏览器中只能向控制器发送 请求,控制器处理用户请求后,决定将指定视图页面呈现给用户,而处理结 果也在该视图页面中呈现。 r a i l s 框架中模型层业务数据的数据库存储是通过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 i s 框架的核心,它的主要任务是为关系数据库表和 操作数据库记录的r u b y 程序代码之间提供接口和绑定。 r a i l s 框架的视图是a c t i o n v i e w 。它是一个基于嵌入式r u b y ( e r b ) 的 系统,用于定义服务于数据表示的表示模板。 r a i l s 框架的控制器是a c t i o n c o n t r o l l e r 。它是a c t i v e r e c o r d 和 a c t i o n v i e w 之间的数据中介。a c t i o n c o n t r 0 1 1 e r 提供功能设施,处理和组织 来自数据库和w e b 表单输入的数据,然后将这些数据递交给a c t i o n v i e w , a c t i o n v i e w 将这些数据插入模板并显示。因为在m v c 结构中,v 和c ( 视图 和控制器) 关系非常紧密,所以在r a i l s 中,a c t i o n v i e w 和a c t i o n c o n t r 0 1 l e r 捆绑在一起成为a c t i o n p a c k 。 r a i i s 框架很大程度上是这三个组件的同时部署。a c t i v e r e c o r d 提供了 一系列的技术和捷径,用于操作来自数据库的数据。a c t i o n c o n t r o l l e r 和 a c t i o n v i e w ( 合在一起就是a c t i o n p a c k ) 提供了处理和显示这些数据的设施。 r a i l s 将它们三者结合到一起。 西南交通大学硕士研究生学位论文第1 0 页 图3 - ir u b y 和r a ii s 协作关系5 图3 - 1 展示了r u b y 和r a i l s 的协作关系,以及它们与保存r a i l s 数据 的数据库系统和输出最终的h t m l 页面的w e b 服务器之间的协作关系。箭头表 示系统组件间紧密的协作。 一个r a i i s 应用的基本流程如下: ( 1 ) 用户发送请求( r e q u e s t ) ,r a i l s 使用r o u t e r 进行解析。 ( 2 ) r o u t e r 确定需要使用哪个控制器中的哪个a c t i o n 方法来处理用户 数据。按照r a i l s 的约定,默认的解析方式是将u r l 以斜杠为分界符,分为 4 部分:h t t p :w e b 应用的域名控制器名控制器中的a c t i o n 方法名请求 参数部分。以u r l 请求h t t p :1 刺a g r i c u l t u r a ls u p p l i e s c o m s u p p l i e s s h o w 2 为例,r a i l s 的r o u t e r 将会在应用程序中找名为s u p p l i e s 的控制器,然后调用s h o wa c t i o n 方法,同时传递参数“2 ”给该方法。 5h t t p :f w w w d i y b l - c o r n c o u r s e 1 w e b w e b j s 2 0 0 7 1 2 2 6 9 5 2 2 7 2 h t r a l ,r u b y 、r a i l s 、a g i l e 的启示。 西南交通大学硕士研究生学位论文第11 页 ( 3 ) 控制器中的方法调用对应的m o d e l 对象的业务逻辑方法,m o d e l 对 象继承了a c t i v e r e c o r d :b a s e 类,具有持久化访问的能力,而且m o d e l 对象 还包含应用所需要的业务逻辑方法。 ( 4 ) 控制器将处理结果提交到视图文件,视图文件负责显示控制器的 处理结果,r a i l s 会保证视图文件能访问到控制器中的实例变量。 ( 5 ) 视图文件( r h t 地) 发送响应( 标准妍札页面) 回用户浏览器, 以最终结果呈递给用户浏览器。 该基本流程如图3 - 2 所示。 图3 - 2r a iis 应用的基本流程 3 3r a 1s 框架对a j a x 技术的支持 3 3 1a ja x 技术 a j a x ( a s y n c h r o n o u sj a v a s c r i p ta n dx m l ) 技术极好地改进了传统w e b 开发技术,它使用x 1 l h t t p r e q u e s t 对象异步地发送请求,使用简单的 j a v a s c r i p t 函数监视服务器响应,当服务器响应完成后,j a v a s c r i p t 通过 d o m 动态更新h t m l 页面,从而提供响应更及时的用户体验。 3 3 2a j a x 关键技术 a j a x 并不是一种全新的技术,而是一些传统技术的组合。主要包括以下 西南交通大学硕士研究生学位论文第12 页 几种关键技术6 : ( 1 ) a j a x 的核心:x m l h t t p r e q u e s t 。x m l h t t p r e q u e s t 是整个a j a x 技术 的灵魂。a j a x 技术的核心是异步发送请求,而y 珊l h t t p r e q u e s t 则是异步发 送请求的对象,也就是整个a j a x 技术的基础。 ( 2 ) a j a x 的编程脚本:j a v a s c r i p t 语言。j a v a s c r i p t 是一种跨平台的 脚本语言,使用基于对象的脚本语言。j a v a s c r i p t 具有简单、易用的特征, 而且在绝大部分浏览器中都运行良好。 j a v a s c r i p t 主要完成如下事情:创建x m l h t t p r e q u e s t 对象;通过 x m l h t t p r e q u e s t 向服务器发送请求;创建回调函数,监视服务器响应状态, 当服务器响应完成后,回调函数启动;回调函数通过d o m 动态更新h t m l 页面。 ( 3 ) h t m l 页面的d o m 模型。d o m ( d o c u m e n to b j e c tm o d e l ) 也就是文 档对象模型,通过使用d o m ,可以采用编程方式操作文档结构,可以改变文 档的内容。通过使用d o m ,h t m l 页面以一种结构化组织在一起,h t m l 页面的 内容以节点方式组织。w e b 程序开发者可增加文件的节点、属性及事件,从 而动态更新h t m l 页面的动态更新。 3 3 3r ai is 的a j a x 支持 r a i i s 框架提供了对a j a x 更高层次的封装,它允许开发者无须创建 x m l h t t p r e q u e s t 对象,无须编写任何j a v a s c r i p t 脚本即可实现a j a x 功能。 r a i i s 框架的a j a x 支持依赖于另外两个j a v a s c r i p t 库:p r o t o t y p e 和 s c r i p t a c u l o u s 。其中s c r i p t a c u l o u s 又是建立在p r o t o t y p e 的基础上。这两 个j a v a s c r i p t 代码库互为补充,用于辅助a j a x 开发。 p r o t o t y p e 是一个3 a v a s c r i p t 库,它的代码相当精简但却能实现强大的 功能。它主要功能可分为三个部分。首先是一些方便的工具函数,其次扩展 了一些原有类,增加了一些自定义的对象,最后是a j a x 应用相关的对象。 s c r i p t a c u l o u s 提供了一些简单的页面控件,以及一些简单的动画效果。 r a i l s 的a j a x支持主要依赖于 p r o t o t y p e h e l p e r和 s c r i p t a c u l o u s h e l p e r 帮助模块。r a i i s 通过a c t i o n v i e w :b a s e 来动态混入 p r o t o t y p e h e l p e r 模块,从而允许在r h tm :l 视图页面中调用p r o t o t y p e h e l p e r 模块里的方法,实现a j a x 交互。而s c r i p t a c u l o u s h e l p e r 模块则是对 6r y a n a s l e s o nn a t h a n i e lt s c h u t t a a j a x 基础教程人民邮电出版社2 0 0 6 - 2 正文3 5 - 4 3 西南交通大学硕士研究生学位论文第13 页 s c r i p t a c u l o u s 的封装,通过它可以实现r a i i s 的富客户端效果。 3 4r ai ls 核心框架 3 4 1r ai is 的代码生成器 对于一个企业应用而言,需求变更是不可避免的事情,而开发平台必须 能正常应对这种需求的变更。r a i l s 框架提供了基本的代码生成器,通过这 些代码生成器可以很快开发出应用的雏形。而这个应用雏形具有很好的可扩 展性,可以非常方便地添加新的功能,处理应用程序的需求变更,这也就是 敏捷开发的精髓所在。 下面是r a i l s 应用中经常使用的代码生成器: s c r i p t g e n e r a t es c a f f o l dm o d e l n a m e :生成对某个m o l d e l 的c r u d 操 作的应用程序框架。 s c r i p t g e n e r a t ec o n t r o l l e rc o n t r o l l e r n a m e :生成某个模块的控制器 代码框架。 s c r i p t g e n e r a t em a i l e rm a i l n a m e :生成一个邮件模块的代码框架。 s c r i p t g e n e r a t em o d e lm o d e l n a m e :生成一个m o d e l 类的代码框架。 通过这些代码生成器,可以从一定程度上降低代码编写量,提高开发效 率。 3 4 2o r m 技术与a c t iv e r e c o r d 对象关系映射( o b j e c t r e l a t i o n a l m a p p i n g ,简称o r m ) 是一种为了解决面 向对象与关系数据库存在的互不匹配现象的技术7 。面对当前面向对象语言与 关系数据库系统并存的局面,o r m 是一种必不可少的技术。r a i l s 提供了一个 非常优秀的o r m 工具,它就是a c t i v e r e c o r d ,也就是活动记录集。 活动记录集是r a i l s 的核心内容,它是r a i i s 提供的对象关系映射层, 用于映射对象和数据库之间的关系。一条活动记录就是一个对象,该对象包 装数据库中某个表的某一行,并封装了对数据库的存取操作。通过这个对象, 就可以对数据库执行c r u d ( c r e a t e ,r e a d ,u p d a t e ,d e l e t e ) 操作。 7 夏昕深入潜出h i b e r n a t e 电子工业出版社2 0 0 5 - 6 正文第3 3 、3 4 页。 西南交通大学硕士研究生学位论文第14 页 活动记录集提供了持久化类和数据表之间的映射关系,通过这种映射关 系的过渡,可以很方便地通过持久化类实现对数据表的操作。活动记录集的 有如下几条映射关系: ( 1 ) 数据表映射类:活动记录集的一个类封装了一个数据表。当使用这 个持久化类进行操作时,系统自
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年护士资格《基础护理学》考试冲刺卷(含解析)
- 2026年注册安全工程师《安全生产管理》培训试卷(含解析)
- 2027届吉林省白山长白县联考八年级数学第一学期期末达标检测模拟试题含解析
- 2027届贵州省铜仁市碧江区数学八上期末教学质量检测试题含解析
- 河南省许昌地区2027届数学八年级第一学期期末考试模拟试题含解析
- 长期导向耐心资本的投后价值共创机制与管理实践研究
- 东区2026年学年第一学期五年级科学期末学业展示考模拟试题目及答案详解
- 安全员A证考模拟试题及答案详解
- 2026年五马路小学模拟试题及答案详解
- 2026年药物性皮疹模拟试题及答案详解
- (零模)苏州市2027届高三年级9月阳光调研试卷 生物试卷(含答案)
- 电梯更新改造工程监理规划
- 2026年托育机构生活照护员职业技能等级认定题库
- 2026年龙游经开高新控股集团有限公司及其子公司公开招聘合同制员工11人的笔试备考试题及答案详解
- 工程结算审核实施方案
- 2025年海南高考历史卷试题真题及答案详解(精校打印版)
- 正确使用酒精灯的方法
- 广州医科大学2024年临床医学(呼吸内科)内科学试题及答案
- DB52∕T 1401.26-2020 山地旅游 第26部分:景区最大承载量核定指引
- 童年第九章题目和答案
- 中风偏瘫中医护理查房
评论
0/150
提交评论