4

問候,ASP.Net MVC和N層

道歉提前,我沒有研究這個強硬足以回答這個問題我自己,但我想它會帶我一段時間,我寧願現在才知道我花更多的時間來學習它。我在最初的研究中找不到任何東西。

如果您已經使用了多層體系結構(數據層,邏輯層,表示層),爲什麼要使用ASP.Net MVC?除了事實上,控制器比邏輯層具有更多功率。

我是否正確地認爲我可以在MVC的模型部分使用nHibernate和我所有的數據訪問類,實體和映射?

使用控制器時,最好是將很多邏輯分成單獨的類,以便我可以從多個控制器調用它?或者我可以從控制器自己調用它們,考慮到我不希望所有這些都是Actions,只是普通的方法。

由於

回答

8

MVC不是取代N層,它是組織表示層的方法。

我不會說控制器比邏輯層更強大。相反,控制器(作爲表示層的一部分)仍然應該調用邏輯層。

控制器只應爲視圖準備數據並處理來自視圖的操作。你仍然應該使用你的BLL。

3

是的,NHibernate實體可以(也應該是)將它們傳遞給視圖。

這會讓你陷入一些麻煩。你應該使用扁平的,無效的DTOs a.k.a.視圖模型。

+0

......我的錯誤。我的意思是POCO entites(作爲數據載體)而不是NHibernate實體。 – gius 2009-01-04 12:45:52

0

要回答你爲什麼使用,如果你已經打算多層次的是,它使更多的問題有組織的和搜索引擎友好的URL。而且,它比ASP.Net中的其他模式更像一種標準模式。這讓那些已經在其他平臺上使用MVC的開發人員更加友好。

1

N層是一個架構模式,以實現應用程序關鍵區域的重用,分離關注點和可伸縮性。 非UI層(業務,數據,外觀等)應該進行單元測試和UI不可知。

UI層僅僅是這些層中的一個天氣它是Silverlight中,ASP.NET MVC,web表單等

MVC,像MVP是設計圖案,使UI層的更好的可測試性。 ASP.Net MVC是一種支持和強制執行此模式的開箱即用框架。 這個模式早在這個框架之前就已經在使用了。

但是這只是一個UI層選擇,控制器中不應與數據庫,服務等進行交互,它們使用模型控制視圖的狀態,不應控制業務邏輯,存活,事務等。