日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

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

C#

C#—三层架构

發布時間:2024/1/1 C# 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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#—三层架构的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。