欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > C# >内容正文

C#

C#—三层架构

发布时间:2024/1/1 C# 83 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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#—三层架构的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。