2012-01-27 54 views
0

我知道那里有很多MVC设计模式。似乎.NET MVC的一种流行模式是使用MVVM(模型,视图,视图模型)。.net MVC/MVP项目结构 - 这个设计如何?

我有点像这种方法,但同时也想添加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

首先的一切,我认为你是一个有点迷糊关于建筑模式。

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 
+0

是啊,这就是我在获得。你说得更清楚了。 :) 顺便说一句,为什么不Linq2Sql?我认为NHibernate和实体框架更适合企业的需求。 – 2012-01-28 17:10:01

+0

Linq2Sql不是一个完整的ORM工具。这很容易学习,并且有一个设计师(也包括EF),但是最大的缺点是你无法将实体与L2S代码分离。今天L2S仅用于Windows Phone项目。 – 2012-01-29 08:49:23

+0

嗨,也许考虑标记为正确的答案。谢谢 – 2012-01-31 13:56:44

0

我唯一的评论将不会把核心数据访问权限,但提出,在数据上的ORM的顶部,并确保你包在接口