三层结构
“三層結構”是“外觀層”、“商業邏輯層”、“數據庫層”
假設以這樣的結構制作一個留言板,那么應該是:
??? # 留言板頁面的外觀代碼都存放在 .aspx 文件中
??? # 當用戶點擊頁面上的提交按鈕時,先將文本信息傳遞給一個 LeaveWord 類對象
??? (LeaveWord 類的定義被封裝到“商業邏輯層”)
??? # 之后讓這個對象執行 Post() 將留言信息發送到數據庫
用一個簡單的代碼就是:
??? <textarea id="Content" runat?="server"></textarea>
??? <input type="button" id="Post" runat?="server" />
??? // ----------------------------------------
??? // 在外觀層,當用戶點擊發送按鈕后
??? // ----------------------------------------
??? private void Post_ServerClick(object sender, EventArgs e)
??? {
??????? LeaveWord lword=new LeaveWord();
??????? lword.Content=Content.Value;
??????? lword.Post();
??? }
??? // ----------------------------------------
??? // 在商業邏輯層,定義 LeaveWord 類
??? // ----------------------------------------
??? public class LeaveWord
??? {
??????? public string Content;
??????? public void Post()
??????? {
??????????? new LWordData().Post(this.Content);
??????? }
??? }
??? // ----------------------------------------
??? // 數據庫層,定義發送方法
??? // ----------------------------------------
??? public class LWordData
??? {
??????? public void Post(string content)
??????? {
??????????? // 打開數據庫,將 content 插入到表中
??????? }
??? }
這樣,外觀層就不必費心數據庫操作了...
理解基本正確.但是數據層已經只是數據庫的操作,不應該和業務有任何關系,你可以參考SqlHelper.cs
提醒一點,系統的"層"是對代碼的一種邏輯劃分,并不是一定要三層,假設你的系統很簡單,就一個頁面,那一層就可以,如果系統很復雜,也可能是n層.
差不離了,核心就是外層絕對不會涉及任何數據處理,他的任務是設置界面,獲取數據,輸出數據
業務層最重要,所有數據處理在這里,如何運用外層提供的數據處理業務
數據庫層一般都建議調用存儲過程,返回數據集或其他所需數據;.net的那兩個例子很好,多學習一下.
一個原則:
上層調下層
上層對下層是不可見的
設計時,表現層只調用邏輯層,表現層主要是取得頁面的數據傳到邏輯層,和把從邏輯層得到的數據顯示到頁面上。
邏輯層負責把數據加工整理傳到數據層和把從數據層取得的數據加工
數據層就只負責把數據對數據庫操作
業務邏輯層 就是給上層和下層下達命令和調節行為的中間層,這樣說易于理解一點了吧?
?
假設以這樣的結構制作一個留言板,那么應該是:
??? # 留言板頁面的外觀代碼都存放在 .aspx 文件中
??? # 當用戶點擊頁面上的提交按鈕時,先將文本信息傳遞給一個 LeaveWord 類對象
??? (LeaveWord 類的定義被封裝到“商業邏輯層”)
??? # 之后讓這個對象執行 Post() 將留言信息發送到數據庫
用一個簡單的代碼就是:
??? <textarea id="Content" runat?="server"></textarea>
??? <input type="button" id="Post" runat?="server" />
??? // ----------------------------------------
??? // 在外觀層,當用戶點擊發送按鈕后
??? // ----------------------------------------
??? private void Post_ServerClick(object sender, EventArgs e)
??? {
??????? LeaveWord lword=new LeaveWord();
??????? lword.Content=Content.Value;
??????? lword.Post();
??? }
??? // ----------------------------------------
??? // 在商業邏輯層,定義 LeaveWord 類
??? // ----------------------------------------
??? public class LeaveWord
??? {
??????? public string Content;
??????? public void Post()
??????? {
??????????? new LWordData().Post(this.Content);
??????? }
??? }
??? // ----------------------------------------
??? // 數據庫層,定義發送方法
??? // ----------------------------------------
??? public class LWordData
??? {
??????? public void Post(string content)
??????? {
??????????? // 打開數據庫,將 content 插入到表中
??????? }
??? }
這樣,外觀層就不必費心數據庫操作了...
理解基本正確.但是數據層已經只是數據庫的操作,不應該和業務有任何關系,你可以參考SqlHelper.cs
提醒一點,系統的"層"是對代碼的一種邏輯劃分,并不是一定要三層,假設你的系統很簡單,就一個頁面,那一層就可以,如果系統很復雜,也可能是n層.
差不離了,核心就是外層絕對不會涉及任何數據處理,他的任務是設置界面,獲取數據,輸出數據
業務層最重要,所有數據處理在這里,如何運用外層提供的數據處理業務
數據庫層一般都建議調用存儲過程,返回數據集或其他所需數據;.net的那兩個例子很好,多學習一下.
一個原則:
上層調下層
上層對下層是不可見的
設計時,表現層只調用邏輯層,表現層主要是取得頁面的數據傳到邏輯層,和把從邏輯層得到的數據顯示到頁面上。
邏輯層負責把數據加工整理傳到數據層和把從數據層取得的數據加工
數據層就只負責把數據對數據庫操作
業務邏輯層 就是給上層和下層下達命令和調節行為的中間層,這樣說易于理解一點了吧?
?
總結
- 上一篇: 用顺丰寄一个24寸的行李箱大概多少钱
- 下一篇: C#精髓【月儿原创】第三讲 C#泛型有什