深入探讨:如何理解.Net的三层架构
各层的作用
数据数据访问层:主要是对原始数据(数据库或者文本文件等存放数据的形式)的操作层 而不是指原始数据 也就是说 是对数据的操作 而不是数据库 具体为业务逻辑层或表示层提供数据服务.
业务逻辑层:主要是针对具体的问题的操作 也可以理解成对数据层的操作 对数据业务逻辑处理 如果说数据层是积木 那逻辑层就是对这些积木的搭建
表示层:主要表示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