.net MVC / MVP项目结构 - 这个设计怎么样?

时间:2012-01-27 22:32:01

标签: asp.net .net asp.net-mvc

我知道有很多MVC设计模式。似乎.net MVC的一种流行模式是使用MVVM(模型,视图,视图模型)。

我有点像这种方法,但同时也希望增加MVP的优点。

我的想法是做这样的事情。

一个例子:

/Intranet (Solution)

 .Intranet.Core/ (Project)- Accesses data in Intranet.Data and contains more generic business logic

 .Intranet.Data/ (Project)- ORM/Linq2Sql stuff sits here

 .Intranet.Web/ (Project)- MVC stuff sits here

 ..Models/ - Stuff that links to Intranet.Core and returns values for Controller

 ..ViewModels/ - Stuff the controller wants to pass to the view so it can handle the display

 ..Views/ - Obviously the views sit here

这种结构有意义吗?我只是想知道这是否是一个不错的方式,或者我是否过于复杂化......就像我倾向于那样。

2 个答案:

答案 0 :(得分:2)

首先,我认为你对建筑模式有点困惑。

MVC (模型 - 视图 - 控制器) IS 表示层中使用的架构模式。

MVVM (Movel-View-ViewModel)是一种不同的模式,非常适用于WPF或Silverlight应用程序。

最后 MVP (Model-View-Presenter)是另一种演示模式。您可以考虑在Windows窗体应用程序中使用它,或者可以在Web窗体应用程序中将表示与逻辑分离。但它不是很直观,所以今天开发Web应用程序的最佳方式是MVC模式。

在Visual Studio中启动一个新的ASP.NET MVC应用程序项目,以获得一个起始的表示层架构。然后添加至少一个Model项目,使类只对控制器有用。

例如:

/Intranet (Solution)

 .Intranet.Core/ (Project)- Accesses data in Intranet.Data and contains more generic business logic

 .Intranet.Data/ (Project)- ORM stuff sits here (don't use LinqToSql, but a real ORM like NHibernate or maybe last Entity Framework version)

 .Intranet.Web/ (Project)- MVC stuff sits here: Controllers and views. Refernce ViewModels

 .Models/ (Project) - Stuff that links to Intranet.Core and returns values for Controller

 .ViewModels/ (Projects)- Stuff the controller wants to pass to the view so it can handle the display

答案 1 :(得分:0)

我唯一的评论是不将数据访问放在核心中,而是将其放在ORM顶部的数据中并确保将所有内容包装在接口中