三層結構即:ui(顯示層)、bll(業務邏輯層)、dal(資料訪問層)
ui的作用:
(1)向使用者展現特定業務資料;
(2)採集使用者的輸入資訊和操作。
bll的作用:
(1)從dal中獲取資料,以供ui顯示用;
(2)從ui中獲取使用者指令和資料,執行業務邏輯;
(3)從ui中獲取使用者指令和資料,通過dal寫入資料來源。
dal的作用:
(1)從資料來源載入資料(select);
(2)向資料來源寫入資料(insert / update);
(3)從資料來源刪除資料(delete)。
三層之間的引用關係:ui -> bll -> dal
具體應用原則:
(1)dal只提供基本的資料訪問,不包含任何業務相關的邏輯處理;
(2)ui只負責顯示和採集使用者操作,不包含任何的業務相關的邏輯處理;
(3)bll負責處理業務邏輯,通過獲取ui傳來的操作指令,決定執行業務邏輯,在需要訪問資料來源的時候直接交給dal處理。處理完成後,返回必要資料給ui。
使用vs程式設計具體實現如下:
建立乙個名為「loginsolution」的解決方案,然後新增專案,專案名稱分別為loginui、loginbll、logindal、loginmodel,在各個專案下新增類。loginui引用loginbll和loginmodel,loginbll引用logindal和loginmodel,logindal引用loginmodel。效果如下圖:
使用者介面如下圖:
loginui的**如下:
using system;
using system.collections.generic;
using system.componentmodel;
using system.data;
using system.data.sqlclient;
using system.drawing;
using system.linq;
using system.text;
using system.threading.tasks;
using system.windows.forms;
namespace loginui
private void btnlogin_click(object sender, eventargs e)
catch (exception ex) //如有登入異常,則提示登入失敗
}
loginbll的**如下:
using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.threading.tasks;
namespace login.bll
else}}
}
logindal的**如下:(1)userdao**:
using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.threading.tasks;
using system.data;
using system.data.sqlclient;
namespace login.dal
user.id = reader.getint32(0);
user.username = reader.getstring(1);
user.password = reader.getstring(2);
if (!reader.isdbnull(3))
}return user;}}
}}
(2)scoredao**:
using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.threading.tasks;
using system.data.sqlclient;
namespace login.dal}}
}
(3)dbutil**:
using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.threading.tasks;
namespace login.dal
}
loginmodel的**如下:
using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.threading.tasks;
namespace login.model
public string username
public string password
public string email }}
資料庫中scores表和users表設計如下:
再來一張圖~
c mysql三層架構例項 三層架構例項
一 概要 這篇部落格,準備用乙個小demo來介紹應該實現三層架構。三層架構只是分層的一種經典形式,到底分幾層,要依具體情況而定,考慮到系統的複雜程度,和後期的可維護性,完全可以分四層,五層,甚至六層,七層。二 demo 1 實現語言 vb.net 2 需求 學校機房收費系統 中的乙個功能 操作員為學...
三層登入實現
上篇部落格說到三層的四個問題 what why when how how部分沒有說,這篇部落格以登入為例,用c 實現三層登入,了解它的執行過程以及 詳解。下面這張圖是通過vs生成的時序圖,詳細地講述了登入的整個過程。上面這張圖有些繁瑣,其實簡單地說,就是ui層採集使用者的使用者名稱和密碼,然後傳遞給...
三層登入窗體
經過幾天的努力奮鬥,三層登入窗體終於完成了,雖然歷經風雨,但是經過小夥伴們的幫助,順利的學習到了很多的東西。u層 namespace loginui private void btnlogin click object sender,eventargs e b層 namespace login.bl...