我知道有很多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
这种结构有意义吗?我只是想知道这是否是一个不错的方式,或者我是否过于复杂化......就像我倾向于那样。
答案 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顶部的数据中并确保将所有内容包装在接口中