C#三層架構詳解--以系統登入為例
引言
通常意義上的三層架構是將真個業務應用劃分為:介面層(UI層)、業務邏輯層(B層)、資料訪問層(D層)。對於複雜的系統分層讓結構清晰,便於開發人員對系統進行整體的理解、把握;而且便於維護,系統基本的架構可以通過工具自動生成程式碼。當資料庫發生改變時,只用重新生成程式碼,改動業務邏輯層的部分程式碼即可。下面筆者通過一個簡單的登入例項來給大家介紹一下三層架構
簡介
對比以上兩張圖片,我們可以看出:
(1)資料庫好比豬圈,所有的豬都有序地按區域或編號,存放在不同的豬欄裡
(2)DAL好比是屠宰場 ,把豬從豬圈取出來進行(處理)屠殺,按要求取出相應的部位(欄位),或者進行歸類整理(統計),形成整箱的豬肉(資料集),傳送給食品加工廠( BLL )。本來這裡都是同一夥人既管抓豬,又管殺豬的,後來覺得效率太低了,就讓一部分人出來專管抓豬了( DBUtility ),根據要求來抓取指定的豬
(3)BLL 好比食品加工廠 ,將豬肉深加工成各種可以食用的食品(業務處理)
(4)UI 好比商場 ,將食品包裝成漂亮的可以銷售的產品,展現給顧客( UI 表現層)
(5)豬肉好比 Model ,無論是哪個廠(層),各個環節傳遞的本質都是豬肉,豬肉貫穿整個過程
(6)通用類庫 Common 相當於工人使用的各種工具,為各個廠(層)提供諸如殺豬刀、繩子、剪刀、包裝箱、工具車等共用的常用工具(類)。其實,每個部門本來是可以自己製作自己的工具的,但是那樣會使效率比較低,而且也不專業,並且很多工作都會是重複的。因此,就專門有人開了這樣的工廠來製作這些工具,提供給各個工廠,有了這樣的分工,工廠就可以專心做自己的事情了
實戰-系統登入例項
下面是資料在三層中的一個具體走向圖,這對於我們瞭解三層有很大的幫助
1、三層應用原則
(1)DAL層只提供基本的資料訪問,不包含任何的業務邏輯
(2)UI層只負責顯示和採集使用者操作,不包含任何業務相關的邏輯處理
(3)BLL層負責處理業務邏輯。通過獲取UI傳來的使用者指令,執行業務邏輯,在需要訪問資料來源的時候,直接交給DAL進行處理,處理完成後,返回必要資料給UI層
2、前期準備
(1)UML圖
(2)根據UML圖的關係,構建三層框架
(3)建立資料庫,UserInfo表
3、程式碼實現
(1)使用者介面(LoginUI)
向用戶展現特定的業務資料,採集使用者輸入的資訊和操作
namespace LoginUI
{
public partial class frmLogin : Form
{
public frmLogin()
{
InitializeComponent();
}
private void btnLogin_Click(object sender, EventArgs e)
{
//UI層將使用者輸入資料傳遞給BLL層
string userName = txtUserName.Text.Trim();
string password = txtPassword.Text;
Login.BLL.LoginManager mgr = new Login.BLL.LoginManager();
Login.Model .UserInfo user= mgr.UserLogin (userName, password);
//UI層返回業務層傳遞的資料給使用者
MessageBox.Show("登入使用者:" + user.UserName);
}
}
}
(2)業務邏輯層(LoginBLL)
從DAL獲取資料,提供UI顯示;從UI獲取使用者和指令,執行業務邏輯;從UI獲取使用者和指令,通過DAL寫入資料
namespace LoginBLL
{
public class LoginManager
{
public Login.Model.UserInfo UserLogin(string userName,string password)
{
Login.DAL.UserDAO uDao = new Login.DAL.u (); //例項化DAL層
Login.Model.UserInfo user = uDao.SelectUser(userName, password);
//不需要訪問資料來源,直接執行業務邏輯
if (user != null)
{
return user;
}
else
{
throw new Exception("登入失敗");
}
}
}
}
(3)資料訪問層(LoginDAL)
SELECT、INSERT/UPDATE、DELETE
namespace LoginDAL
{
public class UserDAO
{
public Login.Model.UserInfo SelectUser(string userName, string Password)
{
//建立資料庫連線
string ConnString = @"Server =192.168.24.45;DataBase =Login; User ID =sa ;Password =123";
using (SqlConnection conn = new SqlConnection(ConnString))
{
//執行SQL語句進行查詢
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = @"SELECT ID,UserName,Password,Email FROM UserInfo WHERE UserName [email protected] AND Password [email protected]";
//輸出查詢結果
cmd.CommandType = CommandType.Text;
//新增兩個引數
cmd.Parameters.Add(new SqlParameter(@"UserName", userName));
cmd.Parameters.Add(new SqlParameter(@"Password", Password));
conn.Open();
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;
}
}
}
}
}
(4)實體(LoginModel)
封裝資料,使資料在三層中傳輸,更傾向於業務邏輯層
namespace Login.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#三層架構詳解--以系統登入為例
引言 通常意義上的三層架構是將真個業務應用劃分為:介面層(UI層)、業務邏輯層(B層)、資料訪問層(D層)。對於複雜的系統分層讓結構清晰,便於開發人員對系統進行整體的理解、把握;而且便於維護,系統基本的架構可以通過工具自動生成程式碼。當資料庫發生改變時,只用
Java Web 三層架構詳解
王飛翔_ java 三層架構ssh 一個spring2.5+hibernate3.2+struts2.0組合框架,使用spring的 IoC來管理應用的 所有bean,包括struts2的 action,充分發揮了spring輕量級框架的 優勢。 摘 要:
JavaWeb三層架構詳解
什麼是三層架構? 三層架構(3-tier architecture) 通常意義上的三層架構就是將整個業務應用劃分為:介面層(User Interface layer)、業務邏輯層(Business Logic Layer)、資料訪問層(Data access layer
asp.net三層架構詳解
一、資料庫 /*==============================================================*/ /* DBMS name: Microsoft SQL Server 2000
B/S系統MVC與三層結構詳解
我們平時總是將三層架構與MVC混為一談,殊不知它倆並不是一個概念。 下面我來為大家揭曉我所知道的一些真相。 首先,它倆根本不是一個概念。 三層架構是一個分層式的軟體體系架構設計,它可適用於任何一個專案。 MVC是一個設計模式,它是根據專案的具體需求來決定是否適
關於C#三層架構增刪改查中的“刪除”問題
正在 font com 時間 convert strong int32 ring 三層架構 序: 剛學習C#,經過一段時間學習,現在正在做一個簡單的前後臺聯通的項目(主要是C#三層架構實現增刪改查)。分享一點兒小經驗,也供自己以後可以回頭看看自己的碼農之路。 內容: 主要分
關於C#三層架構增刪改查中的“查詢”問題
可能 一行 rep tro spa 結束 簡單 問題: .get 序:問題總是反復出現,可能只是一個小小的問題,但是就像肉中刺。 問題: 關於“姓名”字段的拼接問題 姓名字段的拼接:this.Repeater1.DataSource = db.GetList(" UNa
Java架構-詳解分散式系統本質:“分治”和“冗餘”
站在全域性角度看,分散式系統的本質是什麼?其實說白了,就是兩點:“分治”和“冗餘”。 分治和冗餘使得分散式系統具備了核心價值,那麼它的價值是什麼? 分散式系統的價值 談到分散式系統的價值,可能就得從 1953 年說起了。在這一年,埃布·格羅希(Herb Grosch)提
C#--三層架構設計方法(一)
三層架構的應用背景 系統功能較多而且業務複雜時,可以使用三層架構設計專案: BLL可以起到一個‘調節作用’,三層架構的設計能夠很好的滿足大、中型應用系統開發。 三層架構的應用準
Cisco 三層交換詳解
更改 轉發 鏈路 操作 for 成了 劃分 硬件 com 當公司網絡規模較小、劃分的VLAN比較少時,可能單臂路由就可以滿足各VLAN間的通信,但是當VLAN較多、網絡規模比較大時。那麽使用單臂路由技術就顯得有點力不從心了,這是我們就要引入三層交換機了。 現在大多數新型的c
msql sql_model 詳解(laravel5.6為例)
在我們使用mysql 的時候總會用到 group by 那麼 我們有些時候需要查詢group by 之外的欄位 一 ERR 1067引發的血案 今天在Navicat中執行sql語句建立資料表出現了錯誤Err 1067。而這條語句在有些同事的mysql上
第三方登入之QQ登入(二)——OAuth2.0處理流程介紹(以QQ登入為例)
為了讓網站更快接入,騰訊提供了JS SDK的接入方案,具體點選這裡或者點選這裡進行檢視。不過也可以自己寫程式碼,當然你需要了解QQ的OAuth2.0的處理流程(Web Server Flow)。OAuth2.0的處理流程:點選這裡檢視官方Wiki。1.授權:獲取授權碼Auth
企業網三層架構BCMSN詳解
實驗要求: 1.內網IP為172.16.0.0/16;外網IP隨意 2.埠安全 3.R2與SW1以及SW2之間為三層介面,連線HTTP伺服器的SW1與SW2的介面也為三層 4.所有的內網PC可以訪問外網PC 5.外網PC
SpringMvc三層架構註解詳解@Controller、@Service和@Repository
1. @Controller控制層 2. @Service() 3. @Repository持久層 springvmc採用經典的三層分層控制結構,在持久層,業務層和控制層分別採用@Repository、@Service、@Controller對分層中
【C#專案實戰】學生社團資訊管理系統(MVC三層架構)
程式碼很多,就不再此貼出。 本來打算寫教程的,無奈沒有時間。 參考帖子:【C#】簡單三層架構(MVC)實現學生資訊管理 有視訊教程,完整程式碼,建議初學者先看這篇。 學生社團資訊管理系統功能介紹: 1.實現了對資料庫的增刪查改 2.影象資訊儲存在資料庫,支援修改。 3
【Asp.Net MVC+EF+三層架構】詳解(三)MVC VS 三層架構
前言: 接著上篇部落格說:MVC和三層架構到底是怎麼樣的一個關係?相同?或是迥異?或是部分相同,部分不同?或是思想同,邏輯不同?這是個值得思考的問題。關於三層架構大家應該差不多都有些瞭解
【Asp.Net MVC+EF+三層架構】詳解(一)初見
前言: 這個專案是小編我進入公司開始全面重頭開始著手的第一個專案,在寶寶的IT生涯裡這是一個里程碑,有著與眾不同的意義。那麼在之後小編會從頭至尾的寫一組關於Asp.Net MVC+EF+三層架構框架
asp.net三層架構連線Oracle 11g詳解
asp.net三層架構連線Oracle 11g 連線Oracle時使用微軟的Oracle連線元件; 一 DAL層 using System; using System.Collections.Generic; using System.Text; using System
OSI七層與TCP/IP五層網絡架構詳解
p地址 tro 簡單 流控 之間 模型 網卡 層次結構 user OSI和TCP/IP是很基礎但又非常重要的網絡基礎知識,理解得透徹對運維工程師來說非常有幫助。今天偶又復習了一下: (1)OSI七層模型 OSI中的層 功能 TCP/IP協議族 應用層 文件傳輸,
溫故而知新---淺析三層架構(一個超簡單的系統登錄三層架構實例)
lda code windows comm 面向 box reader 業務 兩個 剛開始接觸三層架構是在快兩個月前,那時候找了好多例子感覺也都看不怎麽懂,今天閑著沒事,就把以前學的東西翻出來,算是溫習溫習。由於本人也接觸時間不長,所以以下言論有不正確之處,多多