初识三层结构

	第一次听说三层结构,是九期的一个师哥在给我们讲高校云平台。那天的感觉像是在听天书,以前从没有接触过。不过,那几个不断在师哥口中重复的名词BLL层、DAL层还是留下了些印象。现在自己来到三层结构的学习了,对师哥讲的那些词算是有种久违的感觉。下面就对三层结构的初识做个总结。
	一. 多层结构的划分方式。
	结构的划分方式有两种,分别是物理上和逻辑上。从物理的角度来说,可分为显示层、业务层和数据层。从逻辑的角度看,可分为UI层、BLL+DAL层以及DB层。这里我们所说的三层结构是指逻辑上划分的三层。
	刚开始还真没发现物理上与逻辑上有什么差别,想想这不都是同样的三层吗。这个问题不解决,后面的学习就更是问题。后来发现,它们两个根本不是一回事,物理上的三层是指客户机、应用服务器和数据库服务器,可以称得上是三台机器。而逻辑上的三层是指一台机器上包含了表示层、应用层、数据层和数据库,也可以成为模块,这样可能容易理解些。
	值得注意的是,从逻辑结构到物理结构的对应关系并不是唯一的,了解到应该是包含五种。不过现在觉得自己的学习还没有达到那样深层的阶段,这里就不详细研究了,还是先知道就好。大家可以参考下面的图有个简单了解。
			
	二.为什么要使用三层架构。
	为什么要用三层,这个问题的答案很简单,可以想想之前学习的软工思想。在整个编程中,最基本的就是“高内聚低耦合”的思想。所以,有了三层,将模块间分层,这样程序出错可以分层去检查,各层次间也不会发生相互影响,就大大提高了效率。
	既然谈到这里,就简单的说说三层架构的优缺点。
优点:
	1. 开发人员可以只关注整个结构中的其中某一层。
	2. 可以很容易用新的实现来替换原有层次的实现。
	3. 可以降低层与层之间的依赖。
	4. 有利于标准化。
	5. 利于各层逻辑的复用。
缺点:
	1. 降低系统的性能。如果不采用分层式结构,很多业务可以直接访问数据库,以此获取相应的数据,如今却必须通过中间层来完成。
	2. 有时导致级联的修改。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码。
在此也有一点需要声明:三层结构也不是万能的,它有优点也有缺点,在软件开发中,也要视情况而定究竟需不需要使用它。紧随其后的就是下一个问题。
	三.什么情况下需要使用三层架构。
	一句话的总结:当业务复杂到一定程度,当数据存储到相应的数据库或数据存储介质。前面这些都是对三层宏观上的介绍,下面就是对三层中各层的深入剖析。
一. 数据访问层(DAL)
	1. 作用
		1) 从数据源加载数据(Select)
		2) 向数据源写入数据(Insert/Update)
		3) 从数据源删除数据(Delete)
	2. 常用的技术
		1) ADO.NET+SQL语句
		2) O/R Mapping 框架
		3) 访问SQL Server数据库时Linq to SQL
	3. 具体应用原则
		只提供基本的数据访问,不包含任何业务相关的逻辑处理。
	4. 认识与体会
		在机房收费系统中,我们都建立了与数据库之间的连接。在这里,我们一遍遍写SQL语句,反复对数据库中的数据进行增删改查,所以利用SQL语句对数据的处理肯定是不陌生。不过,现在分层之后,光从上面的那二. 显示层(UI)
	1. 作用
		1) 向用户展现特定业务数据
		2) 采集用户的输入信息和操作
	2. 设计原则
		用户至上,兼顾简洁
	3. 常用技术
		1) Windows Form:Form、Control
		2) ASP.NET :aspx, ascx, master, HTML
	4. 具体应用原则
		只负责显示和采集用户操作,不包含任何的业务相关的逻辑处理。
	5. 认识与体会
		这一层看似简单,但要做得好确实非常困难的。就还是拿之前做的收费系统来说,我自己觉得我做的界面已经很好了,整齐干净,控件的大小也很统一,但验收的时候,师父就觉得怎么看怎么别扭,还觉得很乱,这样,就给用户不好的心情了。虽说是萝卜青菜,各有所爱,但软件开发还是要去做符合喜闻乐见的大众文化的界面好,用户这一关就不难了。在三层的学习中,显示层也有这么多的技术可以参考,可想,要做出一道佳肴,还需要我们学好技术才行啊。
三. 业务逻辑层(BLL)
	1. 作用
		1) 体现核心价值的部分,关注点集中在业务规则的制定、业务流程的实现等与业务系统有关的系统设计。
		2) 处于访问层与表示层中间,起到了数据交换中承上启下的作用。
	2. 具体应用原则
		负责处理业务逻辑。通过获取UI传来的操作指令,决定执行业务逻辑,在需要访问数据源的时候直接交给DAL处理。处理完成后,返回必要数据给UI。
	3. 认识与体会
		逻辑层,看着名字就觉得它不简单,功能的实现很大程度上是依赖它其中的代码的。加上它又是两层的中间,所以关系的依赖与否对其来说是关键。
	在此对各个层也有了更加深刻的了解,似乎觉得三层已然在心中。可是这些远远是不够的,所以,后面自己还将结合实例去进一步了解,就从视频中的登录小例子开始。Ready?Go!
时间: 2024-07-29 18:18:18

初识三层结构的相关文章

工厂三层结构环境的搭建

工厂三层结构 n年没登陆的账号,居然还在.怎么上传项目文件呢/? 一.创建项目 1.创建Model,实现业务实体. 2.创建IDAL,实现接口. 3.创建SQLServerDAL,实现接口里的方法. 4.创建DBUtility,放DBHelpersql.cs. System.configuration 5.创建DALFactory,返回程序集的指定类的实例.放发的素材dataaccess.cs和datacache.cs System.Web.System.configuration Dataac

[转]MVP+WCF+三层结构搭建项目框架

最近,我一直在重构之前做的一个项目,在这个过程中感慨万千.原先的项目是一个运用了WCF的C/S系统,在客户端运用了MVC模式,但MVC的View.Model耦合以及WCF端分布式欠佳等问题让我有了重构的想法,经过了一段时间的改造,逐渐形成了MVP+三层结构+WCF的面向服务的程序架构.在这里我把我的想法写成了一个例子,供大家参考. 在正式开始讲解之前,我必须得感谢Artech.代震军等诸多大虾,他们的文章给了我很大的启发. 我写的这个例子是关于博客管理的,逻辑很简单,就是用户发表文章.发表评论,

传统三层结构和MVC之于贫血模式和充血模式以及领域建模

相信很多人跟我一样,一开始在使用贫血模式的三层结构:抽象出来一个贫血的实体封装,然后把对模型的所有操作,分离出来,分离到BLL层去,然后DALL层负责把这些操作和数据库产生映射,负责读写删改的操作. 后来我开始使用Asp.net MVC来操作.网络上很多理论都是讲究:M是主要数据操作和实体,V 是显示层,一般为模板.而C是一个控制层,或者说调度层,负责把Model跟合适的View结合起来,最终呈现给用户.根据上述理论,我们可以知道V一般 为模板,而C其实是很薄的一层,只是一个负责调度.重要的层在

老调重弹---C# winForm三层结构

大牛们略过,对初学者起抛砖引玉的作用. 以数据库AdventureWorks的Person.Address表为例. 一.建好框架 prj 表示层,这里用的是winForm. prjBLL 业务逻辑层,当然是类库 PrjDAL 数据访问层,当然是类库啦 PrjModel 模型层,当然也是类库啦 二.展开 三. 以上结构中从下到上分析. prjModel下的Address.cs 与要操作的表字段一一对应,我这里只列举几个字段. Address.cs  using System;using Syste

java中的mvc和三层结构究竟是什么关系

一件事,要知其然往往很简单,要知其所以然通常不是那么容易,就如最近重新巩固spring的过程中,就觉得还有许多问题其实并不是十分明了. 屈指一算,手头上做过的正式项目也有了四五六七个了,不管用的数据库和其他一些细节上的技术如何,总的来说大的框架结构都是差不多的. 说白了,也就是mvc和三层结构. 而mvc和三层结构究竟是什么关系,我曾在面试的过程中被人问过几次,也曾仔细的想过.查过这个问题,但是直到此时,我也还是不能完全确定. 只不过随着时间的积累,随着技术的沉淀,随着视野的拓宽,我大体上认同了

三层结构

三层,故名思义,就是有三个层次.依次是显示层(View/UI).业务逻辑层BLL(Business Logic Layer)和数据访问层DAL(Data Access Layer).并不是所有的程序都要用三层架构,简单的问题复杂化岂不是一种愚笨的行为吗!如果我们做一个小程序,业务逻辑简单,没有真正的业务存储层,就不需要用到三层.但当你的业务复杂到一定的程度,当你的数据存取到一个独立的数据库或存储介质时就需要用到三层结构.     显示层 UI的作用就是向用户展现特定业务数据,采集用户的输入信息和

由经典的MVC模式到Web三层结构

这几天复习了一下MVC,下面就是这几天的学习笔记,有错误的地方,欢迎大家批评指正. 经典的MVC 什么是MVC? 去南京趋势科技参加实习面试的时候,面试官问了我一个问题:MVC是不是一种设计模式?当时我对MVC的理解还不够透彻,就回答了个是(最后趋势挂了!).原因很简单,文献[1]P526中说MVC是一种复合模式,那当然是设计模式了.关于MVC到底是不是一种设计模式,等我们讨论完MVC后再说.先来说说什么是MVC. M:Model 模型 负责真正的业务逻辑的处理,是MVC的核心, 模型不依赖于视

大型局域网中二层结构与三层结构

大型局域网中二层结构与三层结构 大型局域网结构千变万化.网络的规划与园区环境.应用类型密不可分.就目前而言网络结构分为大二层与三层结构.未来的发展方向是向sdn靠拢,我个人观点是自动化网络,可以实现基于业务的配置自动化,同时也可以实现故障自愈和.就结构而言在没有二三层之分了,我认为也就是一层网络.纵向虚拟化就是一层网络的很好体现. 今天主要总结了大二层与三层结构的 二层网络没有汇聚或者逻辑上没有汇聚,网关在核心.不同vlan之间直接由核心进行数据交换.同时使用mstp+vrrp技术实现网络冗余.

mvc与三层结构

http://www.cnblogs.com/zhhh/archive/2011/06/10/2077519.html 又看到有人在问三层架构和MVC的关系,感觉这种问题有点教条化了.因为它们都在逻辑上将应用程序划为三块,凑了一个数字3,就有人非要把它们联系到一起了. 这两个东西我接触有几年了,有一点体会,表达一下: 三层是三层,MVC是MVC,它们毫无关系的. 三层是从整个应用程序架构的角度来分的三层(如果程序需要,还可以分多层). 三层是为了解决整个应用程序中各个业务操作过程中不同阶段的代码