深入探讨:如何理解.Net的三层架构

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深入探讨:如何理解.Net的三层架构相关的知识,希望对你有一定的参考价值。

参考技术A

  各层的作用

   数据数据访问层:主要是对原始数据(数据库或者文本文件等存放数据的形式)的操作层 而不是指原始数据 也就是说 是对数据的操作 而不是数据库 具体为业务逻辑层或表示层提供数据服务.

   业务逻辑层:主要是针对具体的问题的操作 也可以理解成对数据层的操作 对数据业务逻辑处理 如果说数据层是积木 那逻辑层就是对这些积木的搭建

   表示层:主要表示WEB方式 也可以表示成WINFORM方式 WEB方式也可以表现成:aspx 如果逻辑层相当强大和完善 无论表现层如何定义和更改 逻辑层都能完善地提供服务

  具体的区分方法

   数据数据访问层:主要看你的数据层里面有没有包含逻辑处理 实际上他的各个函数主要完成各个对数据文件的操作 而不必管其他操作

   业务逻辑层:主要负责对数据层的操作 也就是说把一些数据层的操作进行组合

   表示层:主要对用户的请求接受 以及数据的返回 为客户端提供应用程序的访问

  三层结构解释

  所谓三层体系结构 是在客户端与数据库之间加入了一个中间层 也叫组件层 这里所说的三层体系 不是指物理上的三层 不是简单地放置三台机器就是三层体系结构 也不仅仅有B/S应用才是三层体系结构 三层是指逻辑上的三层 即使这三个层放置到一台机器上 三层体系的应用程序将业务规则 数据访问 合法性校验等工作放到了中间层进行处理 通常情况下 客户端不直接与数据库进行交互 而是通过/D通讯与中间层建立连接 再经由中间层与数据库进行交换

  开发人员可以将应用的商业逻辑放在中间层应用服务器上 把应用的业务逻辑与用户界面分开 在保证客户端功能的前提下 为用户提供一个简洁的界面 这意味着如果需要修改应用程序代码 只需要对中间层应用服务器进行修改 而不用修改成千上万的客户端应用程序 从而使开发人员可以专注于应用系统核心业务逻辑的分析 设计和开发 简化了应用系统的开发 更新和升级工作

  那么为什么要应用 中间业务层 呢?举些例子:

  我们假设有一段登录代码 则可以这样处理Web程序 外观层负责接收前台页面的数据 然后传给中间层 中间层对数据进行处理 比如格式化 防SQL注入等等一些 这样的数据再传给数据访问层然后与数据库进行操作 比如与数据库的用户名和密码匹配等等一些代码

   中间业务层 的用途有很多 例如 验证用户输入数据 缓存从数据库中读取的数据等等……但是 中间业务层 的实际目的是将 数据访问层 的最基础的存储逻辑组合起来 形成一种业务规则 例如 在一个购物网站中有这样的一个规则 在该网站第一次购物的用户 系统为其自动注册 这样的业务逻辑放在中间层最合适

  在 数据访问层 中 最好不要出现任何 业务逻辑 !也就是说 要保证 数据访问层 的中的函数功能的原子性!即最小性和不可再分 数据访问层 只管负责存储或读取数据就可以了

  完善的三层结构的要求是:修改表现层而不用修改逻辑层 修改逻辑层而不用修改数据层 否则你的应用是不是多层结构 或者说是层结构的划分和组织上是不是有问题就很难说 不同的应用有不同的理解 这只是一个概念的问题. 理解ASP NET中的三层结构——为什么要分三层?

  我们用三层结构主要是使项目结构更清楚 分工更明确 有利于后期的维护和升级 它未必会提升性能 因为当子程序模块未执行结束时 主程序模块只能处于等待状态 这说明将应用程序划分层次 会带来其执行速度上的一些损失 但从团队开发效率角度上来讲却可以感受到大不相同的效果

  需要说明一下 三层结构不是 NET的专利 也不是专门用在数据库上的技术 它是一种更加普适的架构设计理念

  个人感觉

  个人感觉此种架构要在数据库设计上注意表之间的关系 尽力满足主与子的关系 在功能上对用户要有一定的限制 不要表现在对于子表的删除操作一定要慎重 以免造成主表与子表的数据在逻辑上出现的主表的外键在子表中没有相对应的值

  对于表的综合查询方法是

  先对主表查询 调用主表所对应的DL 再根据主表的记录分别对每一个子表进行查询 将自表的查询结果添加的主表后 形成一个大的查询集合

  对于表的操作(增删改)

  此时只对主表进行操作 调用主表对应的DL中的操作方法   RL层是逻辑判断层 主要是对页面上传入的数据进行逻辑判断 RL层之上就是UI

  如何建立一个三层体系结构解决方案

  新建一个空白解决方案 然后

   添加 - 新建项目 - 其他项目 - 企业级模版项目 - C#生成块 - 数据访问 (数据层 下简称D层)    添加 - 新建项目 - 其他项目 - 企业级模版项目 - C#生成块 - 业务规则 (业务层 下简称C层)    添加 - 新建项目 - 其他项目 - 企业级模版项目 - C#生成块 - Web用户界面 (界面层 下简称U层)   右键点 解决方案 - 项目依赖项 设置U依赖于D C C依赖于D

  对U添加引用D C 对C添加引用D

lishixinzhi/Article/program/net/201311/15434

三层架构初步理解

---恢复内容开始---

什么是三层架构:通常意义上的三层架构就是显示层(UI),业务逻辑层(BLL),数据访问层(DAL)。

UI:显示层,用来采集用户用户输入输入的信息和操作,并向用户展现特定的业务数据,在UI层中常用的技术有Windows form:form,control、ASP.NET:aspx,master,HTML。通俗的说就是主要指人机交互的界面,用于接收用户输入的数据和显示处理后用户需要的数据。

BLL:业务逻辑层,该层负责从UI中获取用户指令和数据,执行业务逻辑,并通过DAL写入数据源,还可以从DAL中获取数据,将结果返回给UI。换句话说就是连接UI和DAL之间的桥梁。

DAL:数据访问层,用来从数据源加载数据,也就是查找数据,数据源包括数据库、XML文件、文本文件等;向数据源写入数据或删除数据。简单的总结一下 就是数据库中的增删改查(实现数据的增删改查)

(物理层和逻辑层:逻辑层是把层按类的集合来划分,而这些层都在同一台服务器上,我们现在将要重构的机房中的三层就都在自己的电脑上。而物理层是指类的集合在不同的服务器上,用附加的代码来处理层间的通信)

实体类(Model):不属于三层范畴,是将需要的字段名从数据库中放入其中,好处是提高了安全性。比如一个表单,在对数据进行操作的时候需要用到数据库的数据表的字段名,但是这样容易导致我们自己数据表的字段名外泄,于是这个时候我们就可以使用到Model了,这个时候就可以使用到字段映射。除此之外,Model的作用也就是存储数据。

各个层各司其职,只负责自己专属的功能,提高了内聚性,减少了彼此之间的耦合性。Model是传输数据的业务数据模型,不是数据库中的数据,Model是避免出现数据交替而建立的。

 三层架构的优缺点:

优点:开发人员可以只关注整个结构中的其中某一层

可以降低层与层之间的依赖

有利于标准化,可以很容易的用新的实现来替换原有层次的实现

在后期维护的时候,极大地降低了维护成本和维护时间

缺点:1.降低了系统的性能,这是不言而喻的。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成

2.有时会导致级联的修改。这种修改尤其体现在自上而下的方向,如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码

3.增加了开发成本

以上是关于深入探讨:如何理解.Net的三层架构的主要内容,如果未能解决你的问题,请参考以下文章

asp.net中的三层架构是啥意思

如鹏网.Net三层架构第一章三层基础

三层架构初步理解

面向对象对三层架构的影响?

深入剖析 MVC 模式与三层架构

ASP.NET MVC 的三层架构 + EF数据模型