2010-09-18 92 views
0

至於延續我剛纔的問題,(見https://stackoverflow.com/questions/3737848/creating-a-loosely-coupled-scalable-software-architecture抽象三層應用程序的數據層(DAL)

有人建議也摘要DAL像我抽象從表現層的BLL我的三層項目如何做到這一點的任何建議?我還需要BLL和DAL之間的工廠嗎?我需要你的輸入人員..謝謝

+2

我不明白爲什麼有人投票要關閉它,這似乎是一個非常好的問題。他正在尋求抽象數據訪問的最佳實踐和方法。這聽起來像我們想培養的東西。也許重新提出這個問題? – David 2010-09-18 18:02:12

+0

@David:他之前的問題非常詳細,有相當多的背景。這種延續缺乏。如果他用這個編輯他以前的問題,OP將得到更好的答案,IMO。 – 2010-09-18 18:15:19

回答

2

有趣 - 我會在BL和DAL之間抽象'd爲表示層做這件事

在你的其他問題中使用的方法似乎是合理的 - 你爲什麼不重用這個?

  • 是的,你需要一個工廠;但是你可以將它包含在一個普通的類/程序集中,並且它只返回一個object,然後你可以在它返回時進行投射 - 即:在BL被調用的地方。
  • (完整性:)使用Activator.CreateInstance()(正如您在其他問題中所使用的)是正確的選擇。
  • 對於DAL,我傾向於使用存儲在配置中的值(作爲傳入工廠的參數);經常更改DAL實現並不常見 - 所以配置對我來說很合適。
  • 當設計BL和DAL之間的對比/抽象時,請注意Interface Segregation Principle(ISP) - 如果您做得對,您可以一次混合並匹配不同的物理DAL實現。
  • 如果您將DTO和工廠保留在一個通用的組件中(可能是同一個組件),那麼可以很容易地將它們與BL和各種DAL實現一起使用 - 以及注意事項,您將該公共類保留爲依賴可能。如果你這樣做,你可以添加/添加DAL實現,而無需重新編譯和重新部署整個系統。