`
tenn
  • 浏览: 572465 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
文章分类
社区版块
存档分类
最新评论

web开发中的分层原则和各层之间的数据传递问题

阅读更多
目前的Web Application大多采用流行的基于B/S模式的三层架构开发,这里的三层架构指的就是Web层、业务层和数据访问层。采用分层的开发方式有很多好处,下面只简单地来说两点:

  1:分层开发使不同的开发人员关注他们擅长的特定层面,有助于开发优质的系统。因为很少有程序员可以精通从JS,CSS,DHTML到struts再到hibernate直至最后的数据库设计这一整套开发流程所要使用到的所有技术。大家各司其职,全力关注自己擅长的层面,这要比一个人或一个小组负责某一模块从页面到最底层的开发方式要好的多。

  2:.分层分离了逻辑,使得系统结构层次明晰,系统变得灵活和易于维护。开发人员应该尽量使系统的各层之间保持相对独立的松耦合状态,这是实现分层的必要条件,也是构建良构系统的重要保证。

  下面重点说说在各层之间进行数据传递的问题。在讨论这个问题之前我想有必要阐明几个概念,即VO、PO、POJO、BO、DAO、DTO。VO:值对象(Value Object),另外也有人认为VO指的是View Object,视图对象,亦或者它就是表示两个概念。 PO:迟久化对象(Persistence Object) POJO:(Plain Old Java Object)字面意思应该是无格式的传统Java对象。对于这个概念我看网上有很多人都弄不明白,有的人甚至把它认为是PO,就我个人的理解,我认为 POJO是一个相对概念,就像它的字面意思一样,它指的就一个普普通通的java对象,这一概念主要是用来和像java bean这样遵从特定规范的java objcet进行区别而创造的。BO:业务对象(Business Object),有人把BO理解成是业务层操纵的数据对象是不对的,BO指的是封装了业务处理逻辑的对象(就是我们要在service层实现的那些类的实例)而业务层操纵的数据对象其实是VO。DAO就不用多说了(Data Access Object)数据访问对象,DTO:(Data T ransfers Object)数据传输对象。对于这个概念也是比较好理解的,Struts中的ActionForm其实就是一个DTO,用于在页面和Action之间进行数据的传递。另外如果把VO理解成视图对象的话,那么ActionForm就算是VO了。网上好像还流传一种叫做QO的对象,我想应该指的是(Query Object)查询对象吧,不过我好像真没怎么见过这东西。

  弄明白上面几个概念以后,我想说一下这两天一直在考虑的问题,那就是各个层上操纵的数据对象以层与层这间的数据传输问题。

  首先来看各层之间操纵的数据对象:Web层(JSP/Action):ActionForm 业务层:VO(注意:如果我们使用了Hibernate那么我可以使用它生成的PO来替代业务层的VO,这是因为从结构上讲VO和PO几乎没有什么不同,而又由于Hibernate的强大功能,使得它的PO可以可以离开持久化层而存在。要知道并不是所有ORM工具都具有这种能力:比如JDO1.x就不可以)数据访问层:PO。下面是详细的解说:

  ActionForm是Web层的数据表示,他不能被传递到业务层;PO是持久层的数据表示,在特定情况下,例如Hibernate中,他可以取代VO出现在业务层,但是不管PO还是VO都必须限制在业务层内使用,最多到达Web层的Control(即Action),绝不能被扩散到View去。

  ActionForm和PO之间的数据转化是在Action中进行的。

  其实放开来看,每一层都有自己特定的数据对象,而不是各层共用一种结构的数据对象,这样的话各层之前将严重耦合。在彼此相临的层之间,应该会有这么一个操作过程,即从它的上层或下层接收数据对象,并从中提取出需要的数据封装进自己层要操纵的数据对象里。例如在Action中就是这样做的,但由于业务层和数据访问层使用了同一种数据访问对象而省去了这种操作。

  这里的焦点是Action,我们在Action要的做工作是:接受从页面传来的ActionForm,从中取出数据,封装到PO中,然后调用业务层组件(BO)实现相关业务,最后进行页面跳转。

分享到:
评论

相关推荐

    asp.20 web应用开发,三层架构实例开发

    这种架构将应用程序逻辑分为了三个主要部分:表示层(Presentation Layer)、业务逻辑层(Business Logic Layer)和数据访问层(Data Access Layer),以实现高内聚、低耦合的设计原则,提高代码的可维护性和可扩展...

    深入.NET平台的软件系统分层开发7

    在开发过程中,各层之间应遵循低耦合、高内聚的原则,通过接口进行交互,以降低层之间的依赖。同时,为了提高代码复用和测试性,可以采用面向对象的设计原则,如单一职责原则、开闭原则、里氏替换原则等。 数据库...

    深入.NET平台的软件系统分层开发2

    4. 模型(Model):模型对象代表应用程序中的数据实体,它们通常在BLL和DAL之间传递。这些对象可能包含业务规则和属性。 5. 服务层(Service Layer):在大型分布式系统中,服务层提供了接口,使得不同组件或系统...

    浅谈Asp.net多层架构中的变量引用与传递

    这种架构将应用程序分为数据层、业务逻辑层(或称逻辑层)和表示层,每个层都有明确的职责,使得各层之间解耦合。 1. 数据层:数据层主要负责数据的存储和检索,通常包含数据库连接、数据访问对象(DAO)、实体模型...

    web中三层架构入门技术详细讲解

    三层架构是一种常见的软件设计模式,尤其在Web应用程序中被广泛采用。这种架构将应用程序分为三个主要部分:显示层(View/UI)、业务逻辑层(BLL)和数据访问层(DAL)。这种分层的设计有助于提高软件的可维护性、...

    C#分层实例 VS2005

    6. **引用和依赖**:正确设置项目之间的引用,确保各层之间的依赖关系遵循自底向上(从数据访问层到表现层)的原则。 通过实践这个分层实例,你将会看到如何在不同项目之间组织代码,如何定义接口,以及如何在各层...

    MVC模式与分层文章

    **MVC模式详解** MVC(Model-View-Controller...总的来说,MVC模式和分层架构是现代Web开发中的重要设计原则,它们帮助我们构建出可维护、可扩展且高效的软件系统。理解和掌握这些概念对于提升软件工程能力至关重要。

    C#实现分层架构源程序

    在IT行业中,分层架构是一种常见的软件开发模式,它旨在提高代码的可读性、可维护性和可扩展性。C#作为.NET框架的主要编程语言,非常适合用于构建分层架构的应用程序。本文将深入探讨C#实现分层架构的源程序,并结合...

    .NET分层架构_第1章上机练习.zip

    在分层架构中,各层之间的通信至关重要。通常,我们使用依赖注入(Dependency Injection,DI)和控制反转(Inversion of Control,IoC)原则来解耦层间的依赖关系,提高系统的灵活性。.NET框架提供了内置的依赖注入...

    基于.NET 平台的分层架构实战.rar

    在软件开发中,分层架构是一种常见的设计模式,它将复杂的应用程序拆分成多个逻辑层,每个层专注于特定的功能,从而提高代码的可读性、可维护性和可扩展性。本教程通过一个完整的案例,旨在帮助开发者更直观地理解和...

    Java Web应用开发课程目标的研究与设定.pdf

    Java Web应用开发作为计算机科学与技术专业中的一门重要课程,不仅要求学生掌握Web应用开发的方法和基础技能,而且还要能够适应不断变化的技术需求和行业标准。当前,该课程在教学实践中存在一定的问题,如教学内容...

    ASP.NET框架(多层架构)

    ASP.NET框架支持这种分层设计,使得各层之间的职责分明,降低了耦合度。表示层主要负责用户交互,通常由ASP.NET Web Forms或ASP.NET MVC实现;业务逻辑层负责处理业务规则和流程,提供给表示层调用;数据访问层则...

    关于.net分层的东西

    这些模型在各层之间传递数据。 6. **接口定义(Interface Definition)**:为了实现各层之间的松耦合,通常会定义接口来描述业务逻辑和服务层的方法。这样,不同的实现可以替换而不影响其他层。 7. **依赖注入...

    HS系统开发模式说明.doc

    在处理逻辑上,HS系统采用分层架构,业务外观层(BF)作为UI层和业务逻辑处理层之间的交互代理,业务规则层(BR)处理个性化业务逻辑,业务数据对象层(BD)存储和操作业务数据。通用层(CM)则包含了系统共用的工具...

    深入.NET平台的软件系统分层开发7-8

    实体类通常用于BLL和DAL之间的数据传递。 6. **接口(Interfaces)**:定义了各层之间交互的规范,通过接口可以实现依赖倒置,提高代码的灵活性和可测试性。 7. **事务管理(Transaction Management)**:在处理多...

    y2深入.net平台的软件系统分层

    在实际开发中,每一层都应遵循一定的设计原则,如单一职责原则、开闭原则等,以确保系统的灵活性和可扩展性。同时,层与层之间应通过接口进行通信,避免直接引用,这样可以减少层间的耦合。 通过《y2深入.NET平台的...

    MVC分层架构样板.供你参考

    MVC(Model-View-Controller)是一种广泛应用于Web应用程序设计的软件架构模式,它的核心思想是将业务逻辑、数据处理和用户界面这三部分进行分离,以提高代码的可维护性和可扩展性。在本资源中,你将找到一个关于MVC...

    有关Java分层的思想

    Java分层思想是JavaEE应用开发中的核心设计原则,它旨在提高代码的可维护性、可扩展性和可重用性。这种思想将复杂的系统分解为多个独立的层次,每个层次负责特定的功能,使得代码结构清晰,降低了耦合度。下面我们将...

    基于.NET平台的分层架构实战

    这些对象在各层之间传递,作为数据的载体。 在.NET框架下,我们可以利用C#语言的强大特性和各种库来实现这些层。例如,ASP.NET MVC或ASP.NET Core可以用于构建表示层,而Entity Framework作为ORM(对象关系映射)...

    浅谈“三层结构”原理与用意

    然而,三层结构也有其缺点,比如增加了系统复杂性,可能导致性能下降,因为数据在各层之间的传递会产生额外的开销。此外,设计不当可能导致过度分层,使得架构变得难以理解和维护。 总结来说,"三层结构"是基于.NET...

Global site tag (gtag.js) - Google Analytics