(计算机软件与理论专业论文)基于开源框架的crm系统研究及开发.pdf_第1页
(计算机软件与理论专业论文)基于开源框架的crm系统研究及开发.pdf_第2页
(计算机软件与理论专业论文)基于开源框架的crm系统研究及开发.pdf_第3页
(计算机软件与理论专业论文)基于开源框架的crm系统研究及开发.pdf_第4页
(计算机软件与理论专业论文)基于开源框架的crm系统研究及开发.pdf_第5页
已阅读5页,还剩54页未读 继续免费阅读

(计算机软件与理论专业论文)基于开源框架的crm系统研究及开发.pdf.pdf 免费下载

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

文档简介

摘要 目前电信企业均开始自主研发c r m ( c u s t o m e rr e l a t i o n s h i p m a n a g e m e n t ) 产品。在传统的企业开发模式下,开发流程复杂,开发 成本较高且性能欠佳,一些轻量级开源框架的出现弥补了这一不足。 本文从开源技术出发,提出了基于开源框架的c r m 系统开发模式, 并对其相关问题进行了深入的研究。 本文将轻量级开源框架s p r i n g 与a j a x ( a s y n c h r o n o u sj a v a s c r i p t a n dx m l ) 技术相结合进行企业开发模式的研究。首先分析了s p r i n g 框架的构成及其核心思想依赖注入。通过对其核心思想的探讨得出在 企业开发中可以用s p r i n g 来代替e j b ( e n t e r p r i s ej a v a b e a n s ) 的结论,将 业务层的耦合转移到s p r i n g 的b e a n 工厂中进行管理,提高系统的灵 活性。同时分析了a j a x 技术的响应原理,将这一技术应用予b s 结 构的客户关系管理系统的开发中,可以使系统的客户端实现无刷新无 等待,提高了系统的交互性。以开源框架为基础,设计了一个电信客 户关系管理系统的整体技术架构,充分结合s p r i n g 和a j a x 等技术的 特点,体现出基于开源技术的j 2 e e 开发优势。在这一框架基础上, 通过对传统电信c r m 客户模型的分析,建立了一个新的客户模型, 从多层次,多角度的描述客户信息,为用户提供多种视图。最后对该 系统性能的优化进行了研究,提出了相关的优化方法。 本文提出了一种基于开源框架的开发模式,通过c r m 系统实例 证明了开源框架对e j b 的可替代性。这些研究的成果都已开发形成产 品,从实践的角度验证了其应用和推广的价值。 关键词s p r i n g ,a j a x 技术,c r m ,客户模型 a b s t r a c t n o w a d a y s ,m a n yt e l e c o m m u n i c a t i o ne n t e r p r i s e sb e g i nt od e v e l o p t h e i ro w nc r m ( c u s t o m e r r e l a t i o n s h i pm a n a g e m e n t ) p r o d u c t s f o l l o w i n g t h et r a d i t i o n a le x p l o r i n gp a t t e m , t h ep r o c e s si sc o m p l i c a t e dw i t hh i 醢c o s t a n dp o o rp e r f o r m a n c e t h e s ed e f i c i e n c i e sa r em a d eu pb yt h ea p p e a r a n c e o fs p r i n g b a s e do l lt h eo p e ns o u r c ef t a m e w o r k , an e we x p l o r i n gm o d e lo f c r ms y s t e mi sp r e s e n t e da n ds o m er e l a t i v ep r o b l e m sa r es t u d i e di nt h i s t h e s i s e n t e r p r i s ed e v e l o p m e n tm o d e lb yu s i n gl i g h t w e i g h tf r a m e w o r k s p r i n ga n da 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 ) t e c h n o l o g yi s f o c u s e di nt h i st h e s i s t h es t r u c t u r eo fs p r i n ga n dt h ec o n c e p to f d e p e n d e n c yi n j e c t i o na r ea n a l y z e di nt h eb e g i f m i n g a c c o r d i n gt ot h e d i s c u s s i o no ft h ec o n c e p to fs p r i n g , e j b ( e n t e r p r i s ej a v a b e a n s ) c a nb e r e p l a c e db ys p r i n gt ot r a n s f e rt h eb u s i n e s sc o u p l ei n t ob e a nf a c t o r y , w h i c h i m p r o v e s t h e s y s t e mf l e x i b i l i t y m e a n w h i l e ,b yt a k i n ga d v a n t a g eo f r e s p o n s et h e o r yo f a j a xt e c h n o l o g yf o rt h ed e v e l o p m e n to f c r ms y s t e m w i t hb ss t r u c t u r e ,t h ec u s t o m e r sd on o tn e e dt or e f r e s hn o rw a i t t h e i n t e r a c t i v i t yo f t h es y s t e mi sa l s oi m p r o v e d m o r e o v e r , ag e n e r a lt e c h n i c a l s t r u c t t mo ft h et e l e c o m m u n i c a t i o nc r ms y s t e mi sd e s i g n e dt oi l l u s t r a t e t h ea d v a n t a g e so f j 2 e ed e v e l o p m e n tb a s e do nt h eo p e ns o u r c et e c h n o l o g y , w h i c hc o m b i n e sf e a t u r e so fs p r i n ga n da j a xt e c h n o l o g y a c c o r d i n gt o t h ea n a l y s i so ft h et r a d i t i o n a lm o d e lo fc r m , an e wc u s t o m e rm o d e li s p r e s e n t e d ,w h i c hc a l lp r o v i d ec u s t o m e r sw i t hd e t a i l e di n f o r m a t i o na n d v a r i o u sv i e w sf z o me v e r ya s p e c t f i n a l l y , t h eo p t i m i z a t i o no ft h es y s t e m a n ds o m er e l a t i v em e t h o d sa r ea n a l y z e d an e wd e v e l o p m e n tm o d e lb a s e do nt h eo p e ns o b l c ef r a m e w o r ki s p r e s e n t e di nt h i st h e s i s ,t h ec o n c l u s i o nt h a ts p r i n gc a nr e p l a c ee j bi sa l s o p r o v e db yt h ei n s t a n c eo fc r ms y s t e m a l lt h er e s u l t so fr e s e a r c hh a v e f o r m e di n t or e a lp r o d u c t , a n dv a l i d a t i o nh a sb e e nm a d eu p o nt h ep r a c t i c a l p o i n to f v i e w k e yw o r d ss p r i n g , a j a xt e c h n o l o g y , c r m ,c u s t o m e rm o d e l 原创性声明 本人声明,所呈交的学位论文是本人在导师指导下进行的研究工 作及取得的研究成果。尽我所知,除了论文中特别加以标注和致谢的 地方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包 含为获得中南大学或其他单位的学位或证书而使用过的材料。与我共 同工作的同志对本研究所作的贡献均已在在论文中作了明确的说明。 作者签名:宣塑 关于学位论文使用授权说明 本人了解中南大学有关保留、使用学位论文的规定,即:学校有 权保留学位论文,允许学位论文被查阅和借阅;学校可以公布学位论 文的全部或部分内容,可以采用复印、缩印或其它手段保存学位论文; 学校可根据国家或湖南省有关部门规定送交学位论文 作者签名:单导师签名:_ 三蚪日期:必上月丘日 硕士学位论文第一章绪论 第一章绪论 目前很多企业都在进行信息化建设,电信行业由于其客户量大且产品复杂的 特点,许多电信公司都在自主研发c i l m ( c u s t o m e rr e l a t i o n s h i pm a n a g e m e n t ) 产品。 在传统的企业信息系统建设中,通常采用以e j b 为核心的j 2 e e 开发模式,由于 e j b 本身的缺点导致了目前所用的很多系统维护成本高且升级困难。本课题以湖 南电信c r m 系统为基础,提出了一种基于开源框架的c r m 系统开发模式,同时 根据业务需求设计出了基于电信业务的c r m 核心模型,并讨论了在该开发模式 下系统性能的优化问题 1 1 选题背景 电信行业在信息系统建设过程中通常采用传统的j 2 e e 开发模式,j 2 e e 技术 自诞生以来,获得了很大的成功,它为企业应用开发引入了许多规范性的东西, 并被许多企业软件所应用。但是j 2 e e 在发展的同时也带来了很多的问题,如开 发过程太复杂,成本较高等。这些问题的存在常常会导致整个j 2 e e 项目的失败, 而这种失败的根本原因又可归结为e i b 的复杂性,j 2 e e 开发本来不应该这么复 杂,尤其是针对一些j 2 e e 的w e b 应用。j 2 e e 的历史还不是很久。因此在其发 展的过程中难免存在许多的问题,开发者也有必要来重新审视它,以便使其能更 好的为开发者所用。由于j 2 e e 所包含的东西太多,许多人都在讨论如何只利用 它的一个子集来完成开发,以降低开发的复杂性同时也产生了许多不使用e j b 的解决方案,称为轻量级的开发【l - 7 1 。 传统的重量级容器如e j b 提供了一系列重量级的企业服务,可以使开发的组 件很好的集成e y b 容器所提供的这些服务。虽然看起来e j b 已经满足了企业开发 的需要,但在实际应用过程中仍然存在许多的问题睁。相对而言轻量级容器摒 弃了传统容器强迫指定编程模型的特点,轻量级容器中使用纯j a v a 对象p o j o ( p l a i no l dj a v ao b j e c t ) ,p o j o 定义了对象所有的属性以及其属性的基本操作, 而没有任何与业务逻辑相关的接口 轻量级容器一个典型的代表就是s p r i n g 框架。s p r i n g 框架是一个开源框架, 它起源于一个开源的项目,是为了解决企业应用程序开发的复杂性而创建的。 s p r i n g 使用x m l 进行配置并且利用设值注入的方式进行依赖注入实现组件开 发,其主要的优势就是其分层的架构,分层架构允许开发者可以选取其中的一个 子集来使用,同时它还为j 2 e e 应用开发提供了集成的框架【”- 2 1 1 s p r i n g 的出现 硕士学位论文 第一章绪论 虽然已经有一段的时间,但用此框架支撑的大型商业系统还比较少见,这也正式 本文所要探讨的主要内容。 在传统的w e b 模型下,当用户提交一个操作时,浏览器端的所有内容表示都 直接提交到服务器端,由于浏览器是一个哑终端,它不知道用户目前所在的阶段, 当用户创建一个s e s s i o n 后,在服务器端会为这个s e s s i o n 建立几个相应的对象, 服务器会向浏览器返回一个文档对象。这个对象中通常包括h t m l 标记,页面的 表示以及用户的数据等,这些都是混合在一起的。当用户和服务器交互时,另外 一个d o c u m e n t 会被创建,同样也包含h t m l 标记,页面的表示以及用户数据。 这个对象返回后,浏览器由于是哑终端,它就会丢弃前一个对象,加载新返回的 这个对象。当这个s e s s i o n 结束时,所有要保存的数据都要提交到持久层,以便下 次使用 2 2 - 2 s l 。在这种交互模式下,用户在使用过程中,每次操作都要刷新整个页 面,影响了系统的可用性,正是基于这些问题的存在,g a r r o t t 提出了a j a x 这一 概念。 g a r r e t t 指出m a x 并不是一种技术,它是目前普遍应用的几种技术的组合 a j a x 技术的提出,改变了人们使用和开发w e b 的方式,也使得大规模的开发类 似于c s 结构的b s 系统变得简便可行。a j a x 是混合了h t m l 和层叠样式表作 为表达信息来创建交互式的w e b 应用的开发技术文档对象模型和j a v a s c r i p t 动 态地显示和表达信息并同用户进行交互,并且使用x m l h t t p r e q u c s t 对象与w e b 服务器异步的交换和处理数据。通过对a j a x 技术的使用,使得系统客户端能够 实现无刷新无等待,大大提高了系统的交互性,a j a x 技术在企业开发中的应用 也是本课题所要讨论的内容之 本课题在一个实际的电信c r m 项目的基础上,提出了基于开源框架来进行 c r m 系统建设的模式,同时,针对传统电信客户系统中存在的问题,设计出了一 个新客户关系管理模型,并讨论了对整个c r m 系统的优化。 1 2 c r m 系统现状 c r m 最早由c r a r t n e rg r o u p 提出,是指在企业与顾客之间建立的管理双方接 触活动的信息系统,是企业提高客户获利率的核心策略。国外对c r m 的研究开 发主要集中在通用c r m 系统的设计,目的是设计通用的c r m 系统以便各个行业 和部门只作少量修改的情况下就可以使用。但这种套装软件在国内的很多企业应 用时会存在很多问题,国外的c r m 研究开发主要是针对于一些大型跨国企业的 业务漉程来设计开发,但对于国内的企业来说尤其是电信企业,其运作方式,业 务流程等和国外的公司具有很大的差别,而c r m 系统通常针对性又是很强的, 2 硕士学位论文第一章绪论 因此很多国内的企业在使用套装软件时出现很多的问题。针对这一情况,国内也 在有针对性的进行各个行业的c r m 系统的研究,具体到电信行业,这方面的工 作已经有了一定的进展,在部分地区的电信企业已经开发出了自己的c r m 产品, 但是目前电信企业在c r m 系统建设过程中通常存在一些问题,主要体现在以下 方面: 在c r m 开发前,对开发困难认识不深刻,c r m 项目是项系统工程,包含企 业业务的方方面面,尤其是采用传统j 2 e e 模式进行的开发,若在开发前没有充 分考虑框架的复杂性,往往会导致开发过程的失败因为c r m 系统的开发设计 决非是一个简单的管理系统的实现,所以对c r m 的认识要全面,正因如此,在 开发设计前要充分理清企业的业务逻辑,并仔细选择开发模式和系统框架 2 9 - 3 4 | 。 另外在设计c r m 产品时缺乏整体系统的掌控从c r m 的产生看,主要着 力于对外部资源的整合,但如今c r m 被更多地当作企业信息化过程中的子模 块,在时间和技术等方面存在差异,这种设计中的思维局限,使c r m 与企业信 息化中的其它模块存在一个接入瓶颈,即不论企业e r p 、c r m 或o a 系统是否 采用同一家企业产品,系统之间都难以自然接入从而导致企业内部模块化信息 传输的瓶颈,互为割离,难于有效提高企业的管理水平和利润。在本课题的研究 中将设计一个新的客户模型,在模型的设计过程中会充分考虑将c r m 系统作为 整个系统的核心,同时考虑系统同其他子系统的接口,保证客户信息可以方便的 被各子系统采用,防止系统之间的瓶颈。 同时目前c r m 产品缺乏细分化的解决方案。不同的行业有其不同的业务需 求和业务流程,c r m 应根据企业所处的行业,此行业在国民经济中的地位和作用 以及本企业的特点来有针对性地实施c r m ,例如大企业和小企业、制造业与零售 业、上中游企业与下游企业的c r m 实施的侧重点肯定是不一样的不同的行业 对c r m 要求千差万别,但目前许多c r m 开发者却很少身体力行地体验这种差 异性,只通过客户的简单介绍,在冠以所谓“通用性c r m 产品”上做些加加减减 的工作,然后来提供给客户。这种做法本身就没有真正实现以客户为中心的理念, 设计人员可能在理解、研发上存有偏差,很可能就是客户今后在升级、维护过程 中的巨大障碍所以开发商不考虑自身行业、企业特点,则容易在推广应用中导 致最终的失败。所以在实际c r m 系统的建设过程中,要充分同具体行业相结合, 在本课题的研究中,会根据电信行业的业务需求需要,设计相应的系统功能模型, 防止出现设计出的系统太抽象,无法被企业所采用 在c r m 系统中,通常是以客户为中心但以往的系统中,对于客户模型的 设计,结构较简单,对客户信息的描述只是对客户属性的简单列举,没有对这些 属性进行细致科学的分类,这样在c r m 系统的使用过程中,c r m 的一个重要功 硕士学位论文 第一章绪论 能信息挖掘就很难体现出来。针对电信行业的c r m 系统,简单的客户模型结构 导致系统客户模型中的客户实体会直接在产品,营业受理等子系统的使用,这就 导致子系统之间的耦合较大,当客户这个核心系统变化时,整个相关系统都会受 到影响 3 5 - 4 ”。 正是鉴于这些问题的存在,c r m 系统的建设,尤其是针对电信这样的客户数 量较多,业务较复杂的企业在系统设计开发之前首先应找出一种简洁有效的开发 方式,其次在c r m 模型设计过程中,要充分考虑电信业务需要,同时要从c r m 系统的基本要求出发,使得客户模型结构既能满足核心需求,同时方便后期予系 统的扩展,这样才能提高模型的通用性,防止c r m 系统项目建设的失败,开发 出最能满足企业需求的系统。 1 3 课题研究的意义 随着时代的进步,现有的技术会暴露出许多问题,具体表现为难以满足需求 并导致开发过程较复杂。因此原有技术的改进和演化就变得十分重要,无论是轻 量级开源框架,还是a j a x 技术,都是最近几年刚刚出现的。这些技术的出现, 能否满足当前开发者的需求,这需要实践的检验。本文从这些技术的产生谈起, 深入分析了这些技术的产生原因,以及相关的特点,并讨论了将这些技术应用于 电信c r m 系统,这些内容的讨论对于s p r i n g 技术的发展,以及a j a x 技术的应 用都具有重要的意义。 c i l m 作为一种客户关系管理系统,现代大型企业在管理中若成功地运用则能 在很大程度上提高工作效率。在开发过程中的实际情况是一些电信企业在推进 c r m 过程中片面的追求大而全,而忘记了c r m 其最根本的作用 4 2 4 研。本文根据 一个电信企业c r m 系统的设计讨论了电信c r m 模型设计的一些根本思想以及设 计原则。通过对这些问题的讨论,对于以后的企业信息化具有一定的借鉴意义 同时由于这种模型的实现使用了目前一些较流行的开源框架等技术。这两者的结 合无论是从技术架构上,还是在系统模型上应该说都是一种创新,为以后的企业 信息化建设起到一个抛砖引玉的作用。 本课题的研究将会提出一个新的电信c r m 模型,此模型将会以客户,用户 和账户为核心,构成整个客户管理的骨架,这样一个新的模型同传统的客户模型 比具有很大的不同,具体的体现在一下几个方面: ( 1 ) 拓宽了电信公司观察客户的角度。在传统的电信客户管理模型中,对客 户的描述只局限于列出客户的基本信息,客户是直接同产品实例相关联的,这样 当企业需要客户的资料时,只能从这一个角度来获取信息,无法对这些信息进行 4 硕士学位论文第一章绪论 分类,更是很难通过这些信息找出客户同产品的一些关联关系,这种传统的模型 是很难满足现代c r m 的需求的剖1 。而本文中提出的新的客户模型,由于有了 对客户全面,立体的描述,使得企业可以通过系统从多角度的观察客户,根据客 户的不同特征来划分客户,并从以往的客户使用信息中获取相关信息。 ( 2 ) 增加了客户模型的层次。在以往的电信系统中客户只是一个单一的概念, 由于客户直接同产品实例相关联,因此也就无法区分已有客户和潜在客户这种 层次的划分是无法满足现代企业的需求的,针对客户而言,这种层次的信息是极 度缺乏的,企业无法在这样的层次上作进一步的信息划分。 在新的客户模型中客户管理部分包括了客户,用户和账户三个部分。这里将 传统模型的客户分为了两层,新的模型中客户只是一个自然入或组织,是电信的 一个潜在的客户。用户是客户和产品实例相关联的一个纽带,用户是企业产品的 购买者,享受企业提供的服务在用户的层次上除了体现客户的属性信息同时还 包括了产品的信息,而客户实体则只体现客户本身的属性,账户附属于客户并为 指定的用户付费。这样的层次结构使得系统后期可以方便扩展,更重要的是可以 根据这个信息获取不同客户群体特征以便根据不同客户群体制定相应的产品策 略。 ( 3 ) 对客户更细致的划分在传统模型中对客户的划分只集中于单一层面, 所包涵信息较少,但在新的模型中会从多角度来划分客户例如从客户形态上可 以将其分为个人客户和组织客户;从客户类型上可以将其分为商业客户,大客户, 公众客户,流动客户等,这样的划分结果可以使系统使用者从不同角度对客户进 行归类,根据归类结果进行决策判断。 同时新的模型中对客户属性的划分也会分很多的层次例如客户特殊属性又 可以划分为客户性剐,政治面貌,客户单位等,也只有这种多角度多层次的划分 才可以使企业更好的了解自己的客户信息。 1 4 论文的组织结构 第一章主要讨论了目前一些企业开发技术的发展现状,存在的问题并讨论 了针对这些存在的问题而提出的一些新的技术框架。同时还分析了目前企业c r m 系统的发展现状,以及相关问题的研究意义。 第二章主要讨论了两种开源技术;s p r i n g 框架和a j a x 技术研究了这两种 技术的内部原理以及技术特点,讨论了其相对与传统技术模型的优势,为系统的 结构设计奠定了基础 第三章从系统架构设计所要遵循的一些原则和思想出发设计出了一个c r m , 硕士学位论文 第一章绪论 系统的总体架构。最后讨论了前面提到的技术在这一框架下的使用。 第四章根据上一章的技术框架,提出了此c r m 系统的功能模型,通过核心 功能模型的描述,整个系统的核心已经全部体现出来。 第五章讨论了在该开发模式下的性能优化问题。企业信息化建设成败的一个 关键因素就是系统的性能,本章专门讨论了系统的优化问题。主要从性能的角度 出发,结合技术架构,讨论j 2 e e 应用程序代码性能优化和提升。 第六章归纳了整个系统的技术特点和功能特点,并讨论了目前依然存在的问 题通过对这些问题的讨论,总结了本文的成果,同时也对今后的工作进行了展 望。 1 5 本章小结 本章从湖南电信的c r m 项目出发,分析了目前j 2 e e 开发存在的问题,传统 的开发模式效率低下并且系统灵活性差,本文提出了基于轻量级开源框架的j 2 e e 开发模式,在该模式下开发的系统具有灵活性强,客户端交互性好,系统表现力 强等特点,本章还分析了c r m 系统发展现状,讨论了课题的研究意义,并介绍 了本文的组织结构。 6 硕士学位论文第二章开源框架技术研究 第二章开源框架技术研究 开源技术的发展起源于j a v a 领域,它为企业开发提供了更多的选择。这里 主要讨论目前在企业开发中较重要的两种开源技术。s p r i n g 技术可以利用依赖注 入的思想来转移业务层的业务耦合;a j a x 技术可以提高系统的交互性,使得客 户端可以达到无刷新无等待 2 1s p r i n g 框架基础 开源即开放源代码,它用于描述那些源码可以被公众使用的软件,并且此软 件的使用、修改和发行也不受许可证的限制开源框架就是开放源代码的技术框 架。s p r i n g 是一个开源框架,该框架体现了依赖注入的设计思想,并引入了面向 方面的编程等。因为s p r i n g 将组件阃的耦合关系转移到了b e a n 工厂中管理,所 以在s p r i n g 框架下的开发,业务逻辑组件之间的耦合大大降低,提高了系统的灵 活性和开发效率 2 1 1 轻量级容器 容器是一组提供一系列服务的管理器,只要符合容器的服务要求,容器就可 以让组件使用一定范围内的管理服务。在基于w e b 的j 2 e e 应用中,容器的选择 至关重要,目前,在j a v a 领域,掀起了一股轻量级容器的热潮。传统的重量级 容器如e i b 提供了一系列重量级的企业服务,可以使开发的组件很好的集成e j b 容器所提供的这些服务。虽然看起来e j b 已经解决了企业开发的需要,但在实际 应用过程中仍然存在许多的问题,如开发过程较复杂导致开发人员的学习周期较 长,整个项目开发周期也较长,许多大型的j 2 e e 项目的失败正是这个原因造成 的。另外在e j b 的部署较复杂,不利于后期的维护升级,此外还有运行速度慢, 开发效率低等问题。 正式在这样一个背景下,研究者提出了轻量级容器这一概念轻量级容器是 相对于传统的重量级容器的概念而言的它的出现就是致力于解决传统的重量级 容器产生的问题,通过融入新的模式,提供更加灵活的服务。相对而言轻量级容 器摒弃了传统容器强迫指定编程模型的特点,在轻量级容器中使用纯j a v a 对象 p o j o ,然后利用p o j o 来构建服务轻量级容器的一个典型的代表就是s p r i n g 框架,s p r i n g 使用x m l 进行配置并且利用s e t t e r 进行依赖注入实现组件开发, 其主要的优势就是其分层的架构,分层架构允许您使用其中的一部分,同时为 硕士学位论文第二章开源框架技术研究 j 2 e e 应用开发提供集成的框架。 2 1 2s p r i n g 结构分析 s p r i n g 框架是一个开源框架,它起源于一个开源的项目,是为了解决企业应用 程序开发的复杂性而创建的。s p r i n g 是轻量级框架的典型代表,它的功能特性被 组织在七个模块中,在应用开发的过程中,用户可以有选择的使用自己所需的部 分。 图园 图2 - 1s p r i n g 模块结构 s p r i n g 核心包是整个框架中的基础部分,提供s p r i n g 基础的功能,用户可以 使用依赖注入来管理b e a n 容器,这其中的核心是b e a n f a g t o r y , b e a n f a c t o r y 实际 上就是一个容器,用来配置和管理众多的b e a n 一个容器中的b e a n 相互之问是 存在依赖关系的,而这种依赖是通过配置文件的配置来体现的。b e a n f a c t o r y 通常 由s p r i n g 框架加载并实例化,所有的b e a n 都有两种状态s i n g l e t o n 和p r o t o t y p e , 定义为s i n g l e t o n 的b e a n 在应用中只有一个实例存在。并在整个生命周期内都由 s p r i n g 管理。 s p r i n g 的c o n t e x t 包提供了一种框架式的b e a n 访问方式,有点类似于j n d i 注册。s p r i n g 在a o p 模型中提供了对面向方面的编程的支持,这个模型可以使得 在基于s p r i n g 的应用中以这个模型为基础定义如方法拦截器和切点等,以便为相 关功能实现代码解耦。s p r i n g 的a o p 模型同时还引入了元数据编程,开发者可以 在代码中加入标记以说明在哪里或怎样使用了s p r i n g 在使用j d b c 的过程中通常需要大量的代码,如得到一个连接,创建一个声 明,处理结果集,然后关闭连接等。s p r i - g 的j d b c 和d a p 模型封装了这些代码, 因此用户可以很方便的使用j d b c ,从而可以防止由于编码者的疏忽而产生的错 误,如忘记关闭数据库连接。同时,这个模型还定义了大量的异常来捕获相应的 错误信息。该包也提供了一种方法实现编程性和声明性事务管理,不仅仅是针对 实现特定接口的类,而且针对所有的p o j o 。 s p r i n g 的o r m 包中,并没有单独提出一套解决方案,而只是为其提供了一 个集成层,包括d o ,h i b e r n a t e 和i b a t i s 。通过o r m 包,用户可与所有s p r i n g 提供的其它特性相结合来使用这些对象关系映射,如简单声明性事务管理。 0 硕士学位论文第二章开源框架技术研究 s p r m g 的w e b 包提供了基本的面向w e b 的综合特性,如多方请求功能,以 及使用s e r v l e t 监听器和面向w e b 的应用上下文来初始化一个上下文当与 w e b w o r k 或s t r u t s 一起使用s p r i n g 时,这个包使s p r i n g 可与其他框架结合。 s p r i n g 的m v c 包提供了面向w e b 应用的m o d e l - v i e w - c o n t r o u e r 实现,尽管 s p r i n g 可以很方便的集成其它m v c 框架,如s t r u t s ,但s p r i n g 的m v c 框架使用 了控制反转来彻底的分离控制逻辑和业务对象,s p r i n g 的m v c 可以使用s p r i n g 框架的其它所有特定部分,如校验等 2 1 3 依赖注入机制 s p r i n g 中的一个核心的概念就是控制反转( i n v e r s i o no f c o n t r o l ,i o c ) ,控制反 转就是转移控制权,由原先的程序代码控制转为由容器控制程序之间的关系。其 主要目的是协调各组件闻的相互依赖关系,提高组件的可移植性,2 0 0 4 年m a r t i n f o w l 盯在它的文章中深入讨论了这一关系。并将其形象的称为依赖注入 关于依赖注入,一个较典型的例子就是笔记本电脑与外围存储设备通过预先 指定的一个u s b 接口相连,对于笔记本而言,只是将用户指定的数据发送到u s b 接口,而这些数据何去何从,则由当前接入的u s b 设备决定在u s b 设备加载 之前,笔记本不可能预科用户将在u s b 接口上接入何种设备,只有u s b 设备接 入之后,这种设备之间的依赖关系才开始形成。对应上面关于依赖注入机制的描 述,在运行时( 系统开机,u s b 设备加载) 由容器( 运行在笔记本中的w m d o w s 操作系统) 将依赖关系( 笔记本依赖u s b 设备进行数据存取) 注入到组件中 ( w m d o w s 文件访问组件) 这就是依赖注入模式在现实世界中的一个版本 依赖注入通常分为三种形式:构造注入是通过构造方法将组件注入;设值注 入是通过设置属性的值将组件注入;接口注入是从容器中获取指定接口的实现 s p r i n g 使用设值的方式注入对于s p r i n g 框架来说,在s p r l n l n g 中由框架来负责控 制对象的生命周期和对象间的关系。通常,一个应用系统会包括很多的类,类之 间会体现一些业务逻辑关系在传统的模式下,一个对象与其它对象之间的逻辑 关系在其自身上就会得到体现,也就是说类之间的逻辑关系和类是关联在一起的, 比如以前在一个类中使用另一个类时使用n e w 关键字来实现组件间关系的组合, 这样就会造成组件之间的耦合而控制反转是将组件间的关系从程序内部提到外 部容器来管理,也就是说容器在运行期问将组件的某种依赖关系注入到组件中 通过使用依赖注入,对象的依赖关系在系统启动时动态的创建,也就是所说的通 过注入来加入依赖关系。由于耦合在外部体现,当需要改变程序间的控制关系时, 只需要改变配置文件就可以了,这样在很大程度上降低了业务组建之间的耦合性, 使得应用系统具有更好的灵活性,也大大提高了程序的可维护性 9 硕士学位论文 第二章开源框架技术研究 2 2a j a x 技术研究 a j a x 的提出,改变了w e b 的开发方式,由于基于a j a x 的w e b 页面具有无 刷新,响应迅速的特点,使其迅速流行起来。通过对a j a x 技术的使用,可以大 大提高系统性能,提高系统的交互性。 2 2 1 传统c r m 客户端的问题 客户端是指同独立的进程进行通信的程序,这种程序通常位于服务器端。服 务器端存储大量的数据。用户可以利用客户端查看并修改这些数据对于连接到 同一个服务器的多个用户,可以共享服务器端的数据这种客户端的概念是有别 于桌面应用程序中的实例的。例如当使用微软的w o r d 打开多个文档时,每个文 档相当于一个应用程序实例,但由于其逻辑模型和数据模型都运行在相同环境中, 因此不能将其看作客户端。对于一个n 层结构的应用程序,a j a x 通常都位于最 顶层,因为它专注于的就是同用户交互的客户端部分。a j a x 是胖客户端的,这 有两层含义:首先a j a x 位于客户端,其次在a j a x 框架下的客户端中含有交互 模型。胖客户端中的胖也就是指在用户接口含有多种输入方式,并能对每种输入 方式进行及时的响应。 客户端和服务器通常位于不同的机器。当用户利用客户端访问服务器时,就 要进行远程的调用。这种调用通常要经过序列化,应用协议层,物理传输等过程, 到达服务器端又需要一系列相反的过程。然后服务器端再返回响应,由于网络的 不可靠性,以及各种步骤的延时,使得这种远程调用通常具有一定的延时,有时 这种延时会达到不可接受的地步。因此这种客户端对服务器的访问通常很难同桌 面应用程序的访问效率相比,对于一个好的系统,应该尽量降低这种延时以减轻 用户的等待。 由于h t t p o i y p e rt e x tt r a n s p o r tp r o t o c 0 1 ) 是一个请求响应的协议,也就是说 当客户端提交一个请求,服务器或者处理这个请求,或者提供另外一个地址,或 者告诉客户端使用缓存中的备份请求,响应协议是单向的,客户端可以主动向服 务器发出请求,但服务器却不可以同客户端通信。实际上服务器对于所有的请求 是不加以区分的,利用异步调用客户端实际上得到两次回复,一次是创建一个线 程,一次是线程结束。 传统的客户端服务器中的这种延时导致了客户端交互性问题。因为每次到服 务器的请求是同步的,所以客户端对每一次到服务器的请求都需要等待服务器的 返回以进行下一次操作。如果能将这种请求变为异步进行,也就是说当客户端提 交一个请求后,由服务器去处理这种请求,客户端继续去处理别的事情,等服务 器处理完第一个请求并返回后再做相应的处理,这样客户端的交互性将大大提高, 硕士学位论文第二章开源框架技术研究 用户不需要再等待每次请求的处理。 2 2 2 在客户端使用a j a x 技术 传统的w e b 程序同桌面应用程序相比交互性较差,且对于用户而言系统交互 时响应较慢,界面的表现力也不够强,正是在这种情况下才使得a j a x 从一种较 模糊的技术迅速的流行起来,其典型的应用如g o o g l em a p ,几乎可以实现实时更 新,无刷新等待 a j a x 是基于x m l 的异步j a v a s c r i p t 的简称,它是由j e s s ej a m e sg a r r e t t 提 出的j e s s e j a m e s g a r r e t t 提出a j a x 并不是一种技术,它是目前普遍应用的几种 技术的组合,a j a x 技术的提出,改变了人们使用和开发w e b 的方式,也使得大 规模的开发类似于c ,s 结构的b s 系统变得简便可行a j a x 混合了h t m l 和层 叠样式表作为表达信息,来创建交互式的w e b 应用的开发技术;文档对象模型和 j a v a s c r i p t 技术动态地显示和表达信息并同用户进行交互,并且利用 x m l h t t p r e q u e s t 对象与w e b 服务器异步的交换和处理数据 在网上填写过表格的人都会有这样的感受,每次提交一次保存时,页面都要 全部刷新,并重新加载数据。这是因为在传统的w e b 模型下,用户的每次操作都 要和服务器交互,提交的表单从客户端提交到服务器,服务器处理完成后再返回 整个页面,重新加载显示出来。这样既加重了服务器的负担,又增加了用户的等 待时间。 互连网的发展使得人们需要在w e b 环境下开发类似c s 结构的系统。这在传 统的w e b 模型下是很困难的,尤其是对于大型的,较复杂的系统桌面应用系 统中,用户的操作如输入等可以有多种方式,并且系统会根据用户的操作迅速做 出响应而传统的w e b 的模型下用户的输入较唯一,用户的很多操作动作都需 要和服务器交互来完成,这就降低了用户的可操作性,以及系统的整体性能并 且在很多情况下,开发都会受到限制,比如在桌面应用程序中有大量的丰富的控 件可以使用,这和桌面应用系统较长的发展历史有关,但根本原因是在桌面应用 系统下,大规模的开发控件是可行的,而且也是高效的。而在传统的w e b 模型下, 可使用的控件几乎是空白,由于传通模型的弊端,使得开发控件很困难,并且也 很难使用。而a j a x 技术的出现,使得我们可以在这一框架下开发各种控件,并 在系统开发过程中方便的使用,提高了开发效率,a 朋的出现使得在w 曲环境 下开发类似于桌面应用的系统成为了可能 2 2 3a j a x 响应原理的研究 a j a x 由h t m l ,j a v a s c r i p t 技术,c s s 和d o m 组成。a j a x 技术的发展创 造一种交互式应用界面,借助a j a x 用户可以在单击按钮时,使用脚本语言立即 更新u i 。a j a x 强大功能的来源之一是x m l h t t p r e q u e s t ,在传统的w 曲应用中, 硕士学位论文第二章开源框架技术研究 用户填写表单并点击提交按钮,整个表单被提交给服务器,服务器将它转发给处 理表单的脚本,脚本执行完成后再返回全新的页面。在服务器执行脚本并返回表 单时,用户屏幕处于一片空白,直到服务器返回数据再重新绘制。这种交互方式 同桌面程序相比,交互性差,用户需要长时间的等待。a j a x 技术在表单和服务 器之间加入了j a v a s c f i p t 技术和x m l h t t p r e q u e g 对象,每次提交都是提交给 j a v a s c f i p t ,j a v a s c f i p t 处理数据后提交给服务器。这样用户的每次操作,都可以 快速的得到响应,用户界面不会闪烁刷新,也就是说请求都被j a v a s c f i p t 在幕后 进行处理,更进一步请求是异步发送的,j a v a s c r i p t 代码不用等待服务器的响应, 因此在交互过程中用户可以继续使用,a j a x 响应模型如图2 - 2 。 图2 - 2 a j a x 响应模型 在a j a x 下c s s 用于定义客户端的样式,d o m 模型规定了显示的内容以及 层次结构,客户端同服务器使用x m l h t t p r e q u e s t 对象进行交互。 2 2 4a j a x 与传统w e b 模型的比较 传统的w e b 模型的交互性较差,同时在开发过程中流程较复杂,而a j a x 技 术的无刷新无等待的特性则使b ,s 结构的系统的交互性有了很大的提高,具体可 以从以下几点来比较传统模型和a j a x 模型的区别。 ( 1 ) 浏览器在交互中的作用。在传统的基于页面的w e b 应用中,浏览器是一 个哑终端,它不知道用户目前所在的阶段。当用户创建一个s e s s i o n 后,在服务器 端会为这个s s i o n 建立几个相应的对象,服务器会向浏览器返回一个文档对象其 中包括h t m l 标记,页面的表示以及用户的数据等,这些都是混合在一起的。当 用户和服务器交互时,另外一个d o c u m e n t 会被创建,同样也包含h t m l 标签, 页面的样式以及用户数据。这个对象返回后,浏览器由于是哑终端,它就会丢弃 前一个对象,加载新返回的这个对象,当这个s e s s i o n 结束时,所有要保存的数据 硕士学位论文 第二章开源框架技术研究 都要提交到持久层,以便下次使用。 a j a x 对这种层次有所调整,当用户创建一个s e s s i o

温馨提示

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

评论

0/150

提交评论