(计算机系统结构专业论文)层架构在crm系统中的应用.pdf_第1页
(计算机系统结构专业论文)层架构在crm系统中的应用.pdf_第2页
(计算机系统结构专业论文)层架构在crm系统中的应用.pdf_第3页
(计算机系统结构专业论文)层架构在crm系统中的应用.pdf_第4页
(计算机系统结构专业论文)层架构在crm系统中的应用.pdf_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

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

文档简介

硕士论文 层架构在a t m 系统中的应用 摘要 随着电信领域的飞速发展,运营支撑系统软件也不断地向分布式和大规模 发展,架构需求越来越成为软件开发和实施的核心软件架构的建立是一个复 杂而又持续改进的过程,层架构模式作为最早成熟的软件体系架构,越来越为 开发者青睐,在大型软件设计中发挥着重要的作用。 论文论述了层架构的设计思想,在此基础上设计了一套软件系统架构方案。 不仅很好的解决了项目中复杂的业务逻辑处理问题,而且提高了系统的效率和 性能方案应用于网通的一个c 蹦项目中,取得了预期的运行效果。为设计和 实现信息流量大,业务逻辑复杂的企业信息系统提供了一个很好的借鉴。 该方案改进了j 2 e e 架构的表示层,细分了业务逻辑层,改进了数据访问层。 本系统的体系架构,有效的区分了表现和业务逻辑,很好的实现了业务逻辑和 数据的分离。系统的整体架构有助于减少代码重复,降低维护难度,提高系统 的扩展性和跨平台性 关键词:层架构,j 2 e e 架构,表示层,业务逻辑层,数据访问层 硕士论文 层架构在c r m 系统中的应用 a b s t r a c t w i t hf a s td e v e l o p i n gi nt e l e c o md o m a i n s ,s u p p o r ts y s t e ms o f t w a r ed e v e l o p st o d i s t r i b u t e da n dl a r g es c a l es t y l e t h en e e do ff r a m e w o r kg r a d i l a i l yb c c o m o st h ec o 他 o fe x p l o i t a t i o na n di m p l e m e n t t h eb u i l d i n go ff r a m e w o r ki sac o m p l i c a t i n ga n d i m p r o v i n gp r o c e s s a st h ee a r l i e s tm a t 0 1 es o f t w a r e 丘鞠e w o r k ,l a y e rs t r u c t u r ei s u s e dm o 鹏a n dm o r eb yd e v e l o p e r , a n dt a k e si m p o r t a n te f f e c ti nd e s i g n t h i sp a p e rs t u d i e sd e s i g nt h i n k i n go fl a y e rs t r u c t u r ea n db r i n g sf o r w a r dan o w s o f t w a r es y s t e mf r a m e w o r km o d eo nb a s eo f i t t h i sn e wm o d en o to n l yr e s o l v e st h e c o m p l i c a t e do p e r a t i o nq m s t i o 璐i np r o j e c tw e l l ,b u ta l s oa d v a n c c ss y s t e m s e f f i c i e n c ya n dc a p a b i l i t y t h i sm o d e h a sb e e nu s e di nt h ec r m p r o j e c tf o rc n c ,a n d a c q u i r e sa na n t i e i p a t i v ee f f e c t t h i sm o d em a k e sag o o de x a m p l ef o rd e s i g n i n ga n d i m p l e m e n t i n gam i ss y s t e mo fe n t e r p r i s ew i t ha b u n d a n td a t aa n dc o m p l i c a t e d o p e r 砒i o n t h i sn e wm o d ei m p r o v e so l lp r e s e n t a t i o nh y c r , a n ds e p a r a t e sb u s i n e s sl a y e r , t h e nm e l i o r a t ed a t aa r :c c l k ql a y e r t h i sm o d e sa k h i _ t e 咖ed i s t i n g u i s h e sb c t w e , e n v i e wa n dp r o g r a ml o g i cd r a s t i c a l l ya n dd o e sw e l li ns e p a r a t i n go p e r a t i o nl o g i cf r o m d a t a t h ew h o l ea r c h i t e c t u r eh e l p st o d u c m gr e p e t i t i o ni nc o d e , d e b a s i n gd i f f i c u l t y o fm a i n t c l l a n c e ,e n h a n c i n gs y s t e m se x p a n s i b i l i t yt o g e t h e rw i t ht r a n s i t i o no nf l a t l - o o f s k e yw o r d s :l a y e rs t r u c t u r e ;j 2 e es t r u c t u r e ;p r e s e n t a t i o nl a y e r ;b u s i n e s s l a y e r ;, d a t aa c c e s sl a y e r 声明 本学位论文是我在导师的指导下取得的研究成果,尽我所知,在本 学位论文中,除了加以标注和致谢的部分外,不包含其他人已经发表或 公布过的研究成果,也不包含我为获得任何教育机构的学位或学历而使 用过的材料。与我一同工作的同事对本学位论文做出的贡献均己在论文 中作了明确的说明。 研究生签名:年月日 学位论文使用授权声明 南京理工大学有权保存本学位论文的电子和纸质文档,可以借阅或 上网公布本学位论文的部分或全部内容,可以向有关部门或机构送交并 授权其保存、借阅或上网公布本学位论文的部分或全部内容。对于保密 论文,按保密的有关规定和程序处理。 研究生签名: 勰酶 年月日 硕士论文层架构在c r m 系统中的应用 1 绪论 1 1 研究背景 一个典型的运营支撑系统,主要由提供应用和数据的服务器和最终业务人员所 使用的操作终端、以及将它们连接起来的网络所组成。在传统的c s 系统部署模式 下,服务器主要是指提供共享的数据存取的数据库服务器( 也可通过存储过程提供 一部分业务应用逻辑) ,客户端运行大部分的业务逻辑。而在c a s 或b a s 三层 架构模式下,服务器的分工被进一步细化,由单独的数据库服务器负责共享数据存 取,而由单独的应用服务器来提供业务应用逻辑,客户端( 可以是浏览器( b ) 也可以 是传统应用客户端( c ) ) 基本只负责界面展现,不负责业务逻辑执行。 现在电信和网通运营支撑系统的主要运行模式采用了省集中建设模式所谓省 集中建设模式就是指系统的各组成部分中,各种服务器( 包括应用和数据服务器) 都 集中在省中心,而不像以往那样分布在各本地网,当然操作终端仍然分布在各本地 网1 2 扪省集中模式又分“物理集中”和“逻辑集中”两种类型。“物理集中”只是 将原来位于各本地网的服务器集中到省中心管理,各本地网仍使用物理上独立的服 务器,实际上还是多套应用、多套数据库在运行,各本地网的操作终端仍访问属于 自己的服务器,与原来省地两级的建设模式区别并不大;而“逻辑集中”是指整个 省采用一套数据库、一套应用,物理设备可有多台,但都是以集群的方式运行相同 的应用,各本地网的操作终端都访问相同的服务器闭。如图1 1 1 所示,是这两种 集中方式的示意图。图中的服务器都是逻辑上的示意,物理上很可能是由多台服务 器组成的集群。由于物理集中模式下维护工作依然很繁重( 需要维护多台服务器、 多套应用、多套数据) ,而且也不能保证应用版本和数据模型的一致,因此运营商 更倾向于采用逻辑省集中的模式,估计这也是未来电信和网通运营支撑系统的主要 运行模式。 硕士论文层架构在c r m 系统中的应用 图1 1 1 省集中建设模式图 无论哪种省集中方式,其共同特点就是服务器和操作终端在物理位置上相距更 加遥远( 意味着维护起来更加复杂) ,连接服务器和操作终端的网络类型也由局域 网、城域网变为了广域网( 意味着更窄的带宽和更大的时延) 因此,无论如何传统 的c s 模式不再适合于省集中方式因为它安装维护复杂,且操作终端和服务器之 间的交互次数多、数据传输量大 河北网通在其新的运营支撑系统规划中,采用了逻辑省集中的系统建设方式, 给运营支撑系统的应用开发、部署都带来了不少问题。为此,本系统没有采用传统 的c s 模式,而是采用了b s 模式的j 2 e e 平台的技术架构。j e e e 平台的技术架构 所具有的开放性能够带给运营商更多的平台、设备选择自由。在客户端采用标准的 浏览器,完全不用安装任何应用程序,基本做到了客户端的免维护。本系统针对网 通新的运营支撑系统规划和电信领域运营支撑系统所具有的数据流量大、业务逻辑 繁杂的特征,在j 2 e e 传统架构上又做了不少的改进并采用了先进的设计模式和技 术,设计了一种新的软件体系架构。现在该体系架构已经被应用到河北网通大客商 客管理系统中,实现了系统预期的设计效果,访问效率高,运行也很稳定。 1 2 层架构模式研究 1 2 1 层架构模式概述 层架构模式就是把应用系统分解成子任务组,其中每个子任务组处于一个特定 的抽象层次上。层架构模式组织成一个层次结构,每一层为上层服务,同时也作为 下层的客户端 4 6 1 。层的调用通过决定层间如何交互的协议来定义。这种风格允许将 一个复杂问题分解成一个层堆栈实现。由于每层最多只影响两层,同时只是给相邻 层提供接口,允许每层用不同的方法实现,为软件重用和扩展提供了强大的支持。 2 硕士论文层架构在c p m 系统中的应用 层模式的结构如图1 2 1 1 所示 最高层次的抽象层 最低层次的抽象层 图1 - 2 i 1 层模式结构图 层的好处在于: ( 1 ) 使用层,不需要去了解层的实现细节: ( 2 ) 可以使用另一种技术来改变基础的层,而不会影响上面的层的应用; ( 3 ) 可以减少不同层之间的依赖; ( 4 ) 容易制定出层标准; ( 5 ) 底下的层可以用来建立顶上的层的多项服务。 1 2 2 三层架构模式 层架构发展至今,现阶段最为通用的是三层架构,这三层分别是:表示层,业 务层和基础架构层。 表示层主要处理用户和软件的交互现在最流行的莫过于视窗图形界面( w i m p ) 和基于h t m l 的界面了表示层的主要职责就是为用户提供信息,以及把用户的指 令翻译。传送给业务层和基础架构层。 基础架构层包括处理和其他系统的通信,代表系统执行任务。例如和数据库系 统交互,和其他应用系统的交互等。大多数的信息系统,这个层的最大的逻辑就是 存储持久性数据,也可称为数据层。 还有一个就是业务层。它包括输入和存储数据的计算,验证表示层传来的数据, 根据表示层的指令指派一个基础架构层 微软的d n a 架构就是采用了这种三层架构,分为:表示层,业务层和数据存储 层d n a 架构中,各层的操作都是基于数据存储层传出的s q l 查询结果集。这样的 后果是极大的增加了表示层和业务层同数据存储层之间的耦合度。 3 由 硕士论文层架构在c r m 系统中的应用 三层架构的一个很大的问题也可说是极大的一个弱点在于,它将模型和w e b 服 务混在一起,并将所有的逻辑都放在一层,业务对象因此非常的臃肿。因为对象的 行为太多了,类也就太大了,必然成为一个超集。 1 2 3j 2 既架构发展现状 j 2 e e 架构是当前主流的架构之一,是层架构在j 2 e e 平台上的应用。j 2 e e 应用 的架构模式经历了两层体系架构到三层的架构模式,以至发展到今天的成熟的多层 分布式应用模型。目前最经典也是最为通用的多层模式是:客户端层、表示层、业 务逻辑层、数据访问层和数据源层每层都是按系统中业务逻辑而划分的,各层具 有惟一的职责m j ; ( 1 ) 客户端层:该层代表访问系统的人员、应用程序或系统的客户端; ( 2 ) 表示层:封装了用来服务访问本系统的所有客户端的表示层逻辑; ( 3 ) 业务逻辑层:提供业务服务,包括业务数据和业务逻辑; ( 4 ) 数据访问层:负责与外部系统和外部资源通信,有多种方式,如j d b c ; ( 5 ) 数据源层:包括业务数据源和外部系统资源。 这样的划分方式虽然是经典划分,但在实际的项目开发中,开发者有时还需要 对五层结构进行扩展来满足一些项目的具体要求。 目前在j 2 e e 五层架构上出现了许多补充架构。s t r u t s 和t u r b i n e 是其中两个 著名的开源的补充架构。 s t r u t s 是a p a c h ej a k a r t a 项目的一个顶级项目,由a s f 发起与赞助,它采用 了基于w e b 的m v c 模式,能更好的帮助j a v a 开发者利用j 2 e e 开发w e b 应用i s 2 。s t r u t s 由一组相互协作的类( 组件) 、s e r v l e t 以及j s pt a g l i b 组成。其中,s e r v l e t 用 于m 卵请求的分配及j s p 的调用;标记库用于页面的动态生成;实用类库用于x l l l 的解析和b e a n 属性的设定 t u r b i n e 也是j a k a r t a 小组的杰作,它是基于s e r v l e t 的w e b 应用架构,使 j a v a 开发者可以快速、安全的构建自己的网络应用。t u r b i n e 是一个完全的m v c 应 用架构,主要由以下几个部分组成【5 2 】: ( 1 ) 表述层,v e l o c i t y 或j s p ; ( 2 ) 数据层,t o r q u e 和p e e r s ; ( 3 ) 控制层,t u r b i n e l ( 4 ) m 儿,表单验证,i n t a k e : ( 5 ) 日志,l 0 9 4 j 和t u r b i n e 2 中的l o g g i n g s e r v i c e ; ( 6 ) s e r v i c ef r a m e w o r k s ,t u r b i n e 。 4 硕士论文层架构在c r m 系统中的应用 1 3 论文的主要工作 论文的主要工作是设计了一个合理高效的软件体系架构,在此基础上设计和实 现了“河北网通大客商客管理系统”。 论文首先介绍了研究背景和层架构的思想以及层架构在j 2 e e 平台上的应用 j 2 e e 架构。 接着总体介绍了j 2 e e 架构的多层模式和州c 模式,随后介绍了实现系统所用 到的技术,包括:s t r u t s 技术,e j b 技术和h i b e r n a t e 技术等。 然后给出了系统的总体结构设计,先描述了系统是如何分层的,然后分层详细 的介绍了每层的设计,包括它所用到的技术等,最后详细介绍了本系统的体系架构 在j 2 e e 传统架构基础上的改进之处。 最后给出了系统的具体实现。首先描述了系统的有关情况,包括系统建立的目 的,目标用户等。接着以其中的两个功能模块的实现过程为例论述了系统的实现。 1 4 论文的内容 本文从层架构的概念和设计思想入手,设计并实现了“河北网通大客商客管理 系统”本文的组织如下: 第1 章:绪论,主要介绍研究背景,层架构的发展和j 2 e e 架构的相关情况, 论文的主要工作和论文的内容; 第2 章:主要介绍了多层模型和m v c 的概念,及一些相关的技术,包括s t r u t s , h i b e r n a t e 和e j b 等; 第3 章;介绍了系统的总体结构设计,分层详细描述了各层的设计,并说明了 本系统架构设计的改进之处; 第4 章:详细描述了本系统的实现; 第5 章:总结与展望 致谢 参考文献 硕士论文 层架构在c r m 系统中的应用 2j 2 髓架构的多层模型及相关技术概述 2 1j 2 髓架构的多层模型的概念 j 2 e e 技术架构的内涵包括:系统整体架构上采用多层模型、采用一个支持j 2 e e 标准的平台产品作为应用服务器并使用其提供的各种j 2 e e 标准服务、基于组件进 行应用的开发和部署。 多层模型中的每一层都可以被想象成一个虚拟机,它是一个抽象的功能模块集 合,提供一组特定的功能和服务。各层通常只和相邻层发生交互行为,一般不会越 层访问其它层的服务,虽然在j 2 e e 的多层模型中这种情况也被允许( 例如客户层 也可直接访问e i s 层) ,但在一般比较大型的系统开发出于规范设计和统一应用模 式的考虑一般不允许这种情况的发生 目前,对于基于组件、所覆盖的技术不断膨胀的j 2 e e 多层体系结构主要采用 m v c 模式,m v c 模式是很多程序架构的基础。 2 2m v c 架构模式介绍 m v c 最初是在s m a l l t a l k - 8 0 中被用来构建用户界面的。m 代表模型m o d e l ,v 代表视图v i e w ,c 代表控制器c o n t r o l l e r 3 2 l 。m v c 的目的是增加代码的重用率,减 少数据表达,数据描述和应用操作的耦合度。同时也使得软件可维护性,可修复性, 可扩展性,灵活性以及封装性大大提高。 通过把数据模式从各种可以被存取和控制的数据中分离出来可以改善分布式 系统的设计。m v c 设计模式由三部分组成。模型是应用对象,没有用户界面。视图 表示它在屏幕上的显示,代表流向用户的数据。控制器定义用户界面对用户输入的 响应方式,负责把用户的动作转成针对m o d e l 的操作。m o d e l 通过更新v i e w 的数 据来反映数据的变化。三者关系如图2 2 1 所示【5 1 l 。 6 硕士论文层架构在c r m 系统中的应用 圈2 2 1 模型、视图、控制器三者之间的关系 对m v c 关系图的理解如下表所示: 表2 2 1 对m v c 关系图的理解 模型m视图v 控制器c 分工抽象系统应用的功能抽象数据表达抽象用户和系统的事 封装系统的状态表示针对用户的数据件的语意映射 提供使用系统功能的方维护与m o d e l 数据的把用户输入翻译为系 法和路径一致性统事件 管理数据的存储和一致 根据用户的输入和上 性下文情况选择合适的显 当数据发生变化时通知 示数据 相关部分 协作当他改变系统致据时通( d 把a 4 0 d e l 表征给用户把用户输入转成对 知v i e w 当数据被相关m o d e l m o d e l 的系统行为 能够被v i e w 检索数据改变时更新表示的数据根据用户输入和m o d e l 提供对c o n t r o l l e r 的操把用户输入提交给 的动作结果选择合适的 作途径 c o n t r o l l e r v i e w 具体到j 2 e e 技术架构下的w e b 应用上,m v c 三者间的分工和实现技术如下 3 2 1 : 7 颈士论文层架构在c r m 系统中的应用 v i e w :表示,显示输入输出数据,界面展现,采用j s p 技术实现。 m o d e l :业务逻辑和数据,基于输入和定义的业务流程执行计算或其它操作, 采用e j b ,j a v a b e a n 技术实现 c o n t r o l l e r :控制器,从客户端接受请求,并且选择执行相应的业务逻辑,然 后把响应结果送回到客户端。实现过程如图2 2 2 所示。 2 3s t r u t s 框架介绍 2 3 1 基本工作过程 2 2 2j 2 e ew e b 应用下m v c 的分工和实现 图 采用m v c 实现w e b 应用时,最好选一个现成的m v c 框架,在此基础之上进行开 发,可取得事半功倍的效果。现在有很多可供使用的m v c 框架,s t r u t s 就是其中一 个比较经典的。它是a p a c h e 组织的一个项目,像其他的a p a c h e 组织的项目一样, 它也是开放源码项目。它采用的主要技术是s e r v l e t ,j s p 和c u s t o mt a gl i b r a r y 3 ”。 图2 3 1 1 是s t r u t s 中的m v c 实现示意图。 8 硕士论文 层架构在c r m 系统中的应用 图2 3 1 1s m 船中的m v c 实现示意图 其大体的工作过程如下p 】: 首先,控制器( a c t i o n s e r v l e t ) 进行初始化工作,读取配置文件 ( s t r u t s c o n f i g x m l ) ,为不同的s t r u t s 模块初始化相应的m o d u l e c o n f i g 对象。 比如配置文件中的a c t i o n 映射定义都保存在a c t i o n c o n f i g 集合中。相应地有 c o n t r o l c o n f i g 集合、f o r m b e a n c o n f i g 集合、f o r w a r d c o n f i g 集合和 m e s s a g e r e s o u r c e s c o n f i g 集合等。 控制器接收h t t p 请求,并从a c t i o n c o n f i g 中找出对应于该请求的a c t i o n 子 类,如果没有对应的a c t i o n ,控制器直接将请求转发给j s p 或者静态页面。否则控 制器将请求分发至具体a c t i o n 类进行处理。 在控制器调用具体a c t i o n 的e x e c u t e 方法之前,a c t i o n f o r m 对象将利用h t t p 请求中的参数来填充自己。具体的a c t i o n f o r m 对象应该是a c t i o n f o r m 的子类对象, 它其实就是一个j a v a b e a n 。此外,还可以在a c t i o n f o r m 类中调用v a l i d a t e 方法来 检查请求参数的合法性,并且可以返回一个包含所有错误信息的a c t i o n e r r o r s 对 象。如果执行成功,a c t i o n f o r m 自动将这些参数信息以j a v a b e a n ( 一般称之为f o r m b e a n ) 的方式保存在s e r v l e tc o n t e x t 中,这样它们就可以被其它a c t i o n 对象或 者j s p 调用。 s t r u t s 将这些a c t i o n f o r m 的配置信息都放在f o r m b e a n c o n f i g 集合中,通过它 们s t r u t s 能够知道针对某个客户请求是否需要创建相应的a c t i o n f o r m 实例。 a c t i o n 很简单,一般只包含一个e x e c u t e 方法,它负责执行相应的业务逻辑, 如果需要,它也进行相应的数据检查执行完成之后,返回一个a c t i o n f o r w a r d 对 象,控制器通过该a c t i o n f o r w a r d 对象来进行转发工作【3 】。 9 硕士论文 层架构在c r m 系统中的应用 2 3 2 各部分详细介绍 2 3 2 1a c t i o n s e r v l e t 在s t r u t s 中缺省采用a c t i o n s e r v l e t 类来充当m v c 中的控制器如果 a c t i o n s e r v l e t 不能满足需求,也可以通过继承它来实现自己的类。这可以在 w e b i n f w e b m l 中来具体指定。 a c t i o n s e r v l e t 表示w v c 结构中的控制器部分,它需要完成控制器所需的前端 控制及转发请求等职责a c t i o n s e r v l e t 被实现为一个专门处理h t t p 请求的 s e r v l e t ,它同时具有s e r v l e t 的特点。在s t r u t s 中它主要完成以下功能 3 1 : ( 1 ) 接收客户端请求; ( 2 ) 根据客户端的u r i 将请求映射到一个相应的a c t i o n 类; ( 3 ) 从请求中获取数据填充f o r mb e a n ; ( 4 ) 调用a c t i o n 类的e x e c u t e0 方法获取数据或者执行业务逻辑: ( 5 ) 选择正确的视图响应客户 此外,a c t i o n s e r v l e t 还负责初始化和清除应用配置信息的任务 a c t i o n s e r v l e t 的初始化工作在i n i t 方法中完成,它可以分为两个部分:初始化 h c t i o n s e r v l e t 自身的一些信息以及每个模块的配置信息。前者主要通过 i n i t i n t e r n a l 、i n i t o t h e r 和i n i t s e r v l e t 三个方法来完成。可以在 w e b i n f 向e b x m l 中指定具体的控制器以及初始参数。a c t i o n s e r v l e t 根据不同的 模块来初始化m o d u l e c o n f i g 类,并在其中以x x x c o n f i g 集合的方式保存该模块的 各种配置信息,比如a c t i o n c o n f i g ,f o r m b e a n c o n f i g 等。 初始化工作完成之后,a c t i o n s e r v l e t 准备接收客户请求。针对每个请求,方 法p r o c e s s ( h t t p s e r v l e t r e q u e s tr e q u e s t ,h t t p s e r v l e t r e s p o n s er e s p o n s e ) l 等被 调用该方法指定具体的模块,然后调用该模块的r e q u e s t p r o c e s s o r 的p r o c e s s 方法 p r o t e c t e dv o i dp r o c e s s ( h t t p s e r v l e t r e q u e s tr e q u e s t , h t t p s e r v l e t r e s p o n s er e s p o n s e ) t h r o w si o e x c e p t i o n ,s e r v l e t e x c e p t i o n r e q u e s t u t i l s s e l e c t m o d u l e ( r e q u e s t ,g e t s e r v l e t c o n t e x t0 ) : g e t r e q u e s t p r o c e s s o r ( g e t m o d u l e c o n f i g ( r e q u e s t ) ) p r o c e s s ( r e q u e s t , r e s p o n s e ) : r c q u e s t p r o c c s s o r 包含了s t r u t s 控制器的所有处理逻辑,它调用不同的 p r o c e s s x x x 方法来完成不同的处理,表2 3 2 1 1 列出其中几个主要的方法 1 0 硕士论文层架构在c r m 系统中的应用 方法功能 p r o c e s s p a t h 获取客户端的请求路径 p r o c e s s m a p p i n g 利用路径来获得相应的a c t i o n m a p p i n g p r o c e s s a c t i o n f o 抛初始化a c t i o n f o r m ( 如果需要) 并存入正确的s c o p e 中 p r o c e s s a c t i o n c r e a t e初始化a c t i o n p r o c e s s a c t i o n p e r f o r m调用a c t i o n 的e x e c u t e 方法 p r o c e s s f o r w a r d c o n f i g 处理a c t i o n 返回的a c t i o n f o r - a r d 2 3 2 2a c t i o n f o r m 对于a c t i o n f o 枷可以从以下几个方面来理解: ( 1 ) a c t i o n f o r m 表示h t t p 窗体中的数据,可以将其看作是模型和视图的中介, 它负责保存视图中的数据供模型或者视图使用,只有通过a c t i o n f o r m 验证的数据 才能够发送到a c t i o n 处理; ( 2 ) a c t i o n f o r m 是与一个或多个a c t i o n c o n f i g 关联的j a v a b e a n ,在相应的 a c t i o n 的e x e c u t e 方法被调用之前,a c t i o n f o r m 会自动利用请求参数来填充自己 ( 初始化属性) ; ( 3 ) a c t i o n f o r m 是一个抽象类,你必须通过继承来实现自己的类。 a c t i o n f o r m 首先利用属性的g e t t e r 和s e t t e r 方法来实现初始化,初始化完毕 后,a c t i o n f o r m 的v a l i d a t e 方法被调用,可以在其中来检查请求参数的正确性和 有效性,并且可以将错误信息以a c t i o n e r r o r s 的形式返回到输入窗体。否则, a c t i o n f o r m 将被作为参数传给a c t i o n 的e x e c u t e 方法以供使用。 a c t i o n f o r mb e a n 的生命周期可以设置为s e s s i o n ( 缺省) 和r e q u e s t ,当设置 为s e s s i o n 时,则需要在r e s e t 方法中将所有的属性重新设置为初始值。 由于a c t i o n f o r m 对应于h t t p 窗体,所以随着页面的增多,a c t i o n f o r m 将会急 速增加而且可能同一类型页面字段将会在不同的a c t i o n f o r m 中出现,并且在每 个a c t i o n f o r m 中都存在相同的验证代码。为了解决这个问题,可以为整个应用实 现一个a c t i o n f o r m 或者至少一个模块对应于一个a c t i o n f o r m 。 2 3 2 3a c t i o n 实际开发时通过继承a c t i o n 类来实现具体的执行类。具体a c t i o n 类的功能一 般都在e x e c u t e 方法中完成,其中主要涉及到以下几个方面: ( 1 ) 辅助a c t i o n f o r m 进行一些表单数据的检查。由于在a c t i o n 和a c t i o n f o r m 颈士论文 层架构在c r m 系统中的应用 中都可以实现验证方法,那么如何来安排它们之间的分工呢? 一般来说,秉着m v c 分离的原则,也就是视图级的验证工作放在a c t i o n f o r m 来完成,比如输入不能为 空,e m i l 格式是否正确,利用v a l i d a t o r f o r m 可以很轻松地完成这些工作。而与 具体业务相关的验证则放入a c t i o n 中,这样就可以获得最大a c t i o n f o r m 重用性的 可能; ( 2 ) 更新服务器端的b e a n 数据,后续对象中可能会用到这些数据,比如在j s p 中利用b e a n :w r i t e 来获得这些数据; ( 3 ) 根据处理结果决定程序的去处,并以a c t i o n f o r w a r d 对象的形式返回给 a c t i o n s e r v l e t 。 2 4h i b e m a t e 介绍 2 4 1 简介 大部分企业应用不得不与他们的后端数据库频繁交互。为了让这种交互成为可 能,并且使得交互变得有效而迅捷,企业应用开发者在应用和底下的数据库之间创 建了一个“持久层”( p e r s i s t e n c el a y e r ) 。这个持久层负责存储从应用到数据库 的数据,也负责数据的检索、更新和删除。在基于j 2 e e 的企业应用中,组成这个 持久层的j a v a 类既可以映射对象到数据,也可以映射数据到对象。这个持久层使 用j d b c 、实体b e a n s 、j d o 等等之类的工具通常都可以建立。 建立一个持久层是简单的,只要在j a v a 对象和相应的数据库之间存在线性关 系( 例如:一个对象域映射到相应的数据库表格的某一列) 。但是这种关系常常难 于建立,因为对象或者下层的数据库结构复杂( 例如,对象具有混合的类型、集合、 和属性;数据库表格有外部钥匙约束、串联属性) 经常,在开发持久层的时候, 后端数据库的属性和它的模式假设永远保持不变。基于这种假设,所有的持久性操 作在应用中是硬编码的,因此只能绑定到一种特殊的数据库模式中当后端的数据 库模式任何时候发生改变( 这在现实生活中经常发生) ,这种方法极耗时间和精力。 数据库模式的改变导致了整个持久层必须重写,应用程序代码本身也有可能要进行 大量的修改。这是一个单调乏味、非常费时的任务。而且,这些持久层常有可能发 生故障,效率低下这就是h i b e r n a t e 最拿手的地方。h i b e r n a t e 是一个开源对象 与持久性和查询相关的框架。它对j d b c 进行了轻量级的对象封装,使j a v a 程序员 可以随心所欲的使用对象编程思维来操纵数据库田l 。h i b e r n a t e 帮助基于普通的 j a v a 对象模型的持久对象的创建,从而允许持久对象拥有复杂的结构如混合类型、 集合和属性,还可以拥有用户自定义的类型。现在这些持久对象可以有效的反映出 底层数据库模式的复杂结构。 硕士论文层桨构在c r m 系统中的应用 h i b e r n a t e 依赖于“运行期反射”“运行期反射”在运行期收集关于对象和它 们相应的数据库映射的信息,这就废除了持久层内对象数据库映射的硬编码。这样, h i b e r n a t e 使得持久层以持久层代码的最小修改就能够适应底层数据库模式的任何 未知变化闭。反射是核心j a v a 的一个特征,它促使j a v a 代码发现关于所装载的类 的域,方法和构造器。反射允许使用反射的域、方法和构造器,在安全限制内,运 行对象上的底层配对物。 h i b e r n a t e 自动将持久层扩展到更大的范围,使用它内建的设备 c o d e g e n e r a t o r 和s c h e m a e x p o r t 就可以完成,从而大大的降低了硬编码的故障 率h i b e r n a t e 也提供了易于使用的h i b e r n a t eq u e r yl a n g u a g e ( h q l ) ,它是作为 “到s q l 的最小化面向对象扩展”而设计的一种丰富的查询语言【i 羽h q l 推动了独 立于数据库类型的查询的编写,独立于数据库类型的查询在运行期内可以转换成底 层数据库的本地s q l 方言。该方法保证了底层数据库类型改变时( 如从o r a c l e 变 为s y b a s e ) 代码中的查询不受影响。 为了提高效率,h i b e r n a t e 包括了一些策略,如与数据库交互时的多重最优化, 包括对象的缓存、有效外部连接的获取、必要时s q l 语句的执行。h i b e r n a t e 的过 程开销比j d b c 少1 0 。 2 4 2 优势 与其它o r a l 方案( 尤其是c m p 的实体b e a n ) 相比,h i b e r n a t e 具有以下明显优 势: ( 1 ) 兼容性:c m p 规范是一样的,但各厂家实现方法和策略各有不同,使用第 三方o r _ m a p p i n g 工具可以解决这个问题; ( 2 ) 运行效率;h i b e r n a t e 在对j d b c 封装的时候,优化了代码,保证查询效率; ( 3 ) 动态查询:e n t i t yb e a n 很难实现动态查询,这是因为他基于代码自动生 成技术,即最终的执行代码是在部署编译时生成的。h i b e r n a t e 基于反射机制,运 行时动态查询是很自然的事; ( 4 ) 继承和多态:e n t i t yb e a n 很难实现继承和多态,不能完全体现0 0 的优势; ( 5 ) 部署的灵活性。 2 4 3 体系结构 对h i b c r n a m 的高层的概览如图2 4 3 1 所示( 这幅图展示了h i b e r n a t e 使用数据 库和配置文件数据来为应用程序提供持久化服务和持久化的对象) 。 硕士论文层架构在c r m 系统中的应用 i 应用l h ; l i 持久化类 i il h i b e r n a t e 配置文件与数据表的映射文件 l 上 数据库 。图2 4 3 1h i b c m a t c 的高层概览图 在实际的系统里,数据访问层主要由以下三部分组成: ( 1 ) 持久对象,代表一个数据实体,对应于数据库中的一个表或多个表,封装 了对属性的访问方法; ( 2 ) 映射文件:描述数据库的数据对象和持久对象间的映射关系; ( 3 ) d r o :封装了对h i b e r n a t e 的访问和数据访问 2 4 4d a o 简介 在上面介绍h i b e r n a t e 体系架构时提到了d a o ,本系统在数据访问子层上选用 了d a o + h i b e r n a t e 的方案。 d a o 是一种设计模式,可用来封装对持久数据的访问。d a o 设计模式将访问系 统资源的接口与实现进行了分离,一个d a o 类提供一个操作数据源的抽象a p i ,这 一a p i 不管数据源是如何实现的,d a o 只是简单的知道如何从持久存储中根据某种 标识信息( 如主键或文件名) 装载自己,如何存储自己掣 l 。 通过封装数据访问调用,d a o 可以适配对不同数据库类型的访问。对不同数据 库访问的d a o 可以使用同样的接口( 接口与数据库和数据库操作无关) ,使应用组 装者可以在装配时选用合适的对象。d a o 模式不仅可以表现数据库中的数据,也可 以用来封装x m l 数据源通过使用d a o ,可以使应用做到与资源供应商无关,与资 源的实现无关,增强应用的可扩展性。 1 4 硕士论文层架构在c r m 系统中的应用 2 5 e j b 技术介绍 2 5 1 企业b e a n 概述 企业b e a n 用j a v a 语言编写,就是一个应用中封装了商务逻辑的服务器端组件。 这些商务逻辑是实现应用程序目标的代码。 2 5 1 1 企业b e a n 的优点 由于以下的原因,企业b e a n 大大简化了分布式应用的开发。首先e j b 容器给 企业b e a n 提供了系统级服务,使b e a n 开发者可以专注于商务问题的解决。是e j b 容器而不是开发者负责像事务处理和安全授权等系统级服务的管理。 其次因为企业b e a n 而不是客户端实现商务逻辑,客户端开发者就可以致力于 客户端表述的开发,而不必为实现商务规则或者数据库访问的日常处理而编码了。 结果使客户端“瘦”了许多,很明显,这个优点对于在小设备上运行的客户端来说 是很重要的1 6 】。 最后,因为企业b e a n 是可移植的,应用程序组装者可以用现有的企业b e a n 建 立新的应用程序。这些应用程序可以在任何兼容的j 2 e e 服务器上运行。 2 5 1 2 何时需要使用企业b e a n 如果应用程序符合以下的任一条件,就应该考虑使用企业b e a n 5 】: ( 1 ) 应用程序需要不断的升级。为了适应不断增长的用户,可能需要将应用程 序组件分布在多台不同的机器上运行。虽然并不仅仅是企业b e a n 可以在不同的机 器上运行,但企业b e a n 的运行位置对于客户端始终是透明的; ( 2 ) 需要用事务机制来保证数据完整性。企业b e a n 支持事务机制以提供对共 享资源并发访问的管理; ( 3 ) 应用程序需要支持众多不同类型的客户端。只需要极少的几行代码,远程 客户端就可以很容易的访问到企业b e a n 。这些客户都可以很“瘦”并且在理论上可 以是任意数量不同类型的客户端。 。 2 5 2 企业b e a n 的分类 表2 5 2

温馨提示

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

评论

0/150

提交评论