4

我正在編寫一份設計文檔,我的團隊中的人員願意從ASP.NET WebForm轉到ASP.NET MVC。這很好,但我很難理解MVC如何在3層(數據層,業務層和表示層)架構中工作。我們可以說模型,視圖和控制器是表示層的一部分嗎?業務層的模型是什麼?MVC(ASP.NET MVC)帶3層架構如何一起工作?

簡而言之,MVC和3層架構如何一起工作?謝謝您的幫助!

+0

可能重複:http://stackoverflow.com/questions/899803/have-i-implemented-an-tier-application- with-mvc-correct?rq = 1,http://stackoverflow.com/questions/1135056/mvc-application-how-does-mult-tier-architecture-fit-in?rq=1,http:// stackoverflow。 com/questions/2843311 /開發一個網站在mvc和三層或n層架構師中有什麼區別?rq = 1,http://stackoverflow.com/問題/ 14451444/mvc-multi-tier-mobile-application – 2013-08-13 12:01:32

回答

17

我認爲ASP.Net MVC是在表示層。它使用的「模型」類實際上是視圖模型,它描述了視圖所需的數據結構。您的所有業務邏輯和數據訪問應與MVC模型和控制器保持獨立。

而且,一般的「最佳實踐」爲MVC是保持控制器代碼儘可能的簡單,這通常意味着將一些應用服務的進入,處理繁重的業務層。

+0

這完全是我要回答的問題。 – Ryan 2010-06-15 17:02:08

+0

恩,偉大的思想和所有:) – ckramer 2010-06-15 17:08:05

4

表示層是您的視圖。

數據層是您的模型(建議查看存儲庫模式)。

業務層仍然是什麼。

該控制器可調用業務層爲功能被加載對象時,或當請求特定視圖模型的模型可以調用業務層爲功能性,但否則保持相同。

控制器不應該有廣泛的業務邏輯 - 把它放在它自己的自包含的DLL中。

0

我知道這只是一個維基百科的鏈接,但有一些信息here關於n層與MVC架構。

1

這很主觀。 做你的團隊有意義。

MVC可以相當靈活,幾乎沒有任何的MVC框架,在所有語言,做事的方法相同。即使在.net空間。 FubuMVC,Spring.net和MS MVC都以稍微不同的方式做事。

0

A「層」是部署單元,而在MVC「層」是內碼責任的邏輯分離。

1

首先, 你不必改變爲MVC只是因爲...如果你有一些工作,我不認爲你需要。

但對你的問題,在MVC模式的模型是任何一種類代表您的業務問題,至極可以是任何類型的計算,業務規則或數據訪問類的。在MVC框架中,有一個文件夾作爲爲您提供解決方案的一種方式,因此您可以將模型類放在那裏,但您不必爲此創建不同的項目,以解決業務問題,這就是您的模型。 因此,在這裏,您可以定義任何其他模式,您可以使用存儲庫模式並使用NHibernate或實體框架來實現該模式。

視圖只是顯示和接收用戶信息的網頁。

而控制器是您的應用程序的入口,將要接收請求的類,調用必要的模型並重定向到指定的視圖。

希望我能幫上忙。

1

與MVC的N層工作得很好。只需遵循SOLID原則和其他幾個原則,您就可以保持應用程序的鬆耦合和緊密結合。

我想說,閱讀MVC 3上的書籍和觀看pluralsight.com視頻是您最大的資源。你不能一起去「做一些適合你的團隊的東西」。如果說叫Johnny和Timmy的工作夥伴想要把一大堆邏輯放到一個控制器中,就是因爲在短期內,「爲你的團隊工作」的最後期限並沒有使它變得正確/好/聰明。

我發現互聯網上有這麼多不好的文章,令人恐怖的是,有多少人被帶到一條黑暗的悲慘之路。遵循快樂的道路。使用像藝術意見的計算器,但檢查與MSDN文章,mvc書籍和pluralsight.com