三层学习------理论篇

学校放假了,刚回家的孩子就像个客人被父母招待着。在放假的前几天里,你尽管开口,想吃啥爸妈都会满足你,不过好景可不长!在我家,厨房是老妈的地盘,买菜、做饭、洗碗刷锅,一个人全包了。而在饭店吃饭呢,吃饭的人多了,顾客点的饭菜种类各不相同。前前后后,一个人忙乎,哪里顾得过来,所以饭店就有了分工。前台服务员负责将顾客点的菜上报给厨师和;厨师根据上报的菜单做菜;采购员负责柴米油盐酱醋茶。这样,大家各司其职,井井有条。

我们在家中吃饭比较简单,没有具体的分工。饭店就是一个复杂庞大的系统了,需要合理规划,分工明确。一个优秀的软件系统首先要有一个好框架,好的架构能够实现高内聚、松耦合,从而提高软件的可扩展性、可复用性、可维护性以及灵活性。在软件体系架构中,分层结构是最常见的,也是最重要的一种结构。微软推荐的分层式结构一般分为三层,自上至下分别为:表示层、业务逻辑层、数据访问层。下面请看一张图,将饭店与三层式结构联系在一起,将学习融入生活。

这里说得三层是逻辑上的划分,不要和物理三层混淆了,物理上的这三层指的是:客户机、应用服务器、数据库服务器。接下来,我们来具体认识这三层。

表现层(UI):采集用户的输入信息和操作,向用户展现特定业务数据。通俗讲就是用户界面,即用户在使用一个系统的时候他的所见所得。


业务逻辑层(BLL):
针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。主要有三种方式:从UI中获取用户指令和数据,执行业务逻辑;从DAL中获取数据,以供UI显示;从UI中获取用户指令和数据,通过DAL写入数据源。


数据访问层(DAL):
该层所做事务直接操作数据库,针对数据的增添、删除、修改、查找等。

还有一个实体层(类),它在这三层之间上蹿下跳,借用晨阳博客中的比喻,这个实体层好比是信件,B层就是U层和D层之间传递信件的联络员,他是不知道信件的内容的。

在这三层中,DAL 只提供基本的数据访问,UI只负责显示和采集用户操作,他们都不包含任何业务相关的逻辑处理。BLL负责处理业务逻辑,通过获取UI传来的操作指令,执行业务逻辑,在需要访问数据源的时候交给DAL处理。处理完成后,返回必要的数据给UI。UI引用BLL,BLL引用DAL,由上到下可以引用,反过来行不通。这三层都可以引用实体层(类),但实体层不能去引用别的层。

使用三层的好处有很多,开发人员可以只关注整个结构中的某一层,有利于分工协作,降低层与层之间的依赖。当某一层需要更改时,不会影响到其它层,降低了维护成本和维护时间。不同的业务需求调用同一个数据表时,相同的代码只需写一次,有利于各层逻辑的复用和标准化,实现软件系统的高内聚,松耦合。One coin has two sides。这样做的弊端就是由于增加了中间层,不能直接访问数据库,从而降低了系统的性能。有时会导致级联的修改,如果在表示层需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码。当然也增加了开发成本。在实际的软件开发中,具体情况要具体分析,权衡好利弊。

三层学习------理论篇,布布扣,bubuko.com

时间: 2024-10-18 14:30:00

三层学习------理论篇的相关文章

三层架构-------理论篇

概念: 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI).业务逻辑层(BLL).数据访问层(DAL).区分层次的目的即为了"高内聚,低耦合"的思想. 各层概念 1.表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得. 2.业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理. 3.数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添.删除.修改.查找等. 注:应用三层离不开另一个重要的类:实体类,

三层结构——理论篇

为什么要分层? 1.开发人员可以只关注整个结构中的其中某一层:2.可以很容易的用新的实现来替换原有层次的实现:3.可以降低层与层之间的依赖:4.有利于标准化:5.利于各层逻辑的复用.6..方便团队分工 分层: 将整个业务应用划分为:表现层(UI).业务逻辑层(BLL).数据访问层(DAL).区分层次的目的即为了"高内聚,低耦合"的思想. 1. 表现层 位于最外层(最上层),离用户最近.用于显示数据和接收用户输入的数据,为用户提供一种交互式操作的界面.它是系统的UI部分,负责使用者与整个

三层架构理论篇

对于三层架构的理论阐述,我将从三个大的方面去讨论:what.why和how,说白了也就是以三层架构为中心,去了解什么是三层,为什么用三层以及怎么用三层这个三个问题.OK,废话不多说,进入正题. 什么是三层架构?(What) 通常多层结构的划分方式有两种:分别是物理和逻辑.物理上的三层结构是指将整个应用系统分为显示层.业务层和数据层,并且这三个层面上的实体都是硬件,比如显示层就是客户机器,业务层通常是应用程序服务器,而数据层就是数据库服务器了. 今天我们讨论的主要是逻辑上的三层架构,是在软件设计时

MVC基础学习—理论篇

1.      简介 ?  定义?什么是MVC     MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑.MVC被独特的发展起来用于映射传统的输入.处理和输出功能在一个逻辑的图形化用户界面的结构中. ?  VC模式和我们熟悉的WebForm模式    

【转】《胡侃学习(理论)计算机》前后篇及两篇补充

今天推荐的是篇老帖,南京大学sir先生的<胡侃>以及后来的两篇补充帖子.算算是十几年前的帖子了,我知道帖子出自南京大学的BBS,百度了一下,却没有翻到原文.不过百度到了一大堆不负责任的转帖,我想我这也不算是抄袭了吧.当年有一位我很尊敬的学长给我推荐的这篇文章,让我受益匪浅(学长当年年轻气盛因为这事还吃过不少亏,他自己一直很内疚). 这几篇帖子适用于学习计算机理论,对于大学本科想要好好学计算机的同学,或者是工作后想要系统的学习计算机及数学理论的同学很有帮助. ==========转载需要分隔线=

小蚂蚁学习sphinx(1)--理论篇

网上有视频在讲php+mysql+sphinx,以前只是听说过,心想今天终于能够学习一下涨涨见识了,一个小时的理论篇讲完,并没有预想中那种汲取大量知识的满足感,一来讲的理论多一些,二来都是在linux下的操作,没办法实践,先把今天的小笔记写一下,以后慢慢钻研这块内容. sphinx生成索引数据,并为数据库提供更专业的搜索功能. 为什么要用sphinx?1.做搜索时当数据量很大单纯的mysql搜索比较慢(如果表进行了分表会更慢)2.搜索中文分词3.速度快 获取sphinx.http://sphin

【机器学习算法应用和学习_2_理论篇】2.2 M_分类_逻辑回归

一.原理阐述 算法类型:监督学习_分类算法 输入:数值型或标称型(标称型需要独热编码) V1.0 用回归方式解决二分类问题,通过引入一个Sigmoid函数将中间y值映射到实际二分类的y值上. 二.算法选择 三.算法过程 1.Sigmoid函数是一个x值域是(-∞,+∞),y值域是(0,1)的单调递增函数: 2.预测y值>0.5为1类,<0.5为0类,y值也可以解释为为1和0类的概率: 3.同样使用“最小二乘”概念,求得最佳方程,得到目标函数: 4.要使得目标函数达到最小,需要采用一种称为“梯度

【SSH2(理论篇)】--Struts2配置详解

上篇博客讨论了SSH2框架模型,在开发过程中发现SSH2的开发模型其实类似于经典的三层模式,在每一层中分别添加了不同的框架,显示层使用的是Struts2进行配置的,业务逻辑层使用的是Spring配置,数据持久层则采用的是Hibernate,开发模式简单易懂,接下来将会分别从三层着手讨论每一层的运行内容. 一.Struts体系简介 struts,是Apache软件基金会(ASF)赞助的一个开源项目,它通过采用Java Servlet/JSP技术,实现了基于Java EE Web应用的Model-V

【机器学习】Logistic Regression 的前世今生(理论篇)

Logistic Regression 的前世今生(理论篇) 本博客仅为作者记录笔记之用,不免有非常多细节不正确之处. 还望各位看官能够见谅,欢迎批评指正. 博客虽水,然亦博主之苦劳也. 如需转载,请附上本文链接,不甚感激! http://blog.csdn.net/cyh_24/article/details/50359055 写这篇博客的动力是源于看到了以下这篇微博: 我在看到这篇微博的时候大为触动,由于,如果是rickjin来面试我.我想我会死的非常慘,由于他问的问题我基本都回答不上来.