基于J s H的多层开发架构研究
卢其龙
(吉林大学珠海学院电子信息系广东珠海519041)透l I一
信■
科掌
[擅要】目前,随着J2ee技术平台的逐渐成熟和完善,基于它的企业级的-e b应用开发也越来越多,大部分的w eb应用在层的划分上一般可以被分成4层,分别是:表示层、业务逻辑层、持久层和域模块层,每层在处理程序上都应该有明确的责任。不应该在功能上与其他层混合。并且每层要与其他层之问分开,降低彼此直接的耦合度,详细的分析基于JsH框架的多层架构的各层的具体功能,希望对大家有所帮助.
[关键词】J sf Spr i ng H i ber nat e架构
中圈分类号:T P3文献标识码:^文章编号:'67卜一7597(2∞8)081∞●5一们
一、引■
这篇文章通过详细的分析各个层所应该具有的职责和功能,使大家思考怎样组合几个著名的框架使他们之间在企业级应用中做到松散耦合,怎样在开发中建立你的构架,怎样让你的应用的各个层之间保持一致。富于挑战的是:组合这些框架使得每一层都以一种松耦合的方式彼此通信,而与底层的技术无关。文章将使用3种流行的开源框架来讨论组合框架的策略。表现层我们将使用Js f,业务层我们将使用s pr i ng.持久层使用H i b er na t e,当然。在项目中可以根据实际情况来选择到底需要哪一种,通过替换这些框架中的任何一种而得到同样的效果。
二、囊示曩
一般来讲,一个典型的w e b应用的用于实现展示给用户看的那层就是表示层。表示层的功能是采集用户的信息输入、展示数据、控制页面导航并将用户的输入传递给业务逻辑层,表示层同时需要验证用户的输入和做些相关的前台验证工作。Js列}常适合于基于M vc的表示层架构,它在行为和表示之间提供了清晰的分离,它使得你可以采用熟悉的uI组件和-eb层概念而无需受限于某种特殊的脚本技术或标记语言。
表示层的主要功能是:
1.管理用户的请求,做出相应的响应。
2.提供一个控制器,委派调用业务逻辑层处理.
3.处理异常。
4.为显示提供一个模型.
5.U I验证。
但是,为了各层之阃的松散耦合和清晰,有些功能不能放在表现层,如下:
js 正则替换1.直接的与数据库的通信,例如JD B c调用。
2.与你应用程序相关联的业务逻辑以及校验。
3.事务管理。
如果在表示层引入这些代码,将会带来高耦合和维护上的困难.
三、叠务逻辑晨
企业级w eb应用的负责业务逻辑处理那层是业务层逻辑层。从编码的视角来看,这层是最容易被忽视的一层。而我们却往往在表示层或持久层周围看到这些业务逻辑处理的代码,这其实是不正确的,因为它导致了程序代码的紧耦合,这样一来,随着时间推移和需求的变动这些代码讲变的很难维护。幸
运的是,针对这一问题有些比较灵活的Fr硼ew or ks存在。最受欢迎的一个开源框架是spr i ng,可以把它看作为Ⅲi cr ocon t ai ne r s,它能让你很好的把对象搭配起来。这个框架通过使用‘依赖注射’(dependency i nj ect i on))这样的思想,把程序中所涉及到包含业务逻辑和D a0的obj ect s。例如:事务管理控制)、对象工厂、服务组件等都通过x札配置文件的形式联系起来,从而易于扩展和维护。
业务层所负责的如下:
1.处理应用程序的业务逻辑和业务校验
2.管理事务
3.允许与其它层相互作用的提供接口
4.管理业务层级别的对象的依赖。
5.在显示层和持久层之间增加了一个灵活的机制,使得他们不直接的联系在一起。
6.通过依赖注入实现从显示层到业务逻辑层之间的接口调用.
7.管理程序的执行(从业务层到持久层).
■、持久晨
该层主要是跟数据库打交道的一层,凡是涉及操作数据库的内容都在该层来实现,这里通常是程序最容易失控的地方。目前在持久层已经有好多种现成的持久化中间件可供选择,这些O蹦开源框架提供的接口可以很好的方便数据库的操作,尤其是H i be r nat e,它对JD B c进行了轻量级的封装,不仅提供oR M映射服务,还提供了数据查询和数据缓存功能Java开发人员可以方便地通过H i b er na t e A PI来操作数据库,H i ber nat e的持久对象是基于Po J O(Pu r e O l d Jav a0bj ec t,简单传统J ava对象)和Ja va集合的。此外,使用H i b er na t e并不妨碍你正在使用的集成开发环境,极大的节省了和对象持久化有关的工作量。
下面是持久层需要实现的功能:
(一)查询对象的相关信息。H i ber nat e通过一个H Q L查询语言或者正则表达的A PI来完成查询。H Q L非常类似于s乱,只是把sQ L里的t a bl e和c01u咖s用0bj ect和它的f i el ds代替。你需要学习一些新的H Q L语言;不管怎样,他们容易理解而文档也做得很好。H Q L是一种对象查询的自然语言,花很小的代价就能学习它。
(二)存储,更新,删除数据库记录。诸如H i ber na t e这类的高级0删框架支持大部分主流数据库,并且他们支持Pa r ent/chi l d关系,事务处理,继承和多态。
置、域曩块晨
如果我们致力于的是一个不是很复杂的w e b的应用,我们需要一个对象集合,让它在不同层之间移动。域模块层由实际需求中的业务对象组成,比如,order Li neI t锄,Produc t等等。开发者在这层不用管那些D T o S(D esi gn T o or d er Se r vi ce),仅关注do髓i n obj ec t即可。例如,H i be r na t e允许你将数据库中的信息存放入域对象(dom i n obj ect s),这样你可以在连接断开的情况_F把这些数据通过表示层显示出来,而那些对象也可以返回给持久层,从而在数据库里进行更新。而且,你不必把对象转化成D T0s(这可能使得它在不同层之间的在传输过程中丢失),这个模型使得Ja va开发者能很自然运用面向对象编程,而不需要附加的代码。
六、圈晨槊构圈如下
七、结柬语
总之,从软件层次结构的角度来说,软件的框架要具有较高的伸缩性和可扩展性,本文所讨论的J sH多层轻量级架构,由于它采用了Jsf表现层
(下转第10页
)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论