三层结构

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

   
显示层

UI的作用就是向用户展现特定业务数据,采集用户的输入信息和操作,秉着用户至上,兼顾简介的原则就行了。那我们学过的VB来说,就是指的窗体及窗体代码。在这里它只负责显示和采集用户操作,不包含任何的业务相关的逻辑处理。


业务逻辑层

BLL用来从DAL中获取数据,以供UI显示用,还从UI中获取用户指令和数据,执行业务逻辑,通过DAL写入数据源。也就是说BLL负责处理业务逻辑。通过获取UI传来的操作指令,定执行业务逻辑,在需要访问数据源的时候直接交给DAL处理。处理完成后,返回必要数据给UI。

 
数据访问层

DAL从数据源中加载数据(Select),向数据源写入数据(Insert/Update),从数据源删除数据(Delete)。它只提供这些基本的数据访问,不包含任何业务相关的逻辑处理。

DAL/BLL/UI分别在不同的程序集中。它们各个层之间的引用关系为UI->BLL->DAL。DAL所在程序集不引用BLL和UI,BLL需要引用DAL,UI直接引用BLL,可能会间接引用DAL。

学三层中遇到的问题

1、粗心把Database写成Datebase

 2、缺少打开数据库语句conn.Open()

  总结

三层可以将程序各个业务分层,各个业务之间可以独立,有利于分工合作,提高效率。学习了三层之后,才知道自己做过的学生管理系统、机房收费系统有多差劲,不过什么都是慢慢练出来的。在接下来的机房重构中要好好将三层的知识运用上。

时间: 2024-10-24 11:23:43

三层结构的相关文章

工厂三层结构环境的搭建

工厂三层结构 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和三层结构究竟是什么关系,我曾在面试的过程中被人问过几次,也曾仔细的想过.查过这个问题,但是直到此时,我也还是不能完全确定. 只不过随着时间的积累,随着技术的沉淀,随着视野的拓宽,我大体上认同了

由经典的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,它们毫无关系的. 三层是从整个应用程序架构的角度来分的三层(如果程序需要,还可以分多层). 三层是为了解决整个应用程序中各个业务操作过程中不同阶段的代码

lamp源码三层结构

拓扑图 apache: 192.168.1.143/24 php: 192.168.1.149/24 mysql:192.168.1.146/24 安装所需软件 Apr-1.5.1.tar.bz2  Apr-util-1.5.3.tar.bz  http://apr.apache.org/download.cgi  httpd 2.4.10.tar.bz2  http://httpd.apache.org/download.cgi#apache24  Mysql  mariadb-5.5.36-