[英]How to setup architecture for mvc project
我正試圖搞定MVC。 我來自ASP.Net背景。
在創建新的mvc 3應用程序后,我在同一個webapp項目下獲得了Controller,Models和views。 在ASP.Net中,我們通常為模型和控制器創建單獨的項目(我假設它們與業務層相同)。 我還為DAL創建了一個單獨的項目,我將使用EF。
我很困惑,因為這是理想的解決方案結構? 我們不應該為每一層創建單獨的項目嗎? 由於我創建了DAL作為一個單獨的項目,我不得不在其中添加WebApp的引用,因為我想從DAL返回Model,因此我現在無法將DAL的引用添加到我的WebApp中。
請問有人可以解釋我在這里失蹤的內容嗎? 我做得不對嗎?
MVC確實將“M”部分留給了開發人員。
即使在他們的官方示例中,您也會看到變化。 您的問題暴露了一個關於MVC的最常見的誤解。 您不應將域或數據模型直接綁定到視圖,也不應將控制器方法接受為參數。 關於過度和不足的帖子,請參閱此帖子 。
理想情況下,您的控制器將調用DAL,並且某些機制會將這些數據或域模型映射到View模型。 正是那些View模型 - 專門用於促進UI的模型 - 應存在於WebApp“Models”文件夾中。
所以,你肯定是在正確的軌道上創建一個新的程序集來包含你的DAL。 映射到ViewModel的“最簡單”機制之一是每個ViewModel上的一個簡單方法:
public class MyWidgetFormModel()
{
public string Name { get; set; }
public string Price { get; set; }
public MapFromDAL(DAL.Widget widget)
{
this.Name = widget.Name;
this.Price = widget.Price;
}
}
當我開始使用MVC時,我遵循Jeffrey Palermo洋蔥架構。 你可以閱讀它:
這里: http : //jeffreypalermo.com/blog/the-onion-architecture-part-1/
這里: http : //jeffreypalermo.com/blog/the-onion-architecture-part-2/
在這里: http : //jeffreypalermo.com/blog/the-onion-architecture-part-3/
它使用IoC支持解耦服務。 我認為您應該考慮使用IoC容器,因為MVC架構被認為是使用IoC來解耦服務(層)的模式。
您還可以使用洋蔥架構從http://codecampserver.codeplex.com/下載工作樣本。
它不是唯一可以與MVC一起使用的架構,但它是一個非常好的起點和了解IoC以及在MVC應用程序中解耦的地方。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.