[英]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.