三层架构分析

三层一般分为两类:物理上的三层和逻辑上的三层架构;物理三层架构是以逻辑的三层架构为基础的,假设没有了逻辑的三层。就根本谈不上物理三层架构的部署。

什么是物理三层架构呢?

从简单了说就是每一层都分别做成一个组件。如业务逻辑组件,业务实体组件,数据訪问组件等。在到复杂一些就是构建分布式系统,比如将业务逻辑层与数据訪问分别部署在不同的server上。

我们这里讲的主要是逻辑上的三层架构。

三层基础知识

在软件体系架构设计中,分层式结构是最常见,也是最重要的一种结构。

微软推荐的分层式结构一般分为三层,从下至上分别为:数据訪问层、业务逻辑层(又或称为领域层)、表示层。

那么每层都有什么作用呢。见下表:

作用 设计原则 经常使用技术

表示层(UI)

向用户展现特定业务数据,採集用户的输入信息和操作
用户至上。兼顾简洁;不包括不论什么业务相关的逻辑处理


WindowsForm\ASP.NET

业务逻辑层(BLL) 从DAL中获取数据,在UI显示;从UI中获取用户指令和数据。运行业务逻辑或通过DAL写入数据源。
作为U层与D层的桥梁,仅仅负责数据处理传递,不涉及SQL语句和ADO.NET

——————————————
数据訪问层(DAL)
直接操作数据库,针对数据的增添、删除、改动、查找;详细为业务逻辑层或表示层提供数据服务。

仅仅提供主要的数据訪问。不包括不论什么业务逻辑处理。
ADO.NET+SQL语句;ORM框架;Linq To SQL

三层结构图:

说到三层,大家是不是想知道有没有两层结构。答案是有!并且就在我们身边.曾经我们的作品展,信息管理系统,第一遍机房收费。都是典型两层结构。

两层结构图:

从图中就能够看出,两层结构把界面。逻辑和数据訪问统统放在了一起,互相纠缠.导致了高耦合。难复用并且当需求变更时所面临的非常可能是又一次开发.当然更别说后期的维护问题了。

相比于两层架构而言。三层有非常多优势:

1、开发者能够仅仅关注整个结构中的当中某一层;

2、能够非常easy的用新的实现来替换原有层次的实现;

3、能够减少层与层之间的依赖。

4、有利于标准化;

5、利于各层逻辑的复用。

6、结构更加的明白

7、在后期维护的时候。极大地减少了维护成本和维护时间

当然有这么多的优势,并不意味着全部的程序都须要应用三层架构,一些简单的小程序的编写全然不是必需这么复杂,而一些真正复杂的项目,三层有时候不够用,须要多层结构。

金无足赤。和设计模式一样,三层架构也有他的一些小缺点:

1、减少了系统的性能。这是不言而喻的。假设不採用分层式结构,非常多业务能够直接造訪数据库,以此获取对应的数据,现在却必须通过中间层来完毕。

2、有时会导致级联的改动。这样的改动尤其体如今自上而下的方向。假设在表示层中须要添加一个功能,为保证其设计符合分层式结构,可能须要在对应的业务逻辑层和数据訪问层中都添加对应的代码。

3、添加了开发成本。

基础的知识就讲到这,我们能不能从生活中找到三层的影子呢?

我想起了有次暑假打工的经历,那是在一家酒店做的厨师助理。呵呵。这么好听的名字。说白了就是打杂的,所做的工作就是:从仓库中帮厨师找到做某道菜须要的食材。配料等。

酒店的服务工作流程是这种,服务员负责接待顾客,顾客通过菜单点了某些菜,服务员将顾客点的菜单提交给厨师。然后依据菜单所需。转告厨师助理去提取对应的原料,然后厨师将这些原料制作成美味的佳肴转交给服务员,服务员再将佳肴交给顾客。顾客在享用这些美味。

是不是有种非常熟悉的感觉,服务员,厨师,助理 不正是非常好的解释了三层架构吗?

服务员(表示层):负责前台的工作与顾客(客户)打交道。

厨师(业务逻辑层):负责详细制作某些菜(逻辑处理)

助理(数据訪问):负责从仓库(数据库)中寻找某些食材配料(数据)

知识来源于生活,联系生活来学习更有助于理解。

学了设计模式和三层才知道,作品展、学生系统、第一遍机房收费系统等都是在搭鸡窝,全部的代码都放在一个个窗口里面,并且窗口间耦合还巨强,汗。。

时间: 2024-10-18 17:38:09

三层架构分析的相关文章

WEB三层架构与MVC

web三层架构是指: >用户接口层(UI Layer) >业务逻辑层(Bussiness Layer) >持久化层 关于业务逻辑和用户接口 在早期的web开发中,因为业务比较简单,并没有这三层的划分.用户数据的呈现及输入的接收.封装.验证.处理.以及对数据库的操作,都放在jsp页面中.这时的开发,好比盘古尚未开天辟地,整个web开发就是一片“混沌”.随着业务越来越复杂,人们开始考虑更好的利用OOP这把利刃来解决问题.于是有人发现把业务逻辑抽取出来并形成与显示和持久化无关的一层,能够让业务

Django——WEB三层架构与MVC

而我发此文的目的有二:一者,让初学者能够听到一家之言,是为解惑:二者,更希望抛砖引玉,得到专家的批判. 许多学生经常问我,MVC到底和WEB三层架构有啥关系? 开始时,我也只能给他们一些模糊的回答.时间长了,自己的良心开始受到谴责.对于一个程序员来说,这个问题显得挺学究.我在跟自己的许多程序员朋友以及同 行(Java讲师)都对MVC和WEB三层架构的关系做了探讨.现在可以说对WEB三层架构和MVC之间的关系理出了头绪.此可谓教学相长. 先说说Web三层架构这个古老话题.地球人都知道web三层架构

三层架构(我了解并详细分析)

三层架构已经学到了一些时间,一直想做一个比較完整.比較完美的总结.可是左思右想,不知道怎样下笔.都说万事开头难嘛.今天整理了一下凌乱的思路.哎,还是没整理好,想到哪就说到哪吧. 刚開始学习的人非常不理解: 1,什么是三层? 2,为什么使用三层? 3,三层与以往使用的两层相比有什么不同?它的优势在哪里? 4.怎样学好三层?怎样应用三层? -- 这篇博客里我会给大家一一解释一下.略懂皮毛忘大家见谅.! ! 米老师一直强调:让学习和生活结合,把学习和生活联系,这种学习才叫会学习,会生活. 对于三层我左

三层架构(我的理解及具体分析)

三层架构已经学了一段时间,一直想做一个比較完整.比較完美的总结.可是左思右想,不知道怎样下笔.都说万事开头难嘛,今天整理了一下凌乱的思路,哎,还是没整理好,想到哪就说到哪吧. 刚開始学习的人非常不理解: 1,什么是三层? 2,为什么使用三层? 3,三层与以往使用的两层相比有什么不同?它的优势在哪里? 4,怎样学好三层?怎样应用三层? -- 这篇博客里我会给大家一一解释一下,略懂皮毛忘大家见谅!!! 米老师一直强调:让学习和生活结合,把学习和生活联系,这种学习才叫会学习,会生活. 对于三层我左思右

三层架构(我的理解及详细分析)

http://blog.csdn.net/hanxuemin12345/article/details/8544957 三层架构已经学了一段时间,一直想做一个比较完整.比较完美的总结.但是左思右想,不知道如何下笔.都说万事开头难嘛,今天整理了一下凌乱的思路,哎,还是没整理好,想到哪就说到哪吧. 初学者很不理解: 1,什么是三层? 2,为什么使用三层? 3,三层与以往使用的两层相比有什么不同?它的优势在哪里? 4,如何学好三层?如何应用三层? -- 这篇博客里我会给大家一一解释一下,略懂皮毛忘大家

(我明白了三层架构和具体分析)

三层架构已经学到了一些时间,一直想做一个比較完整.比較完美的总结.可是左思右想,不知道怎样下笔.都说万事开头难嘛,今天整理了一下凌乱的思路,哎,还是没整理好.想到哪就说到哪吧. 刚開始学习的人非常不理解: 1,什么是三层? 2,为什么使用三层? 3.三层与以往使用的两层相比有什么不同?它的优势在哪里? 4,怎样学好三层?怎样应用三层? -- 这篇博客里我会给大家一一解释一下,略懂皮毛忘大家见谅! ! ! 米老师一直强调:让学习和生活结合,把学习和生活联系,这种学习才叫会学习,会生活. 对于三层我

ASP.NET三层架构的分析

BLL   是业务逻辑层   Business   Logic   Layer DAL   是数据访问层   Data   Access   Layer ASP.NET的三层架构(DAL,BLL,UI) 图形表示三层结构. 其中web即为USL层 web –> bll –> dal|           |          ||           V          |+–> model <—+ 一.三层体系架构 1.表示层(USL):主要表示WEB方式,也可以表示成WINF

分析三层架构

介绍: 大家都非常清楚,去饭店吃饭,服务员仅仅管接待客人,出事仅仅管烹炒客人要的美食,採购员仅仅管按客人需求採购肉.海鲜.蔬菜.他们各司其职.共同协作为客人提供美食. 三层的特点: 我们如今讲的三层架构,就是用这样工作的.他们三者中不论什么依着发生变化时都不会影响到其它两者的正常工作,so体现了三层的"高内聚,低耦合"的特点. 三层详细的描写叙述: 从图中我们能够看到三层分别为:表达层(UI.用户界面层).业务逻辑层(BLL).数据訪问层(DAL). 简单地说一下他们的作用:UI:为用

[转]从三层架构到MVC,MVP

本来是不想跳出来充大头蒜的,但最近发现园子里关于MVC的文章和讨论之风越刮越烈,其中有些朋友的观点并不是我所欣赏和推荐的,同时最近也在忙着给公司里的同事做MVC方面的“扫盲工作”.所以就搜集了一些大家接触MVC的过程中经常出现的问题做了一下解释说明,希望能与大家多多交流,呵呵. 当然这种架构模式本身的一些问题也会在接下来的内容就加以介绍,另外就是如果大家有什么不同观点的话,欢迎拍砖(只要不打脸就行,呵呵). 一.  MVC是谁提出的         模型-视图-控制器(MVC)是Xerox PA