


全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
B SB S 结构简化了客户机的工作 把二层结构简化了客户机的工作 把二层 C SC S 结构的事务处理逻辑模块从客户机结构的事务处理逻辑模块从客户机 的任务中分离出来 由的任务中分离出来 由 WebWeb 服务器单独组成一层来负担其任务 从而减轻了客服务器单独组成一层来负担其任务 从而减轻了客 户机的压力户机的压力 三层架构三层架构 3 tier 3 tier 三层架构 3 tier application 通常意义上的三层架构就是将整个业务应用划 分为 表现层 UI 业务逻辑层 BLL 数据访问层 DAL 区分层次的 目的即为了 高内聚 低耦合 的思想 表现层 UI 通俗讲就是展现给用户的界面 即用户在使用一个系 统的时候他的所见所得 业务逻辑层 BLL 针对具体问题的操作 也可以说是对数据层的操 作 对数据业务逻辑处理 数据访问层 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 也没有把业务的逻
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新质生产力的重要表现
- 物体系统的平衡
- 2025年肾脏病学影像学模拟测试卷答案及解析
- 民族团结道德讲堂课件
- 2025年康复医学康复方案制定考核试题答案及解析
- 安全生产工作讲话讲解
- 2025年耳鼻喉头颈外科学科模拟测验答案及解析
- 民族团结宣讲课件
- 2025年烧伤科烧伤护理与皮肤修复模拟考试卷答案及解析
- 民族团结pp课件
- 市场管理考试试题及答案
- 2025至2030年中国大型电脑行业市场深度分析及发展前景预测报告
- 社区网格员笔试考试题库及参考答案
- 2025年中小学生科学知识竞赛试题及答案
- 胸腰椎压缩骨折课件
- 企业安全生产无事故管理方案
- 房屋征收业务培训课件
- 影视中的人工智能
- 中职口腔生理基础教学课件
- 气瓶检验人员考试题题库及答案
- 胰腺超声标准切面
评论
0/150
提交评论