[轉貼] 三層式架構

2012041016:51
出處:http://blog.csdn.net/21aspnet/article/details/1540030

「三層式架構」是「外觀層」、「商業邏輯層」、「數據庫層」

假設以這樣的結構製作一個留言板,那麼應該是:

    # 留言板頁面的外觀代碼都存放在 .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的那兩個例子很好,多學習一下.
一個原則:
上層調下層
上層對下層是不可見的
設計時,表現層只調用邏輯層,表現層主要是取得頁面的數據傳到邏輯層,和把從邏輯層得到的數據顯示到頁面上。
邏輯層負責把數據加工整理傳到數據層和把從數據層取得的數據加工
數據層就只負責把數據對數據庫操作

業務邏輯層 就是給上層和下層下達命令和調節行為的中間層,這樣說易於理解一點了吧?