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();
}
//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();
}
BLL層代碼實現
//中介者,接收UI層傳來的操作,需要數據訪問時將數據傳給DAL層
public Login.Model.UserInfo UserLogin(string userName, string password)
{
//實例化一個DAL的用戶表對象
Login.DAL.UserDAO uDao = new Login.DAL.UserDAO();
}
數據模型Model代碼實現
//三層之間傳遞參數的數據模型
public class UserInfo
{
public int ID { get; set; }
public string UserName { get; set; }
public string Password { get; set; }
public string Email { get; set; }
}
總結
- 上一篇: linux 安装绿色版的tomcat
- 下一篇: C# 调用百度api接口获取节假日