好吧,所以我一直在採取各種有關MVC,EF4,存儲庫模式,UoW,服務層等的偉大信息,現在我將嘗試將它們放在一起。ASP.NET MVC應用程序設計
我的問題是,這些應該如何分開?
我想的項目是這樣的:
1)應用 - MVC應用程序
2)庫層 3)實體 - EF4 /部分實體類
任何建議將是偉大的!
感謝, 山姆
好吧,所以我一直在採取各種有關MVC,EF4,存儲庫模式,UoW,服務層等的偉大信息,現在我將嘗試將它們放在一起。ASP.NET MVC應用程序設計
我的問題是,這些應該如何分開?
我想的項目是這樣的:
1)應用 - MVC應用程序
2)庫層 3)實體 - EF4 /部分實體類
任何建議將是偉大的!
感謝, 山姆
這裏是你怎麼可以構建應用程序一個例子:
這層可以表示物理分離之間的域對象)
你會碰到一個我可以看的樣品嗎?我對1和2有點困惑。你能詳細說明一下嗎?此外,服務層是否與EF生成的對象一起工作?域對象是EF生成的對象嗎? - 謝謝!! – Sam 2011-02-18 17:55:24
@Sam Striano,這是我寫的一個示例MVC項目結構(沒有服務層=>控制器調用存儲庫):https://github.com/darind/samplemvc。讓我試着詳細說明:服務層不適用於EF生成的對象。它與您在1中定義的領域模型一起工作.EF對象被EF特定的東西污染(除非您使用Code First,在這種情況下,您的EF Code First模型成爲第1點)。該模型不應該與您正在使用的任何數據訪問技術相關。對我來說,自動生成的EF類不應該離開它們各自層的邊界。 – 2011-02-18 18:01:45
不要在物理上分開代碼,除非有物理原因,例如部署或代碼共享的原因。使用文件夾和名稱空間。
我剛剛通過這個自己,迄今爲止我發現的最好的方法是S#arp Architecture。
優秀的模板爲您生成項目腳手架,他們有一個很好的解釋爲什麼你真的想要物理項目分離。 Good argument here。這些教程展示瞭如何使用此模型進行TDD輕而易舉。
這個模型的優點是它提供的關注點分離,所以如果你確實想使用EF,那麼它就是一個切換NHibernate的剪輯。
對於那些剛接觸MVC模式並希望獲得更多正確架構知識的人來說,這是一個很好的問題。我期待着答案 – stephen776 2011-02-18 18:03:30