2012-01-27 51 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的頂部,並確保你包在接口