我目前正在學習計算機科學學位的最後一年,並且正在研究我的最終項目和論文。我將使用ASP.NET Web Forms和C#創建一個3層項目 - 我無法真正稱它爲3層,因爲它很可能永遠不會被託管在除本地PC之外的其他任何位置,因爲它用於測試唯一的目的。ASP.NET三層/三層體系結構 - 如何分離UI和BLL
我的主要問題是:
從我的理解,3層的想法是,BLL引用DAL和UI引用BLL創建的擔憂完全分離。不過,我已經在幾個教程之後做了一個小模擬項目,以便獲得3層教程,而大多數基本教程仍然需要UI和BLL之間的參考。
例如,在我創建的項目中,這是一個非常基本的產品和類別類型電子商務系統,我在DAL中創建了Product和ProductDAL類,然後在BLL中創建了ProductBLL類。使用這種設置,只使用一個數據庫表(現在忘記類別),BLL似乎只是作爲UI和DAL之間的一種接口,這些方法與DAL中的方法完全相同,只調用DAL版。
問題是,要通過BLL訪問DAL,我必須將Product對象傳遞給BLL方法參數,這意味着首先在UI中創建一個Product對象,這意味着從UI引用DAL。這是做事的正確方法嗎?
我可以通過在BLL中創建一個採用相應字段的方法來解決這樣的簡單情況,例如,字符串和整數以創建產品對象並將其返回給AddProduct方法。但是,當將不同的產品屬性綁定到UI中的標籤時,我仍然需要訪問產品對象。
所以基本上,我是否需要在BLL中加載一些方法來訪問產品對象的屬性?如果不是,那麼實際上會有什麼樣的方法,你能給我一些在這種產品方案中可能會出現在BLL中的方法的例子嗎?
在此先感謝,並表示道歉,如果這已被問及以前 - 我讀了很多關於3層架構的帖子,但大多數都是非常基本的,只能訪問一張表。
這個答案已經解決了我想要做的大部分要點,但我只是補充一點,你的問題中的混淆可能來自於你似乎認爲「數據訪問層」(例如:ProductDAL)和「數據模型」(例如產品)是相同的。他們通常沒有。 DAL是負責填充模型的代碼,並且模型可以很好地在各層之間共享,就像Oded上面解釋的甚至是不同的(想想DTO的/ ViewModel的等等) – InSane