2011-10-05 21 views
2

是否有一種將ASP.NET MVC的「模型」部分封裝爲可重用程序集的接受/期望的最佳實踐方法?將ASP.NET MVC模型封裝爲可重用的程序集

作爲技術練習,我想在不同的系統中使用相同的業務/持久層。例如,將相同的程序集編譯爲ASP.NET MVC應用程序和傳統的Windows服務。

我的想法是在一個單獨的程序集中實現我的模型(和EntityFramework/DbContext/etc)。然後,我的MVC項目將完全省略「Models」文件夾,而我的控制器將引用「模型組合件」中的代碼。我一直首選ViewModel作爲視圖的「目標」,因此我非常高興將所有視圖強制類型爲ViewModel對象而不是Model對象。

  1. 這是常用的方法嗎?
  2. 它違反ASP.NET MVC的「約定配置」原則嗎?
  3. 通過採用這種方法,我會失去具體的MVC好處嗎?
  4. 這種方法還有其他令人討厭的陷阱嗎?

我是一位合理舒適的ASP.NET,C#和Windows服務老手,但對於ASP.NET MVC來說卻很新手。道歉,如果這是一個重複的問題;大多數「可重用的MVC」問題都集中在UI組件上,而不是整個業務/持久性「層」。一如既往,先感謝您的見解!

回答

2

是的,這是我見過很多系統開發的。最終你會得到一個「業務層」,它可以像REST-over-WCF-on-IIS一樣工作。

不,你不會失去任何我知道的東西,儘管維護多個項目的複雜性略有增加。

這樣做的另一個好處是,你最終得到的控制器和模型層都是可測試的,因爲你可以在它們之間使用依賴注入。

+0

希望得到多於一個人的樣本量。 ;)不過,我很高興聽到這聽起來像我在一個普遍接受的軌道上。謝謝! – mikemanne

+0

有很多框架遵循這種模式 - 例如S#arpArchitecture。 –

相關問題