




已阅读5页,还剩60页未读, 继续免费阅读
(计算机应用技术专业论文)基于monorail框架技术的万方内部商务信息系统构建研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
西南交通大学硕士研究生学位论文第1 页 摘要 c a s t l e 是n e t 下的一个开源项目,它为n e t 平台下的w e b 项目提供了 一系列包括数据访问框架到i o c 容器以及w e b 框架的开发工具,大大简化了 w e b 程序的开发。 c a s t l e 下的m o n o r a i l 子项目是一个较新颖的w e b 开发框架,它使用c # 开发,借鉴了r u b yo nr a i l s 的开发思想,基于前端控制器设计模式使其更 适应于复杂的页面逻辑;专注的m v c 开发模式使分别负责业务、数据、视图 的开发人员更好的分工和协作;数据绑定机制减少了代码冗余,提高了代码 的维护性和开发效率。 c a s t l ea c t i v e r e c o r d 同样属于c a s t l e 的子项目,它是一个数据访问框 架。c a s t l ea c t i v e r e c o r d 在底层封装了n h i b e r n a t e 的操作,使用特性来代 替映射文件,它提供简洁的o r 映射使得数据库的开发更为的简易和快捷。 同时,a c t i v e r e c o r d 提供的h q l 查询、l a z yl o a d 、v a l i d a t i o n 等特性也增 加了实现数据对象的灵活性。 本文主要论述了m o n o r a i l 框架下的一些w e b 开发技术,并结合实际项 目加以说明。万方商务信息平台是一个集合了公司信息、产业园区信息、商 业报告、公司排名等信息的一个综合性商务信息平台,商务信息数据更新系 统( 以下简称c i u s 系统) 是商务信息平台下的一个子项目,其目的在于为 主站解决数据的来源及更新问题,并满足系统在效率、安全、扩展性等方面 的需求。c i u s 系统包括了公司数据模块、产业园区数据模块以及用户管理 模块等几个部分,实现了用户角色认证、数据查询、数据统计、用户管理、 数据操作等各方面的业务功能。c l u s 系统采用四层架构即:u i 层、业务层、 持久化层、数据库层,w e b 框架方面使用c a s t l em o n o r a i l ,数据持久化层使 用c a s t l e a c t i v e r e c o r d 完成对象关系印射并实和数据对象的持久化。 关键词:前端控制器;m o n o r a i l ;a c t i v e r e c o r d ;商务信息数据更新系统 ( c i u s ) 西南交通大学硕士研究生学位论文第1 i 页 a b s t r a c t c a s t l ei sa l lo p e ns o u r c ep r o j e c tu n d e r n e tf r a m e w o r k o f f e r i n ga s e to f t o o l sf r o md a t aa c c e s s i n gf r a m e w o r kt oi o cc o n t a i n e rf o rw e ba p p l i c a t i o n , c a s t l eh e l p sy o ug e tm o r ed o n ew i t hl e s sc o d e a sp a r to ft h ec a s t l ep r o j e c t ,m o n o r a i li saw e bd e s i g n i n gf r a m e w o r k d e v e l o p e db y 饼a n du s i n gt h ei d e ao fr u b yo nr a i l s i t sb a s e do nt h ef r o n t c o n t r o l l e rm o d e ,w h i c hm a d ei tm o r ef i tf o rc o m p l i c a t e dp a g e1 0 9 i c s t a r t i n g f r o mt r a d i t i o n a lm v cd e v e l o p i n gm o d er e s u l t si n c l e a r l yd i f f e r e n t i a t i n g r e s p o n s i b i l i t i e so fp r o g r a md e v e l o p e r si nb u s i n e s sl o g i c s ,d a t aa n dv i e w a l lo f t h e s ep r o v i d e sab r i e fd e v e l o p i n gm o d ef o rp r o g r a md e v e l o p e r c a s t l ea c t i v e r e c o r di sad a t aa c c e s s i n gf r a m e w o r k ,i t sa l s oo n es u b s y s t e m o fc a s t l e i ti sb u i l to nt o po fn h i b e m a t e ,b u ti tu s ea t t r i b u t ei n s t e a do fm a p p i n g f i l e s e a s yo rm a p p i n gr e s u l ti nd a t a b a s ed e v e l o p m e n ts i m p l ya n dp r o m p t l y a t t h es a m et i m e ,h q lq u e r i e s ,l a z yl o a d ,v a l i d a t i o na n do t h e rp r o p e r t i e si n c r e a s e d t h ef l e x i b i l i t yo fr e a l i z i n gd a t ao b j e c t i nt h i st h e s i sf i r s tid i s c u s ss e v e r a lw e b p r o g r a m - d e v e l o p i n gt e c h n o i o g i e si n t h ef r a m e w o r ko fm o n o r a i l ,t h e na c c o m p a n yw i t hr e a lp r o j e c tt oi l l u s t r a t e w a n f a n gb u s i n e s si n f o r m a t i o np l a t f o r mi sac o m p r e h e n s i v es y s t e mc o n s i s t i n go f t h ec o m p a n y si n f o r m a t i o n ,i n d u s t r y p a r ki n f o r m a t i o n ,b u s i n e s sr e p o r t ,c o m p a n y s a w a r di n f o r m a t i o ne t c c 1 u ss y s t e mi so n eo fs u b s y s t e mu n d e rb u s i n e s s i n f o r m a t i o np l a t f o r m i t sg o a ll i e si nr e s o l u t i o no fd a t as o u r c e sa n du p d a t e so f p a r e n ts y s t e m ,a n di ta l s os a t i s f i e st h en e e d so ft h ep a r e n ts y s t e mf r o ma s p e c t s i n c l u d i n g :e f f i c i e n c y , s e c u r i t y , e x p a n s i b i l i t y n o to n l yi st h ep l a t f o r mc a p a b l eo f p o s s e s s i n gs u f f i c i e n td a t as o u r c e sa n dt i m e l yd a t au p d a t e s ,b u ta l s oc a np r e v e n t u s e r sf r o mm o d i f y i n gd a t a b a s ew i t h o u ta u t h o r i z a t i o n t h em a i nf u n c t i o n so fc i u ss y s t e mi n c l u d ec o m p a n yi n f o r m a t i o nm o d u l e , i n d u s t r y p a r km o d u l e ,u s e rm a n a g e m e n tm o d u l ea n ds oo n t h es y s t e m c a n a c h i e v ea u t h e n t i c a t i o n ,d a t as e a r c h ,d a t a s t a t i s t i c s ,u s e rm a n a g e m e n t ,d a t a o p e r a t i o na n do t h e rf u n c t i o n s c i u ss y s t e ma d o p t sf o u rl a y e ra r c h i t e c t u r e ,u s e r 西南交通大学硕士研究生学位论文第| ii 页 i n t e r f a c el a y e r b u s i n e s sl a y e r ,d a t ap e r s i s t e n c el a y e ra n dd a t a b a s el a y e r t h c s y s t e mu s e dc a s t l em o n o r a i lf r a m e w o r ki np r o g r a md e v e l o p m e n ta n dc a s t l e a c t i v e r e c o r di nd a t ap e r s i s t e n c el a y e rt oa c c o m p l i s hd a t ap e r s i s t e n c ea n do r m a p p i n g k e y w o r d s :f r o n tc o n t r o l l e r , m o n o r a i l ,a c t i v e r e c o r d ,c i u s 西南交通大学硕士研究生学位论文第页 第一章绪论 本章主要介绍论文的选题、研究背景、国内外理论和应用研究现状及本 文作者承担的主要工作。 1 1 国内外研究现状 随着计算机软件技术的不断高速发展,w e b 技术发展形式日新月异。各 种新的w e b 框架和技术层出不穷。j 2 e e 技术凭借其开源的优势和吸引力,很 快时间占领了w e b 开发程序领域的大片底盘,成为多数企业系统的首选开发 平台。 在n e t 领域,微软推出了一系列的举措势将收回自己的失地。在1 6 届 j o l t 大奖中,微软的4 个产品获奖,其中包括n e tf r a m e w o r k2 0 、s t u d i o t e a ms y s t e m 、s q l2 0 0 5 、s t u d i op r o ,已经基本获得语言无关性能的n e t 也正向着平台无关迈进。而且c # 作为n e t 上的首选开发语言其开发效率和安 全性都有不俗的表现。 另外,新的w e b 框架的出现正在令整个w e b 开发领域受到震憾。它们新 的理念、超前的思维方式和代码的高效率性令人感到叹服,它们的出现甚至 撼动了传统w e b 框架的概念。r u b yo nr a i i s 是一种由r u b y 解释性脚本编写、 完整的、开放源代码的w e b 框架,目的是使用更简单而且更少的代码编写实 际使用的应用程序,其框架使用的开发语言r u b y 是一种简单的、可移植的、 解释性的脚本语言,用于快速而简单的面向对象编程。r u b yo i lr a i l s 是一 个相对较新的w e b 应用程序框架,它被宣传为现有企业框架的一个替代,而 它的目标,简而言之,就是让生活,至少是w e b 开发方面的生活,变得更轻 松。州 c a s t l e 借鉴了r a i l s 的设计思想,使用微软的主流编程语言c # 开发。 c a s t l e 基于n h i b e r n a t e 的o r m 基础,为n e t 平台下的w e b 项目提供了一系列 包括数据访问框架到i o c 容器以及w e b 框架的开发工具,大大简化了w e b 程 序的开发。c a s t l e 下的m o n o r a i l 和a c t i v e r e c o r d 提出了新的w e b 框架和数 西南交通大学硕士研究生学位论文第2 页 据持久化的解决方案。 m o n o r a i l 是一个基于前端控制器设计模式的一个w e b 开发框架,它以控 制器来决定页面的跳转逻辑,更适合页面逻辑复杂的情况。m o n o r a i l 遵循了 m v c 开发思想,虽然这种技术不是m o n o r a i l 所特有的,甚至不是w e b 应用 程序所特有的,但是m o n o r a i l 具有非常清晰而专一的m v c 思维方式,使得 不同的开发人员可以各司其职。 c a s t l ea c t i v e r e c o r d 是一个数据访问框架,它同样属于c a s t l e 的子项 目。c a s t l ea c t i v e r e c o r d 在底层封装了n h i b e r n a t e 的操作,使用特性来代 替映射文件,它提供的简洁的o r 映射使得数据库的开发更为的简易和快捷。 同时,a c t i v e r e c o r d 提供h q l 查询、l a z yl o a d 、v a l i d a t i o n 等特性也增加 了实现数据库对象的灵活性。 在国内,由于开源技术的魅力,大部分的人专注于j a v a 编程技术,而随 着n e tf r a m e w o r k 2 0 的推出,微软的n e t 环境正在不断的完善,并逐步得 到人们的认可,开始有一部分开发人员重新回到到n e t 阵营中。由于 m o n o r a i l 框架起步并不早,国内目前从事m o n o r a i l 框架开发的人员并不多, 市面和网络上关于m o n o r a i l 的图书和资料也不多。但也并不缺乏专业的技术 人员使用和研究m o n o r a i l 框架,m o n o r a i l 作为一种新颖的w e b 开发框架, 凭借其代码简洁性和易用性正在吸引越来越多w e b 开发人员的关注。另外, m o n o r a i l 也支持最流行的a j a x 技术,这点更增添了m o n o r a i l 的吸引力和竞 争力。 1 2 课题来源及主要研究内容 随着信息化发展速度的突飞猛进,当今任何一家企业都是处在世界经济 全球化和信息化的大环境中,信息化已成了企业核心竞争力的一个重要标志。 在电子商务活动中,要充分认识到现代信息的特点,它已不再只是纸质信息 或其他媒体上的模拟信号,数字化及虚拟化将完全改变人们的传统思维模式 和习惯,也改变了信息需求及信息服务的方式和性质,快速高效及信息共享 将成为其重要特征。 在这种情况下,衡量一个企业是否信息化中的其中一个重要的指标就是 企业对信息的需求量。信息需求简单地讲是对信息客体的需求,包括获取与 利用信息的需求以及向外发布和传递信息的需求,其基点是实现对外的信息 西南交通大学硕士研究生学位论文第3 页 沟通与交流,达到社会职业活动和社会生活中的某种目标。在商务活动中, 信息需求存在于各个环节、各个部门以及各种层面上,有的在获取信息的同 时又在向外发布信息,只是特点各不相同。由于信息的电子化和网络化,信 息传递速度快、数量大、准确率高,且无时空的限制,这时的信息需求又呈 现出新特点,一方面使用者希望能提供大量的信息资源,另一方面又需提供 更为方便使用者使用的,寻找对自己有用信息的工具。在这种情况下,就需 要一种更为便捷准确的信息搜寻、分析及预测工具。 万方数据商务信息平台即是一个包括公司、产业园区、商业报告等相关 信息的综合性商业信息平台。商务信息平台主站已经包括了一个后台系统, 不过此系统是用来管理用户注册、收藏、收费、日志等系统记录的,没有一 个专门负责后台数据更新任务的子系统。系统数据最初的更新任务都是靠手 工在数据库中半人工完成的。考虑到如果直接修改主站系统的数据可能会对 主站系统的功能造成影响,特别是在信息需求日益增长的今天,仅仅依靠手 工去修改和更新数据库已经成为不可能;商务信息本身的特性要求准确和高 效,并要求安全可靠,另外由于主站随时会加入新的模块和服务,所以要求 更新系统需要具有可扩展性。为了解决以上的问题以及保证前台商务信息平 台系统可以健康运作,商务信息数据更新系统( c i u s ) 就是以此为目的而立 项开发的。 商务信息数据更新系统在w i n d o w s2 0 0 3s e r v e r 操作系统、i i s 6 o w e b 服务器、v s n e t 2 0 0 3 编辑器开发环境下,采用了c a s t l em o n o r a i lw e b 开发 框架,在数据持久化层使用c a s t l ea c t i v e r e c o r d 实现关系映射和数据持久 化,在数据库端使用s q ls e r v e r2 0 0 0 数据库来保存数据。本论文主要将要 对商务信息数据更新系统中采用的m v c 设计模式、前端控制器模式、数据绑 定、数据持久化等各项技术进行深入研究,并针对开发主要环节的具体实现 方法结合实际加以分析。 1 3 主要工作及意义 商务信息平台是一个综合性的商业数据网站系统,最初的数据更新维护 工作都是通过在后台半人工的修改后台数据库完成的。商务信息数据更新子 系统后的加入很好的解决了主站的数据更新及维护任务,也避免了其他人员 修改数据库给主站数据做成的不利影响。 西南交通大学硕士研究生学位论文第4 页 作者在这个系统中的主要工作是完成主要功能模块的设计及实现,在 i n t e r n e t 网络条件下,构建一套基于商务信息的在线数据更新系统,其管理 的数据内容包括公司、产业园区、商业报告等,解决主站系统的数据维护问 题,以及满足系统在效率、安全、扩展性方面的需求。 1 4 论文组织结构 本文主要介绍基于m o n o r a i l 的w e b 开发框架技术以及在商务信息数据更 新系统中的应用,并结合实例加以分析。文章各章节内容如下: 第一章绪论。主要介绍课题研究背景、国内外w e b 技术的发展现状及作 者的主要研究工作。 第二章相关技术介绍。对商务信息数据更新系统中采用的m o n o r a i l 框 架和a c t i v e r e c o r d 数据持久化工具以及各自的相关技术作简要的说明。 第三章系统分析与设计。论述商务信息数据更新系统的分析与实现,分 别从系统分析和系统设计两个方面论述商务信息数据更新系统的开发过程。 第四章系统开发与实现。主要介绍商务信息数据更新系统的开发和实 现。对系统中主要环节的实现方法进行论述。 第五章系统测试与应用。介绍商务信息数据更新系统开发后期阶段的测 试和安装环节。 最后是全文总结。介绍论文达到的效果并指出应进一步完善的工作。 西南交通大学硕士研究生学位论文第5 页 第二章相关技术介绍 页面控制器模式和前端控制器模式是两种不同的控制器模式。基于前端 控制器的控制器模式可以更好的适应页面逻辑复杂的情况。c a s t l e 下的 m o n o r a i l 子项目就是一个基于前端控制器的w e b 开发框架,m o n o r a i l 遵循 m v c 模式的w e b 开发,虽然这种技术不是m o n o r a i l 所特有的,甚至不是w e b 应用程序所特有的,但是m o n o r a i l 具有非常清晰而专一的m v c 思维方式。 在数据库方面c a s t l e 拥有一个子项目a c t i v e r e c o r d ,它是一个关系型数据 库的对象持久化工具,在底层封装了n h i b e r n a t e 实现了数据持久化。本章将 对c a s t l em o n o r a i l 框架和c a s t l ea c t i v e r e c o r d 进行大概的介绍,并对其 中的一些技术进行讨论。 2 1p a g ec o n t r 0 1 l e r 与f r o n tc o n t r o l l e r 2 1 1p a g ec o n t r o l l e r ( 页面控制器) p a g ec 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 ) 开发模式的一种控 制器模式,一般在使用p a g ec o n t r o l l e r 模式的情况中,动态w e b 应用程序 的用户界面组件与业务逻辑分隔开来,要构建的应用程序将以动态方式构造 网页,但网页间导航多为静态导航。 p a g ec o n t r o l l e r 模式将接受来自页面请求的输入、调用请求对模型执 行的操作以及确定应用于结果页面的正确视图。分隔调度逻辑和所有视图相 关代码。如果合适,创建用于所有页面控制器的公用基类,以避免代码重复 并提高一致性和可测试性。“” 图2 i 显示了页面控制器与模型和视图的关系。 西南交通大学硕士研究生学位论文第6 页 页面控制器可接收页面请求、提取所有相关数据、调用对模型的所有更 新以及向视图转发请求。而视图又将根据该模型检索要显示的数据。定义独 立页面控制器将分隔模型与w e b 请求细节( 例如会话管理,或使用查询字符 串或隐藏表单域向页面传递参数) 按照这种基本形式,为w e b 应用程序中 的每个链接创建控制器。控制器因而将变得非常简单,因为每次仅须考虑一 为每个网页( 或操作) 创建独立控制器可能会导致大量代码重复。因此 应该创建b a s e c o n t r o l l e r 类以合并验证参数( 如图2 2 ) 等公用函数。每 个独立页面控制器都可以从b a s e c o n t r o l l e r 继承此公用功能。除了从公用 基类继承之外,还可以定义一组帮助器类,控制器可以调用这些类来执行公 b a s c c o n t r o l l e r i 公哭仃为l 岂;一 l p a g e l c o n t r o l l e ri p a g e 2 c 0 n t r o l l e r _ j l 页面特定的行为ii 页面特定的行为l 如果多数页面相似,并且可以将公用功能放入一个基类,则此方法非常 有效。页面变化越多,必须插入继承树的级别也就越多。比如,所有页面都 分析参数,但只有显示列表的页面才从数据库检索数据,而需要输入数据的 页面则会更新模型而不检索数据。现在可以引入两个新基类,即 l i s t c o n t r o l l e r 和 d a t a e n t r y c 0 n t r o l l e r ,这两个类都是继承 甲囱 萤 西南交通大学硕士研究生学位论文第7 页 b a s e c o n t r o l l e r 而得到的。然后列表页可以从l i s t c o n t r o l l e r 继承,而数 据输入页则可以从d a t a e n t r y c o n t r 0 1 l e r 继承。虽然这种方法在这个简单示 例中非常有效,但在处理实际业务应用时,继承树可能很深且非常复杂。您 可能希望向基类中添加条件逻辑,以适应某些变体,但如此操作将违反封装 原则,基类也会因此在更改系统时造成较大麻烦。因此在应用程序变得更为 复杂时,应当考虑使用帮助器类或者f r o n tc o n t r o l l e r 模式。 p a g ec o n t r o l l e r 缺点 由于其简单性,p a g ec o n t r o l l e r 是大多数动态w e b 应用程序的默认实 现方式。但是应该了解下列限制: 每个页面一个控制器。p a g ec o n t r o l l e r 的主要缺点是要为每个网页创建 一个控制器。 较深的继承树。如果仅通过使用继承来重用公用功能,则可能降低继承层 次结构的灵活性。 对于w e b 框架的依赖。 2 1 2f r o n tc o n t r o l l e r ( 前端控制器) f r o n tc o n t r o l l e r 是另一种控制器模式,一般来说,这种控制器模式使 用在页面控制器类具有复杂的逻辑或者应用程序是基于可配置的规则来动态 确定页面导航的情况中。 f r o n tc o n t r o l l e r 通过让单个控制器负责传输所有请求,从而解决了在 p a g ec o n t r o l l e r 中存在的分散化问题。控制器本身通常分为以下两部分实 现:处理程序和命令层次结构( 见图2 3 ) 。 西南交通大学硕士研究生学位论文第8 页 |客户端处理程序 命令 i + e x e c u t e o :v o i d ;i ! ;! 具体命令l具体命令2 图2 3 :f r o n tc o n t r o l l e r 结构 处理程序具有以下两项职责: 检索参数。处理程序接收来自w e b 服务器的h t t pp o s t 或g e t 请求, 并从请求中检索相关参数。 选择命令。处理程序首先使用请求中的参数选择正确的命令,然后将控制 权转移给该命令以便执行处理。 命令本身也是控制器的一部分。命令代表具体的操作,通过将命令表示 为单独的对象,控制器可以按一般方式与所有命令交互,这与调用公共命令 类上的特定方法相反。在命令对象完成操作之后,将由命令选择使用哪个视 图来显示页面。 由于很多时候都需要对w e b 应用程序使用页面控制器,多数w e b 应用 程序框架都默认实现页面控制器。大多数框架以服务器页面的形式包含了页 面控制器( 例如a s p 、j s p 和p h p ) 。服务器页面实际上组合了视图和控制器 的功能,但没有提供显示代码与控制器代码之间的相应分隔。遗憾的是,对 于有些框架,混合视图相关代码与控制器相关代码很轻松,但要正确分隔控 制器逻辑却很困难。因此,p a g ec o n t r o l l e r 方式在很多开发人员中口碑不 佳。现在很多开发人员都将p a g ec o n t r o l l e r 与较差设计联系在一起,而将 f r o n tc o n t r o l l e r 与较好设计联系在一起。实际上,这种感觉是由于具体的 实现在不完善的情况下造成的;p a g ec o n t r o l l e r 和f r o n tc o n t r o l l e r 都 是可行性极佳的体系结构选择。 f r o n tc o n t r o ll e r 优点 西南交通大学硕士研究生学位论文第9 页 集中化控制。f r o n tc o n t r o l l e r 用于协调向w e b 应用程序发出的所有请 求。此单一控制器处于很好的位置来实施全应用程序范围的策略,如安全性 和使用情况跟踪。 线程安全。由于每个请求都涉及创建新的命令对象,因此命令对象本身不 需要是线程安全的。这意味着,命令类中避免了线程安全问题。但是,这并 不意味着您可以完全避免线程问题,因为命令所作用的代码( 即模型代码) 仍然必须是线程安全的。 可配置性。只需要在w e b 服务器中配置一个前端控制器;处理程序执行 其余的调度。这简化了w e b 服务器的配置。 2 2c a s t l em o n o r a i l 简介 2 3 1l o n o r a i l 简介 m o n o r a i l 是一个n e t 的m v cw e b 开发框架,原名c a s t l eo nr a i l s ,是 c a s t l e p r o j e c t 的一个子项目。作者h a m m e t t 在r u b yo nr a i i s 基础上使 用n e t 写出了一个新项目并把其命名为c a s t l eo nr a i l s ,但由于一些专利 方面的原因,o nr a i l s 不仅仅是字面上“快捷”的意思,而且代表了r a i l s 的软件开发哲学。最终作者h a m m e t t 将项目改名成m o n o r a i l 。o ” m o n o r a i l 是经典的m v c 模式,包括m o d e l ,c o n t r o l l e r ,v i e w 三个元素。 虽然这种技术不是m o n o r a i l 所特有的,甚至不是w e b 应用程序所特有的, 但是m o n o r a i l 具有非常清晰而专一的m v c 思维方式。在m o n o r a i l 设计框 架中,控制器只处理应用操作,数据模型负责表示数据信息,而试图则专注 于表达业务逻辑。这样,程序代码可以更为简洁高效也更方便维护。另外, m o n o r a i l 使用n e t 框架主流语言c # 开发,并支持最新的a j a x 技术,而且目 前仍在不断升级和完善之中,项目开源的魅力将吸引更多n e t 开发人员加入 m o n o r a i l 阵营中来。 m o n o r a i l 的核心是a c t i o np a c k 在n e t 上的实现,它的开发模式和传统 的w e b f o r m 有很大区别,w e b f o r m 属于p a g e c o n t r o l l e t 模式,每一个页面对 应一个c o n t r o ll e t ,通常情况下,这个c o n t r o ll e r 就是根据u r l 相对应 的a s p x 文件分析出来产生的类。s y s t e m w e b u i p a g e 实现了i h t t p h a n d l e r , 西南交通大学硕士研究生学位论文第1 0 页 每个a s p x 相关的类各自处理自己的h t t p 请求,经一些逻辑处理后( 通常代码 在a s p x 的c o d e b i n d 类,也就是a s p x 的父类) ,输出自己的视图。而m o n o r a i l 是f r o n t c o n t r o ll e r模式。由c a s tl e m o n o r a il f r a m e w o r k m o n o r a i i h t t p h a n d l e r 接管所有请求,然后根据请求的u r l 创建相应的 c o n t r o l l e r ,c o n t r o l l e r 再调用相应的a c t i o n ,最后调用模板引擎输出内容。 m o n o r a i l 是通过u r l 地址来解析相应的操作的,譬如访 问:h o m e i n d e x r a i l ,对应会执行h o m e c o n t r o l l e r 类中的i n d e x 方法,而 且可以自动绑定参数和r e q u e s t 的数据,如访问:h o m e i n d e x r a i l ? i d = l , 可以在h o m e c o n t r o l l e r 类中的i n d e x 方法中定义一个参数i d ,则在 i n d e x ( i n ti d ) 方法体会自动的得到i d = l 。 2 3 2m o n o r a i l 的工作原理 图2 4 描述了m o n o r a i l 如何为每个请求提供服务的全过程。 图2 4m o n o r a i l 工作原理示意图 西南交通大学硕士研究生学位论文第”页 r a i l s h t t p h a n d l e r 是一个a s p n e ti h t t p h a n d l e r 的实现类,它实现对 u r l 的解析并创建控制器对象( c a s t l er a i l s 引擎会解析u r l ,从中分解出 控制器名称和动作名称。实例化控制器对象并调用指定的动作) 。在此处,通 过控制器本身实现动作的调用。视图引擎实例已被传给控制器,故控制器可 已调用i v i e w e n g i n e ( 视图引擎接口) ,处理器可以生成相应的内容并返回给 c a s t l er a i l s 引擎。 视图渲染动作是在控制器的a c t i o n 动作执行完毕返回后才被调用。 r e n d e r v i e w 函数用来指明哪一个视图是你想调用并渲染的。 和传统的a s p n e t w e b f o r m 相比,m o n o r a i l 的生命周期简单多了。一个 w e b 请求所经历的主要步骤如下: 1 m o n o r a i l h t t :p h a n d l e r f a c t o r y 接收到请求后,收集上下文,创 建m o n o r a i1 h t t p h a n d l e r 。 2 m o n o r a i i h t t p h a n d l e r 分析请求的u r l ,创建相应的c o n t r o l l e r 并调用相应的a c t i o n ( c o n t r o l l e r 里的一个方法) 。 3 c o n t r o l l e r 调用v i e w e n g i n e 的p r o c e s s 方法,输出h t m l 内容。 一般来说一个a c t i o n 动作中要处理以下事情: 处理业务逻辑 如果需要向v i e w 输出内容的话,把需要被v i e w 引用的对象添加到 p r o d e r t y b a g 。 如果需要对v i e w 进行选择或控制,调用适当的和v i e w 相关的方法。 2 3 3m o n o r a i l 的重要概念 v i e w 默认每个a c t i o n 都会有一个对应的v i e w 。当使用n v e l o c i t y v i e w e n g i n e 的时候,v i e w 就是一个n v e l o c i t y 的模板。v i e w 文件布局规则如下: v i e w 根目录c o n t r o l l e r 名称a c t i o n 名称v m c o n t r o l l e r 在a c t i o n 执行完后,将会调用模板引擎输出相应的内容。 c o n t r o ll e r c o n t r o ll e r 是m o n o r a i1 的核心。m o n o r a i1 有一个名为c o n t r o ll e r 的抽 西南交通大学硕士研究生学位论文第1 2 页 象类,应用中所有c o n t r o l l e r 都要从此继承。 c o n t r o l l e r 的名称一般以c o n t r o l l e r 后缀,而c o n t r o l l e r 的名称默认 是类名去掉c o n t r o l l e r 后缀。例如h o m e c o n t r o l l e r 的名称是b o m e 。如果不 想要这种命名规则的话,可以标记c o n t r o l l e r d e t a i l s a t t r i b u t e 去指定名 称。 下面是基类c o n t r o l l e r 的一些常用的成员和特性: r e n d e r v i e w ,输出v i e w ; r e n d e r v i e 霄( s t r i n gn a m e ) r e n d e r v i e w ( s t r i n gc o n t r o l l e r ,s t r i n gn a m e ) c a n c e l v i e w 0 :如果不需要处理v i e w ,或者甚至a c t i o n 没有对应的 v i e w ,就应该调用它停止v i e w 的执行。 p r o p e r t y b a g : p r o p e r t y b a g 是基类c o n t o r l l e r 里的一个简单的i d i c t i o n a r y ,被存 放在h t t p c o n t e x t c u r r e n t i t e m 里。放在p r o p e r t y b a g 里的对象就可 以在v i e w 里被引用。 f l a s h : 特性和p r o p e r t y b a g 完全一样,只是语义上的区别,p r o p e r t y b a g 用于给v i e w 提供数据,f l a s h 则是用来在r e q u e s t 中存放临时的数据。 h e l p l e r s : n v e l o c i t y 模板并不像a s p x 那样可以使用任何n e t 语法,它只允 许对特定容器里对象的访问。如果有需要借助后台的类去对界面显的 内容进行处理的话( 例如对数字或日期进行格式化) ,可以创建对象的 实例,然后添加到h e l p e r s 集合里。 m o n o r a i l 里内置了很多h e l p e r ,例如a j a x h e l p e r ,h t m l h e l p e r , v a l i d a t i o n h e l p e r 等。 v i e w e n g i n e m o n o r a i l 实现的模板引擎有3 个 a s p n e t v i e w e n g i n e 用传统的a s p x 文件做模板,可以照常使用a s p x 语法和服务器控件, 但是由于w e b f o r m 的生命周期和m o n o r a i l 完全不同,有时候会让人觉得别 扭,有部分特性也受到了限制。 n v e t o c i t y v i e w e n g i n e 西南交通大学硕士研究生学位论文第13 页 用n v e l o c i t y 做模板引擎,需要学习v t l 语法,但是使用很简单,特 别是很多j a v a 程序员已经熟悉v e l o c i t y 。简单的语法也强迫程序员把逻 辑和界面很好的分离开来,方便跟美工配合。 b r a il v i e w e n g i n e 基于b o o 的模板引擎,b o o 是种语法类似p y t h o n 的n e t 语言,据 m o n o r a i l 的参考说,b r a i l 引擎是功能最强,性能最好的选择,但b o o 是 一种陌生的语言,这成了b r a i l 引擎应用的最大障碍。 2 3 4m o n o r a i i 的优点 五花八门的s e r v e rc o n t r o l 是似乎是a s p n e t 最吸引人,最有优势的地 方。w e b f o r m 确实是一个非常棒的设计。复杂的h t m l 和j s 在服务端被包装 成简单易用,有清晰层次结构的对象,比起a s p 时代界面的编写方便多了。 但m o n o r a i l 虽然抛弃了s e r v e rc o n t r o l 的设计模式,但可以更方便的和美 工配合,而且使用m o n o r a i l 的特性后,代码更为的简洁和清爽,代码量比传 统的w e b f o r m 开发少多了。1 一下几点是m o n o r a i l 效率之高的原因: s m a r t d i s p a t c h e r c o n t r o l l e r 提供了q u e r y s t r i n g 或f o r m 到a c t i o n 参数 的绑定,支持s t r i n g ,各种数值类型,数组以及h t t p p o s t e d f i l e 。 参数还可以绑定到一个对象。 可以定义f i l t e r ,在a c t i o n 之前和或之后执行,在f i l t e r 里可以获 得a c t i o n 相关的上下文,如果是在a c t i o n 之前执行还可以通过返回 f a l s e 终止a c t i o n 的执行。f i l t e r 可以用于权限验证, 日志,生成公 有的动态内容等方面,提高了逻辑代码的复用。 模板可以嵌套,或者在c o n t r o l l e r 里定义l a y o u t a t t r i b u t e 使模板被 嵌套,并且引入了概念有点类似u s e rc o n t r o l 的v i e w c o m p o n e n t ,提 高了界面的复用。 逻辑和界面完全分离,便于
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 气血精津液学说课件
- 2025年住院医师规培-河南-河南住院医师规培(麻醉科)历年参考题库含答案解析
- 2025年住院医师规培-河北-河北住院医师规培(整形外科)历年参考题库含答案解析(5套)
- 2025年住院医师规培-河北-河北住院医师规培(儿外科)历年参考题库典型考点含答案解析
- 2025年住院医师规培-江西-江西住院医师规培(急诊科)历年参考题库典型考点含答案解析
- 2025年住院医师规培-江苏-江苏住院医师规培(放射肿瘤科)历年参考题库含答案解析
- 2025年住院医师规培-江苏-江苏住院医师规培(内科)历年参考题库含答案解析(5套)
- 2025年事业单位工勤技能-重庆-重庆热力运行工三级(高级工)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-重庆-重庆机械热加工五级(初级工)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-重庆-重庆工程测量工三级(高级工)历年参考题库典型考点含答案解析
- 城市发展史起源演变和前景概述课件
- 麻醉术后护理业务学习
- 人教版高二语文必修四《中华文化精神》教学设计
- 初中数学-综合与实践 哪一款“套餐”更合适教学课件设计
- 采油采气井控题库
- Cpk 计算标准模板
- 精选浙江省普通高中生物学科教学指导意见(2023版)
- “魅力之光”核电知识竞赛试题答案(二)(110道)
- 外科学课件:食管癌
- 汽机专业设备运行日常点检
- GB/T 2820.12-2002往复式内燃机驱动的交流发电机组第12部分:对安全装置的应急供电
评论
0/150
提交评论