1

進出口創造一個像一個4層的項目這在數據訪問層和業務層上實現哪種模式?

  • 數據訪問層
  • 業務邏輯層
  • 域模型只有POCO類(通過EF5)
  • 網站有關我的實體作爲前端

我一直以來都將DAL和BLL混合在一起,直接從網站引用DAL。這一次,我想在這裏有一些真正的問題分離,我想創建一個DAL,這是一個真正的DAL和單元測試加上一個真正的持久性不可知的BLL(你知道,像專業人士那樣)我正在計劃使用EF5

我看了很多網站喜歡

洙基本上我知道i'll必須使用的工廠,倉庫和單位的工作模式,但我不知道什麼去哪裏,什麼是一個簡單的(但足夠清晰的例子)我可以關注

我知道的是,我不應該參考網站上的DAL bt我真的不知道如何使橋樑。

有沒有這樣的例子,說一個產品和訂單表?

回答

0

洙基本上我知道i'll必須使用的工廠,倉庫和 單元的工作模式,但我不知道什麼去哪裏,什麼是 簡單(但足夠清晰的例子),我可以遵循

你說你知道你將不得不使用他們,但你有一個準確的想法爲什麼你需要他們每個人擺在首位? ;)

難道你沒有采取錯誤的方法來模仿「專業人員」如何做,並一次性拋棄所有這些模式?也許你可以開始編寫最簡單,最幼稚的實現,它基於更一般的原則來滿足你的需求(可測試DAL +持久性 - 無知BLL)。

設計模式只是達到目的的一種手段。在設計或嘗試改進實現時,您可能會感到需要他們,但也許情況並非如此。

至於良好的通用應用程序體系結構指南,我建議Bob叔叔的工作Clean Architecture。我發現,即使他用自己的詞彙來描述特定的軟件構造,他解釋它們的方式也可以讓您輕鬆地將它們看作佔位符 - 您可以稍後將它們與存儲庫,工作單元等等對應的一般概念上。

1

構建一個Service LayerPresentation Layer(web應用程序)引用。然後在Service Layer中,您可以參考BLLEF5 EntitiesDALService Layer可以僅是Class Library(例如,ASP.NET Web API)或Web Services層(例如,WCF)。

現在您的網絡應用程序沒有對DAL的硬引用,而只知道Service LayerEF5 Entities

1

我相信你在尋找the onion architecture

...洋蔥的「核心」是對象模型,它代表您的域。該圖層將包含您的POCO實體。在您的域實體周圍是存儲庫接口,這些接口又被服務接口包圍。將您的存儲庫和服務表示爲接口將消費者與具體實現分離開來,使您能夠在不影響消費者的情況下交換一個消費者,如客戶端UI或測試。數據訪問層在外層表示爲一組實現存儲庫接口的存儲庫類。同樣,日誌記錄組件在服務接口層中實現了一個日誌記錄接口。

from here

你也應該考慮探索控制/依賴注入的反轉。幾個月前,我採用了SimpleInjector(見herehere)。在SimpleInjector背後的man有一些啓發性的帖子,可以幫助你(starting with this one)。