C#—三层架构
Posted 刘鹏远lpy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#—三层架构相关的知识,希望对你有一定的参考价值。
于学习到三层了~接下来也要下功夫学习机房重构了,给自己加油!
【内容】
1.什么是三层架构
三层架构分为物理上的和逻辑上的,其中:
(1)在物理上是显示层、业务层、数据层,下面是一个应用软件的三层架构模型:
(2)逻辑上:UI 层、BLL 层、DAL层。
在这里,我们主要来学习逻辑上的三层。
2.三层具体介绍
(1)数据访问层(DAL)
处理一切和数据库直接进行交互的操作,如数据库的增删改查。
1)DAL的作用
从数据源加载数据(Select);
向数据源写入数据(Insert/Update);
从数据源删除数据(Delete)。
2)DAL中常用的技术
ADO.NET + SQL语句;
O/R Mapping框架;
访问SQL Server数据库时Ling to SQL。
(2)显示层(UI)
也称用户界面层,是用户所看的到的界面。
1)UI的作用
向用户展现特定业务数据;
采集用户的输入信息和操作。
2)UI设计的原则
用户至上,兼顾简洁。
3)UI中常用的技术
WindowsForm:Form、Control
ASP.NET:aspx、ascx、master、html
(3)业务逻辑层(BLL)
主要做业务逻辑判断和计算。
1)BLL的作用
从DAL中获取数据,以供UI显示用;
从UI中获取用户指令和数据,执行业务逻辑;
从UI中获取用户指令和数据,通过DAL写入数据源。
2)BLL的职责机制
——UI->BLL->UI
UI发出业务请求到BLL,BLL处理完后将结果返回给UI层。
——UI->BLL->DAL->BLL->UI
UI发送业务请求到BLL,BLL向DAL发送数据请求,DAL将查到的相关数据返到BLL层,BLL层处理完后将结果返回到UI层。
3.具体应用原则
(1)DAL只提供基本的数据访问,不包含任何业务相关的逻辑处理;
(2)UI只负责显示和采集用户操作,不包含任何的业务相关的逻辑处理;
(3)BLL负责处理业务逻辑。通过获取UI传来的操作指令,决定执行业务逻辑,在需要访问数据源的时候直接交给DAL处理;处理完成后,返回必要数据给UI。
4.三层之间关系图
5.代码部分
UI层代码实现
//获取用户输入的用户名
string userName = txtUserName.Text.Trim();
//获取用户输入的密码
string password = txtPassword.Text;
//和业务逻辑层进行交互,实例化一个BLL层对象
Login.BLL.LoginManager mgr = new Login.BLL.LoginManager();
//和Model交互,建立对象user用来接收数据链路层产生的user信息
Login.Model.UserInfo user = mgr.UserLogin(userName,password);
//登录成功
MessageBox.Show(“登录用户:” + user.UserName);
DAL层代码实现
//连接数据库
namespace Login.DAL
class DbUtil
public static string ConnString = @“Server=FRJ;DataBase=Login;User ID=sa;Password=123”;
//UserDAO实现
namespace Login.DAL
public class UserDAO
public Login.Model.UserInfo SelectUser(string userName, string password)
//实例化一个对象cnn,用来打开数据库连接
using (SqlConnection conn = new SqlConnection(DbUtil.ConnString))
//实例化一个对SQL执行操作的对象
SqlCommand cmd = conn.CreateCommand();
//设置执行的SQL语句
cmd.CommandText = @"SELECT ID,UserName,Password,Email
FROM Users WHERE UserName=@UserName AND Password=@Password";
//以文本形式执行
cmd.CommandType = CommandType.Text;
//获取并添加参数的值
cmd.Parameters.Add(new SqlParameter("@UserName",userName));
cmd.Parameters.Add(new SqlParameter("@Password", password));
//打开连接
conn.Open();
//SqlDataReader读取数据
SqlDataReader reader = cmd.ExecuteReader();
//创建一个用户
Login.Model.UserInfo user = null;
//如果数据表里有数据
while (reader.Read())
//如果创建的用户内容为空
if (user == null)
//让创建的用户接收查到的用户数据
user = new Login.Model.UserInfo();
//如果用户存在则直接返回值
user.ID = reader.GetInt32(0);
user.UserName = reader.GetString(1);
user.Password = reader.GetString(2);
//如果第三列的值不为空
if (!reader.IsDBNull(3))
user.Email = reader.GetString(3);
return user; //将用户信息返回给BLL层
//ScoreDAO实现
namespace Login.DAL
public class ScoreDAO
//更新分数
public void UpdateScore(string userName, int value)
//实例化对象cnn,使用using会自动关闭连接
using (SqlConnection conn = new SqlConnection(DbUtil.ConnString))
//创建一个执行数据库操作的对象
SqlCommand cmd = conn.CreateCommand();
//设置执行的SQL语句
cmd.CommandText = @"INSERT INTO Scores(UserName,Score) Values(@UserName,@Score)";
//获取并添加参数的值
cmd.Parameters.Add(new SqlParameter("@UserName", userName));
cmd.Parameters.Add(new SqlParameter("@Score", value));
//打开连接
conn.Open();
//执行SQL语句并返回受影响的行数
cmd.ExecuteNonQuery();
BLL层代码实现
//中介者,接收UI层传来的操作,需要数据访问时将数据传给DAL层
public Login.Model.UserInfo UserLogin(string userName, string password)
//实例化一个DAL的用户表对象
Login.DAL.UserDAO uDao = new Login.DAL.UserDAO();
//建立一个user对象,接收DAL层查到的用户信息
Login.Model.UserInfo user = uDao.SelectUser(userName,password);
//登录成功
if (user != null)
//实例化一个DAL层的分数表对象
Login.DAL.ScoreDAO sDao = new Login.DAL.ScoreDAO();
//登录成功后,更新Scores表
sDao.UpdateScore(userName,10);
return user;
//登录失败
else
throw new Exception("登录失败。");
数据模型Model代码实现
//三层之间传递参数的数据模型
public class UserInfo
public int ID get; set;
public string UserName get; set;
public string Password get; set;
public string Email get; set;
C#三层架构
最近新学的,C#中得三层架构
————2016-10-23
- 表示层
- 业务逻辑层(BLL)
- 数据访问层(DAL)
关联:产生依赖关系
描述:三层体系结构就是在客户端和数据库之间加一个中间层,通常情况下客户端不能直接和数据库进行交互,而是通过中间层和数据层进行交互的。
【表示层】
主要负责完成用户和系统的交互。
它接收用户输入的信息,并把上级传来的处理结果表示给用户。盖层有时候兼容一小部分业务逻辑层的作用(验证用户输入的数据及其合法性)
一般作为Windows或者Web应用程序
【业务逻辑层】
接收表示层传来的数据,以参数的形式传给数据访问层;然后接收数据层发来的处理好的数据,传给表示层。
该层所做的工作比较复杂,如:实现业务流程、业务的数据校验
是表示层和数据层之间的桥梁,都需要通过业务逻辑层来完成信息数据的收发
【数据访问层】
数据访问层为系统提供了规范,统一数据的访问入口,保证业务逻辑层对系统数据访问层的规范和高效,从而实现数据被高效、安全的访问
该层会根据业务逻辑层的请求去处理和数据库之间的交互,不对数据做任何业务上的加工
【本人见解】
表示层接受用户的请求,根据用户的请求去通知业务逻辑层,业务逻辑层收到请求,首先对请求进行审核,然后将请求发给数据访问层或者直接返回到表示层,数据访问层收到请求后就开始访问数据库,数据访问层通过数据库的访问得到请求的结果,并把结果通知业务逻辑层,业务逻辑层收到请求结果将请求结果通知表示层,表示层收到请求结果,然后把结果显示给用户;
ps:用户登录系统就是这一应用的实例。
用户输入账号密码---->表示层先判断,符合----->业务逻辑层进行封装--------->数据访问层进行进一步安全、高效的判断------->结果给业务逻辑层------->表示层显示结果
这种传递是一步一步的进行下去,一步一步的回来,不能跨越传递。
-
在三层之间,各层之间是相互依赖的关系的,表示层依赖业务层逻辑,业务层依赖数据访问层,三层之间通过自身提供的对外方法来传递访问
-
三层之间的松耦合互不干扰,之间的联系是通过自己提供的接口来访问;
-
三层结构各层之间的的数据传递方法分为请求和响应两个方法;
-
项目依赖方向:先从表示层传递到业务层再到数据层;
-
数值返回:数据层返回给业务逻辑层,在由业务逻辑层返回给表示层,然后由表示层进行显示;
欢 迎 补 充 !
*********************************
……2016-10-23……
……阿文……
……@^_^@……
**********************************
以上是关于C#—三层架构的主要内容,如果未能解决你的问题,请参考以下文章