1.什麼是三層,有哪些三層?
我理解的三層架構就是把整個業務或項目給分解成三個層:
(1)表示層 UI
(2)業務邏輯層 BLL
(3)數據訪問層 DAL
既有數據訪問層,又有BLL層的時候,就需要三層的結構,當業務複雜到一定程度之後,數據訪問脫離業務,脫離UI的時候,就需要三層架構;使用三層會在設計階段有很明確完整的規劃,並且會讓軟件開發者有着清晰的思路去開發項目;三層結構適合大中型項目的開發,分層設計更容易解決數據庫升遷,升級維護所帶來的的一系列的問題,可以使程序代碼高內聚,低耦合。
2.每一層的作用:
(1)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);
MessageBox.Show("登錄用戶:" + user.UserName);
(3)BLL層:是業務邏輯層,(因爲現實層UI 不能直接和數據源DAL打交道)所以有了BLL業務邏輯層來作爲一種媒介,
通過UI傳遞過來的操作命令,然後決定執行業務邏輯,
在需要訪問的時候直接交給DAL數據訪問層處理,然後再返回必要的數據給UI。
public Login.Model.UserInfo UserLogin(string userName, string password)
{
throw new NotImplementedException();
Login.DAL.UserDAO uDao = new Login.DAL.UserDAO();
Login.Model.UserInfo user = uDao.SelectUser(userName, password);
if (user !=null ) //如果登錄成功,就給該用戶增加積分。
{
Login.DAL.ScoreDao sDAO = new Login.DAL.ScoreDao();
sDAO.UpdateScore(userName, 10); //增加10積分
}
else
{
throw new Exception("登錄失敗");
}
(2)DAL層:(1)從數據源加載數據(Select)
(2)向數據源寫入數據(Insert / Update)
(3)從數據源刪除數據(Delete)
DAL層僅僅只是提供基本的數據訪問,不包含任何業務相關的邏輯處理。
三層架構也可以理解成是“機房重構”的前奏。三層架構降低了系統代碼的耦合,分工明確,提高了效率和代碼的準確性。