2010-11-27 62 views
1

我最近一直在學習數據訪問層,業務邏輯層和表示層,但我仍然有一些不太清楚的東西。我應該嘗試將asp控件事件放入BLL中嗎?

我可以使用DAL和BLL與表示層獲取或在數據庫中設置的信息。

但我也想過asp控件事件,以及我應該如何實現它們。

我應該,例如,儘量把一個按鈕單擊事件到BLL或者我應該只是把它留在文件後面的aspx代碼?

如果我應該把它們放到BLL中,我該如何去做這件事?

我不知道如何讓一個事件稱這是在BLL的方法,所以任何建議將不勝感激。

+0

我希望我可以接受多個答案。我選擇了Tom B的答案,因爲這對我來說是最簡單的理解,並給了我一個很好的指導方針,可以讓我學習更多關於N-layered方法的知識。 – 2010-11-27 15:51:54

回答

2

如果事件與業務模型有關,那麼您應該在BLL中創建一個方法。如果它是UI類型的事件,請在後面的代碼中處理它。因此,例如,如果用戶單擊按鈕來計算裝運,則在按鈕的單擊事件處理程序(後面的代碼)中調用BLL對象的CalculateShipping()方法。但是,如果你有一個改變頁面背景顏色的按鈕(我想不出一個更好的例子),那麼你會完全在後面的代碼中處理它。

3

鑑於這種架構:

介紹 - >商務 - >數據

任何層應該只知道並且做出關於層在其最接近右邊的假設。這意味着表示層可以與業務層交談並使用它的API,但不應直接與數據層進行對話。業務層可以使用數據層的API,但不應該知道或假設使用它的表示層。顯然,數據層應該對任何其他層都不知道。

如果你遵循這個總體原則,你會發現你的應用程序將會更簡單,更容易維護。

雖則回答你的問題,按一下按鈕事件表示層屬於 - 把一個按鈕單擊事件到你的業務邏輯將模糊兩層之間的線,可能會造成不必要的耦合。隱藏文件(表示層)

1

你的ASPX代碼可以要麼直接引用您的BLL(在耦合的結果),也可以使用更多的服務導向的方法。這將涉及創建您的表示層引用的接口並由業務層實現。在應用程序初始化期間(即在您的Global.asax文件中),您可以通過依賴注入或其他方法將BLL連接到表示層。

相關問題