代码展示 C#系列---①三层架构中各层次之间的调用

1、什么是三层架构?
三层架构(3-tier ) 通常意义上的三层架构就是将整个业务应用划分为:表示层(Userlayer)、业务逻辑层( Logic Layer)、数据访问层(Datalayer) 。
①、表示层(USL):主要表示WEB方式,也可以表示成方式 。如果逻辑层相当强大和完善,无论表现层如何定义和更改,逻辑层都能完善地提供服务 。
【代码展示C#系列---①三层架构中各层次之间的调用】②、业务逻辑层(BLL):主要是针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻辑处理 。如果说数据层是积木,那逻辑层就是对这些积木的搭建 。
③、数据访问层(DAL):主要是对原始数据(数据库或者文本文件等存放数据的形式)的操作层,而不是指原始数据,也就是说,是对数据的操作,而不是数据库,具体为业务逻辑层或表示层提供数据服务 。
2、我们为什么要用三层?它的优点是什么?
目的:区分层次的目的即为了“高内聚,低耦合”的思想 。
优点:开发人员可以只关注整个结构中的其中某一层;
一层的修改并不影响另外两层;
可以降低层与层之间的依赖;
避免了表示层直接访问数据访问层,表示层只和业务逻辑层联系,提高了数据安全性 。
3、三层的原理图是什么?
生活逻辑与计算机逻辑的结合:
计算机逻辑展示:
4、三层运行的核心是什么?
所谓三层体系结构,就是在客户端和数据库之间加入了一个“中间层”,用户输入和看到的信息并不是直接从数据库提取出来的,而是经过了中间层的处理,避免了用户直接与数据库打交道,保证数据的安全 。
5、我们如何能够快速的掌握三层的逻辑?
逐步运行三层的代码,将运行的流程进行抽象 。
三层代码展示: UI层 ①、类(此类为系统自动生成)
namespace LoginUI{static class Program{/// /// 应用程序的主入口点 。/// [STAThread]static void Main(){Application.EnableVisualStyles();//启动应用程序的可视样式Application.SetCompatibleTextRenderingDefault(false); //将某些控件上定义的UseCompatibleTextRendering属性设置为应用程序范围内默认值Application.Run(new Form1());//在特定的applicationContext中,在当前线程上开始运行标准应用程序消息循环}}}
②、Form1类
namespace LoginUI{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void btnLogin_Click_1(object sender, EventArgs e){string userName = txtUserName.Text.Trim();//1步:将用户输入的数据给存储起来,即将值赋值给变量string password = txtpassword.Text;Login.BLL.LoginManager mgr = new Login.BLL.LoginManager();//2步:实例化BLL层LoginManager类Login.Model.UserInfo user = mgr.UserLogin(userName, password);//3、23步:通过实例化B层对象mgr,来调取B层中的成员函数UserLogin,并将userName与password作为参数传到BLL层,并将返回的参数赋值给userMessageBox.Show("登录用户:" + user.UserName);//24步:登录成功}}}

代码展示  C#系列---①三层架构中各层次之间的调用

文章插图
BLL层
namespace Login.BLL{public class LoginManager{public Login.Model.UserInfo UserLogin(string userName, string password){Login.DAL.UserDAO uDAO = new Login.DAL.UserDAO();//4步:实例化DAL层UserDAO类,即创建一个uDAO对象 。Login.Model.UserInfo user = uDAO.SelectUser(userName, password);//5,13步:将userName与password作为参数传给DAL层,并将返回的参数赋值给userif (user != null)//判断user中的数据,登录成功{Login.DAL.ScoreDAO sDao = new Login.DAL.ScoreDAO();//14步:实例化DAL层ScoreDAO类sDao.UpdateScore(userName, 10);//15、21步:调取DAL层中的UpdateScore方法,进行更新数据库return user;//22步:将user的值返回到UI层}else{throw new Exception("登录失败");//user值没有赋值成功,导致登录失败}}}}