浅谈C#三层架构(UI、BLL、DAL、Model)

本文详细介绍了三层架构的概念,包括显示层(UI)、业务逻辑层(BLL)、数据访问层(DAL)及实体类库(Model)。阐述了各层的职责与交互机制,强调了其在系统维护和复用方面的优势。

三层架构

三层结构符合“高内聚、低耦合”的特点,每个层职责明确。利用分层,降低了层间依赖,使系统的耦合更加松散,从而使系统更加容易维护和复用。

三层:
显示层(UI)、业务逻辑层(BLL)、数据访问层(DAL)再加上实体类库(Model)组成

1.显示层(UI)
  (1)在UI中添加对Model、BLL的引用
  (2)编写代码传递数据给BLL层
  职责:①向用户展示特定的业务数据
     ②采集用户的信息和操作

2.业务逻辑层(BLL)
  (1)先建立业务逻辑层类库BLL
  (2)在BLL中添加对Model、DAL的引用
  (3)建立业务逻辑类
  职责:① 从UI中获取用户指令和数据,执行业务逻辑
     ②从UI中获取用户指令和数据,通过DAL写入数据源
     ③从DAL中获取数据,以供 UI 显示用

3.数据访问层(DAL)
 (1)先建立数据访问层类库DAL
 (2)在DAL中添加对Model的引用
 (3)建立数据访问类
 作用:跟数据源打交道
 职责:执行对数据的操作(增删改查)

机制:UI –> BLL –> DAL –> BLL –> UI

4.实体类库(Model)
  作用:主要存放数据库中的表字段,对其字段进行封装

### C#三层架构BLL DAL Model)中的数据查询实现方式 在C#三层架构中,数据查询的实现涉及UI层、业务逻辑层(BLL)、数据访问层(DAL)和实体类库(Model)。以下是各层在数据查询过程中的职责及其实现方法: #### 1. **实体类库(Model)** 实体类库主要定义了与数据库表字段对应的实体类。例如,在用户信息查询中,可以创建一个`UserInfo`类来表示用户表的结构[^1]。 ```csharp namespace Model { public class UserInfo { public string UserName { get; set; } public string Password { get; set; } } } ``` #### 2. **数据访问层(DAL)** 数据访问层负责直接与数据库交互,执行具体的SQL查询操作,并将结果映射到实体类对象中。DAL通常包含连接字符串配置以及查询方法的实现[^3]。 以下是一个简单的DAL实现示例,用于查询用户信息: ```csharp using System; using System.Collections.Generic; using System.Data.SqlClient; using Model; namespace DAL { public class UserInfoDAL { private string connectionString = "DataSource=.;InitialCatalog=tt;PersistSecurityInfo=True;UserID=sa;Password=123"; public List<UserInfo> GetUserList() { List<UserInfo> userList = new List<UserInfo>(); using (SqlConnection conn = new SqlConnection(connectionString)) { string sql = "SELECT UserName, Password FROM Users"; SqlCommand cmd = new SqlCommand(sql, conn); try { conn.Open(); SqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { UserInfo user = new UserInfo { UserName = reader["UserName"].ToString(), Password = reader["Password"].ToString() }; userList.Add(user); } } catch (Exception ex) { throw ex; } } return userList; } } } ``` #### 3. **业务逻辑层(BLL)** 业务逻辑层负责从UI层接收请求,调用DAL中的方法完成数据查询,并将结果返回给UI层。BLL还可能包含对数据的额外处理逻辑[^4]。 以下是一个BLL实现示例,用于调用DAL查询用户列表: ```csharp using System.Collections.Generic; using Model; using DAL; namespace BLL { public class UserInfoBLL { public List<UserInfo> GetUserList() { UserInfoDAL dal = new UserInfoDAL(); return dal.GetUserList(); } } } ``` #### 4. **用户界面层(UI)** 用户界面层负责展示查询结果并接收用户输入。UI层通过调用BLL的方法获取数据,并将其呈现给用户。 以下是一个简单的WinForms UI示例,用于显示用户列表: ```csharp using System; using System.Windows.Forms; using System.Collections.Generic; using BLL; using Model; namespace UI { public partial class MainForm : Form { public MainForm() { InitializeComponent(); LoadUserList(); } private void LoadUserList() { UserInfoBLL bll = new UserInfoBLL(); List<UserInfo> userList = bll.GetUserList(); foreach (var user in userList) { listBoxUsers.Items.Add($"Username: {user.UserName}, Password: {user.Password}"); } } } } ``` ### 总结 在C#三层架构中,数据查询的实现遵循以下流程: - **Model**:定义实体类以表示数据库表结构。 - **DAL**:执行SQL查询并将结果映射到实体类。 - **BLL**:调用DAL方法完成数据查询,并将结果传递给UI层。 - **UI**:展示查询结果或接收用户输入。 ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值