三层结构基础知识

【三层结构概述】

物理划分:(硬件上的划分)显示层、业务层、数据层

逻辑划分:UI/BLL(业务逻辑)+DAL(数据访问)/DB(我们讨论的三层)

【为什么要用三层】

为了将客户显示、业务逻辑、数据访问分开

【什么情况下用三层】

有DAL(数据访问)和BLL(业务逻辑)

业务逻辑简单、没有真正的数据存储层(不需要三层)

【必备基础知识】

1.业务逻辑层BLL(Business Logic Layer)

BLL的作用:从DAL中获取数据,以供UI显示用;从UI中获取用户指令和数据,执行业务逻辑;从UI中获取用户指令和数据,通过DAL写入数据源。

BLL的职责机制:UI->BLL->UI    ;    UI->BLL->DAL->BLL->UI。

2.数据访问层DAL(Data Access Layer)

DAL作用:数据源加载数据(Select)、向数据源写入数据(Insert/Update)、从数据源删除数据(Delete)     和数据源打交道。

DAL中常用的技术:ADO.NET+SQL语句、o/R Mapping框架NHiberate、访问SQL Server数据库时Linq to SQL。

3.界面层View/UI(User Interface)

UI作用:向用户展现特定业务数据、采集用户的输入信息和操作。

UI设计的原则:用户至上、兼顾简洁。

UI中常用的技术:WindowsForm:Form、Control    ASP.NET: aspx、ascx、master、html。

4.实体类Modal

Modal作用:声明一些字符串并转换为属性供三层调用,使得总体逻辑更加简单明了。

5.数据操作类DBHepler

DBHepler作用:和增加Modal类类似,统一了DAL层中代码的风格和格式,方便维护。

【在具体项目中的应用】

1.DAL只提供基本的数据访问,不包括任何业务相关的逻辑处理。

2.UI只负责显示和采集用户操作,不包含任何的业务相关的逻辑处理。

3.BLL负责处理业务逻辑,通过获取UI传来的操作指令,决定执行业务逻辑,再需要访问数据源的时候直接交给DAL处理,处理完成后,返回必要数据给UI。

具体应用:

1.DAL/BLL/UI分别在不同的程序集中,各个层之间的引用关系UI->BLL->DAL。

2.DAL所在程序集不引用BLL和UI。

3.BLL需要引用DAL。

4.UI直接引用BLL,可能会间接引用DAL。

特注:忌讳交叉引用,为了避免这个问题,出现了Model(实体);为了统一DAL层代码格式,出现了DBHelper(数据操作类)。

【感受】

在学习三层的过程中一步一步去理解其中的结构,理解其中的逻辑,真正了解了之后并且具备对以上知识的深刻理解相信再敲代码的过程中会得心应手的,加油!

时间: 2024-08-05 20:21:49

三层结构基础知识的相关文章

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

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

三层架构之基础知识

一.概念 1.UI(表现层) 通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得.用于接收用户输入的数据和显示处理后用户需要的数据. 2.BLL:(业务逻辑层) UI层和DAL层之间的桥梁.:针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理.业务逻辑具体包含:验证.计算.业务规则等等. 3.DAL:(数据访问层) 与数据库打交道.主要实现对数据的增.删.改.查.将存储在数据库中的数据提交给业务层,同时将业务层处理的数据保存到数据库. 二.原理 用户的需求反映给界面

struct结构体基础知识

/* ============================================================================ Name : TestStruct.c Author : lf Version : Copyright : Your copyright notice Description : struct结构体基础知识 ==================================================================

三层控件基础知识

一. 基础知识Delphi Multi-tier程序多以MIDAS为基础,因此以MIDAS为基础建立的Delphi Multi-tier程序,客户端和服务器端都要MIDAS.DLL文件的支持.1) 远程数据模块:远程数据模块是一个类似于COM Automation Server或是Corba Server的数据模块,它存在于应用程序服务器中,负责提供应用程序服务器上的数据提供者组件(Provider)接口给客户端应用程序使用.Delphi目前提供的远程数据模块有TRemoteDataModule

Java基础知识(一)——数据类型、运算符、结构

Java基础知识--数据类型.运算符.结构 在Java语言(强类型语言:先声明,后使用.只能接受与之类型匹配的值)里,除了8个基本数据类型之外,一切都是对象. 对象时Java程序的核心,所以Java里的对象具有唯一性,每个对象都有标识来引用它,如果某个对象失去了标识,这个对象将变为垃圾. Java语言不允许直接访问对象,而是通过对象的引用来操作对象. 对象具有状态,一个对象用数据值来描述他的状态.Java通过定义成员变量来描述对象的状态. 对象还有操作,这些操作可以改变对象的状态.对象的操作也被

网络基础知识查询

第一章.基础网络概念 1.1 网络是个什么玩意儿 全世界的人种有很多,人类使用的语言种类也多的很.那如果你想要跟外国人沟通时,除了比手划脚之外,你要如何跟对方讲话? 大概只有两种方式啰,一种是强迫他学中文,一种则是我们学他的语言,这样才能沟通啊.在目前世界上的强势语言还是属于英语系国家, 所以啰,不管是啥人种,只要学好英文,那么大家都讲英文,彼此就能够沟通了.希望不久的未来,咱们的中文能够成为强势语言啊! 这个观念延伸到网络上面也是行的通的,全世界的操作系统多的很,不是只有 Windows/Li

网络基础知识、ASP.NET 核心知识(1)*

为什么要写网络? 我原本的计划是这样的,连续两天梳理ASP.NET开发的核心知识.说到这呢,有人问了.“不是说好了做ASP.NET笔记吗?为啥要写网络基础知识?是不是傻?” 原因是这样的.作为网站开发人员,你所开发的软件产品最终是要在网络上运行的.这就像一个生产商,要生产供给东北地区的产品,而生产商对东北的天气.地理.人文毫无了解.生产商的产品肯定是不可用的,或者低端的!产品质量不好,那是自然的.产品质量好,那算你点儿高.那么作为ASP.NET开发人员,如果一点不懂http协议.不晓得Ajax.

SEO基础知识_绝密教程

<p align="center"> </p> <p>   </p> <p align="center"> 第一次接触SEO,请阅读本基础指南入门,也可以注册论坛:<a  1-1.html" target="_blank"><span style="color:black;">从一句话入门</span><span s

TCP/IP网络协议基础知识集锦[转]

引言 本篇属于TCP/IP协议的基础知识,重点介绍了TCP/IP协议簇的内容.作用以及TCP.UDP.IP三种常见网络协议相关的基础知识. 内容 TCP/IP协议簇是由OSI七层模型发展而来的,之所以存在OSI互联参考模型主要有以下几点好处: 1.用于解决不同厂商的设备互联问题:即兼容性考虑; 2.层次化结构独立性强;可扩展性强; 3.统一标准可以方便学习; TCP/IP模型 TCP/IP模型与OSI模型的相互关系如下图所示: 注释 1.应用层:与OSI的应用层.表示层.会话层相对应,主要作用是