`
xlover
  • 浏览: 245033 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多
三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。区分层次的目的即为了“高内聚,低耦合”的思想。
  1、表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。
  2、业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。
  3、数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、更新、查找等。

在软件体系架构设计中,分层式结构是最常见,也是最重要的一种结构。微软推荐的分层式结构一般分为三层,从下至上分别为:数据访问层、业务逻辑层(又或成为领域层)、表示层。
  三层结构原理:
  3个层次中,系统主要功能和业务逻辑都在业务逻辑层进行处理。
  所谓三层体系结构,是在客户端与数据库之间加入了一个“中间层”,也叫组件层。这里所说的三层体系,不是指物理上的三层,不是简单地放置三台机器就是三层体系结构,也不仅仅有B/S应用才是三层体系结构,三层是指逻辑上的三层,即使这三个层放置到一台机器上。
  三层体系的应用程序将业务规则、数据访问、合法性校验等工作放到了中间层进行处理。通常情况下,客户端不直接与数据库进行交互,而是通过COM/DCOM通讯与中间层建立连接,再经由中间层与数据库进行交互。
  表示层
   位于最外层(最上层),离用户最近。用于显示数据和接收用户输入的数据,为用户提供一种交互式操作的界面。
  业务逻辑层
   业务逻辑层(Business Logic Layer)无疑是系统架构中体现核心价值的部分。它的关注点主要集中在业务规则的制定、业务流程的实现等与业务需求有关的系统设计,也即是说它是与系统所应对的领域(Domain)逻辑有关,很多时候,也将业务逻辑层称为领域层。例如Martin Fowler在《Patterns of Enterprise Application Architecture》一书中,将整个架构分为三个主要的层:表示层、领域层和数据源层。作为领域驱动设计的先驱Eric Evans,对业务逻辑层作了更细致地划分,细分为应用层与领域层,通过分层进一步将领域逻辑与领域逻辑的解决方案分离。
  业务逻辑层在体系架构中的位置很关键,它处于数据访问层与表示层中间,起到了数据交换中承上启下的作用。由于层是一种弱耦合结构,层与层之间的依赖是向下的,底层对于上层而言是“无知”的,改变上层的设计对于其调用的底层而言没有任何影响。如果在分层设计时,遵循了面向接口设计的思想,那么这种向下的依赖也应该是一种弱依赖关系。因而在不改变接口定义的前提下,理想的分层式架构,应该是一个支持可抽取、可替换的“抽屉”式架构。正因为如此,业务逻辑层的设计对于一个支持可扩展的架构尤为关键,因为它扮演了两个不同的角色。对于数据访问层而言,它是调用者;对于表示层而言,它却是被调用者。依赖与被依赖的关系都纠结在业务逻辑层上,如何实现依赖关系的解耦,则是除了实现业务逻辑之外留给设计师的任务。
  数据层
   数据访问层:有时候也称为是持久层,其功能主要是负责数据库的访问,可以访问数据库系统、二进制文件、文本文档或是XML文档。
  简单的说法就是实现对数据表的Select,Insert,Update,Delete的操作。如果要加入ORM的元素,那么就会包括对象和数据表之间的mapping,以及对象实体的持久化。

优点:
  1、开发人员可以只关注整个结构中的其中某一层;
  2、可以很容易的用新的实现来替换原有层次的实现;
  3、可以降低层与层之间的依赖;
  4、有利于标准化;
  5、利于各层逻辑的复用。
  缺点:
  1、降低了系统的性能。这是不言而喻的。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成。
  2、有时会导致级联的修改。这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码。

  三层结构的程序不是说把项目分成DAL, BLL, WebUI三个模块就叫三层了, 下面几个问题在你的项目里面:
  1. UILayer里面只有少量(或者没有)的SQL语句或者存储过程调用, 并且这些语句保证不会修改数据?
  2. 如果把UILayer拿掉, 你的项目还能在Interface/API的层次上提供所有功能吗?
  3. 你的DAL可以移植到其他类似环境的项目吗?
  4. 三个模块, 可以分别运行于不同的服务器吗?
  如果不是所有答案都为YES, 那么你的项目还不能算是严格意义上的三层程序. 三层程序有一些需要约定遵守的规则:
  1. 最关键的, UI层只能作为一个外壳, 不能包含任何BizLogic的处理过程
  2. 设计时应该从BLL出发, 而不是UI出发. BLL层在API上应该实现所有BizLogic, 以面向对象的方式
  3. 不管数据层是一个简单的SqlHelper也好, 还是带有Mapping过的Classes也好, 应该在一定的抽象程度上做到系统无关
  4. 不管使用COM+(Enterprise Service), 还是Remoting, 还是WebService之类的远程对象技术, 不管部署的时候是不是真的分别部署到不同的服务器上, 最起码在设计的时候要做这样的考虑, 更远的, 还得考虑多台服务器通过负载均衡作集群
  所以考虑一个项目是不是应该应用三层/多层设计时, 先得考虑下是不是真的需要? 实际上大部分程序就开个WebApplication就足够了, 完全没必要作的这么复杂. 而多层结构, 是用于解决真正复杂的项目需求的。

 MVC(模型Model-视图View-控制器Controller)是一种设计模式,我们可以用它来创建在域对象和UI表示层对象之间的区分。
  同样是架构级别的,相同的地方在于他们都有一个表现层,但是他们不同的地方在于其他的两个层。
  在三层架构中没有定义Controller的概念。这是我认为最不同的地方。而MVC也没有把业务的逻辑访问看成两个层,这是采用三层架构或MVC搭建程序最主要的区别。当然了。在三层中也提到了Model,但是三层架构中Model的概念与MVC中Model的概念是不一样的,“三层”中典型的Model层是已实体类构成的,而MVC里,则是由业务逻辑与访问数据组成的。
分享到:
评论

相关推荐

    三层架构理解

    三层架构是一种常见的软件设计...源代码的分享有助于开发者学习和理解如何在实践中应用三层架构,提高自己的编程技能。通过分析和研究这些源码,你可以深入理解每一层的实现细节,进一步提升在企业级应用开发中的能力。

    如何理解.Net的三层架构

    理解 .Net 的三层架构并熟练运用,有助于开发出高效、易于维护的软件系统。但需要注意的是,三层架构并不适用于所有项目,小型或简单应用可能不需要如此复杂的结构。选择架构模式时,应根据项目规模、团队协作需求...

    三层架构入门实例(三层架构优化版)

    通过创建一个简单的在线考试系统,可以实际体验到三层架构的运作方式,加深对MVC模式的理解,同时掌握如何组织和管理复杂的项目结构。在学习过程中,不仅要注意代码的实现,还要关注如何优化代码结构,提高系统的...

    深入理解三层软件架构

    三层架构作为软件工程中的一个重要组成部分,对于确保软件项目的成功至关重要。 ### 三层软件架构的重要性 #### 1. 引言 软件架构作为软件开发的核心,对整个项目的影响深远。三层架构作为一种常用的分层设计模式...

    最新三层架构设计源码

    本资源包含的是基于Delphi编程语言的三层架构设计源码,对于学习和理解Delphi开发中的三层架构有着宝贵的参考价值。 首先,我们来了解一下什么是三层架构。三层架构包括以下三个主要部分: 1. **表现层...

    三层架构的理解一篇小文章

    三层架构是一种常见的软件设计模式,尤其在开发大型企业级应用时非常常见。它将应用程序分为三个主要层次:表现层(UI)、业务逻辑层(BLL)和数据访问层...理解并熟练运用三层架构,可以提升软件开发的专业性和质量。

    C# 简单的三层架构实例

    总之,这个C#的简单三层架构实例是一个很好的学习资源,它帮助我们理解如何组织和管理代码,以及如何利用Linq进行高效的数据操作。通过实践这样的实例,开发者可以提升在企业级应用开发中的能力,更好地理解和掌握...

    三层架构源代码

    三层架构是一种常见的软件设计模式,尤其在企业级应用开发中被广泛应用。这种架构将应用程序分为三个主要层次:表现层...通过学习和实践这个实例,你可以深入理解三层架构的设计理念,并提升你的软件开发技能。

    三层架构小案例(包含类图)

    三层架构是一种常见的软件设计模式,尤其在企业级应用开发中广泛应用。...在压缩包中的文件很可能是这个小案例的源代码和类图文件,通过查看这些文件,开发者可以更深入地学习和理解三层架构的实现细节。

    2000_Delphi最新三层源码_delphi三层架构_DELPHI三层_三层_源码

    本资源"2000_Delphi最新三层源码"提供了一个使用Delphi编程语言实现的三层架构示例,这对于学习和理解Delphi中的企业级应用开发具有重要意义。 1. **数据连接层**:这是三层架构中的最底层,负责与数据库进行交互。...

    C#三层结构图个人网络收集

    综上所述,这些知识点涵盖了软件开发中从数据库访问到系统架构设计的多个层面,对于理解和实践C#与ASP.NET MVC的三层架构有着重要的指导意义。在实际项目中,开发者需要根据具体需求来灵活运用这些技术和原则,以...

    Vb.net三层架构

    三层架构是一种常见的软件设计模式,主要应用于开发大型、复杂的企业级应用。这种架构将应用程序分为三个主要层次:表示层...对于新手而言,理解并掌握三层架构的概念和实践,能够为他们的开发工作打下坚实的基础。

    ASP.NET三层架构实例

    总的来说,ASP.NET三层架构实例提供了一个清晰的组织结构,便于理解和维护复杂的Web应用程序。通过将关注点分离,开发人员可以专注于各自领域的代码,从而提高开发效率和代码质量。GustBook这个例子是一个很好的起点...

    C# web 三层架构设计

    为了更直观地理解三层架构的工作原理,我们可以通过养猪产业的类比来深入分析: - **数据库** 类似于猪圈,存储着所有的“猪”(数据),并按一定的规则分类存储。 - **数据访问层(DAL)** 相当于屠宰场,负责从...

    c# 三层结构源码 (增删改查)

    【C# 三层架构详解与...通过学习这个C#的三层结构源码,开发者可以深入理解如何在实践中运用三层架构,提高软件开发的效率和质量。同时,这个项目也提供了一个模板,可以作为其他类似项目的基础,进一步扩展和定制。

    C# 三层架构实例 教你学会三层

    本文将深入解析"C# 三层架构实例",帮助你理解并掌握如何运用三层架构来构建C#应用程序。 三层架构通常包括以下三个主要层次: 1. 表示层(Presentation Layer):这是用户与系统交互的界面层,负责处理用户的输入...

    三层架构C#编制的超市管理系统

    首先,我们来深入理解一下“三层架构”。三层架构是一种将业务逻辑、数据访问和用户界面分离的设计模式。这种架构的主要优点是提高了系统的可维护性和可扩展性。第一层是表现层,即用户界面,通常由HTML、CSS和...

    C#三层架构经典源代码 C#三成架构实例 三层架构入门实例

    总结来说,C#三层架构是一种结构化的设计模式,它将应用程序划分为表示层、业务逻辑层和数据访问层,以实现代码的清晰组织和高效维护。对于初学者,通过学习和实践这样的实例,可以加深对软件工程原则的理解,并提升...

    三层架构小项目

    下面将详细讲解三层架构及其组成部分,以及如何理解这个项目的结构。 三层架构,顾名思义,是由三个主要部分组成:表示层(Presentation Layer)、业务逻辑层(Business Logic Layer)和数据访问层(Data Access ...

    网络通讯录 简单网页 三层架构

    在IT领域,三层架构是一种常见的软件设计模式,尤其在网络通讯录这样的应用中,它能有效组织代码,提高可维护性和可扩展性。三层架构将应用程序分为三个主要部分:表示层(Presentation Layer)、业务逻辑层...

Global site tag (gtag.js) - Google Analytics