2009-08-06 112 views
3

自2007年(12月)第1版以來,我一直在學習,玩ASP.NET MVC並與之合作。自2008年以來,我一直都很喜歡它,我一直支持它。如何在ASP.NET MVC中實現關注的分離?

但是我一直聽到和閱讀「ASP.NET MVC強制嚴格區分問題」,包括Rob Conery,Scott Hanselman,Phil Haack和Scott Guthrie在Professional ASP.NET MVC 1.0中閱讀它。

我不明白的是執法。如果我定義我的控制器與只不過

return View(); 

,並在視圖(ASPX視圖引擎),我做的一切行動? (數據獲取,業務邏輯,決策,渲染等)

它是如何(ASP.NET MVC)ENFORCE我分開的擔憂?

我認爲這是一個公然的誇大,它應該是「建議關注分離」。

你能說服我強制執行嗎?

+1

對沉默downvoter:正如該網站所說......「提供了一個downvoting的答案」 – 2009-08-06 19:35:20

+2

我是沉默downvoter。我的感覺是,這個問題增加了Stack Overflow的價值。從你的例子中可以清楚地看到,所有的邏輯都在ASPX頁面中,「執行」可能不是文檔使用的正確術語。 所以,是的,你是對的。該框架沒有強制執行嚴格的分離。但我不確定爲什麼這是有價值的信息,或者爲什麼任何人都會關心查看MVC是強制執行還是鼓勵分離問題。 這感覺就像把頭髮分開那些不重要的東西,因此我的downvote。 – JamieGaines 2009-08-06 19:45:37

+0

一詞......當然,它不能讓你有一個關注的分離。它是您可以選擇遵循與否的指南或「框架」。如果我有我的蹩腳的100分,我也會投票。 – YetAnotherDeveloper 2009-08-06 19:51:49

回答

4

我不認爲它強制它,所以他們可能mispoke。就像你說的那樣,「建議」或「提倡」是一個更好的詞。

+1

或者「啓用」 – 2009-08-06 19:37:47

+0

謝謝。在第86頁的Microsoft的4位主要人員的「專業ASP.NET MVC 1.0」中,第27行指出:「MVC模式的一個定義特徵就是它有助於在不同組件之間強制執行* – 2009-08-06 19:40:59

+2

我認爲關鍵在於*幫助*強制 – 2009-08-06 19:42:37

7

最主要的是它的在右腳開始 - 即一個單獨的控制器和視圖。如果你選擇做一些瘋狂的事,沒有人會阻止你。除希望的同行評審外。和常識。

但對比web表單,在那裏你必須嘗試非常混合的關注。

+0

好點,我同意。 – 2009-08-06 19:36:10

+0

更不用說那些討厭你做壞事的討厭的SqlDataSource控件。 – 2009-08-06 19:36:48

2

當然,你可以在視圖中做所有事情。你只是一個糟糕的程序員,根本不會遵循MVC模式。

我也很確定你有一些東西不能在做在視圖中,只能在控制器中。不過,我可能會對.Net和Rails感到困惑。

+0

我**在視圖中做不到的事情是什麼?這是我的問題的一部分.. – 2009-08-06 19:38:00

+0

我不認爲ViewState的。這是你不能做的事情。 :) – rball 2009-08-06 19:54:08

+0

這是一個毫無疑問的改善,我同意。 – 2009-08-06 19:59:04

2

對於你想要的那種「執法」,你會建議什麼機制?當查看代碼的圈複雜度超過某個閾值時,框架是否應該發出警告?該框架應該在你的源代碼上運行類似lint的東西,並且當你執行un-MVC的事情時(無論這些東西是什麼)

更重要的是,什麼是好處所有的手指搖擺?我們是不是試圖編寫讓我們的用戶滿意的應用程序?

+0

看到所有新手都在編寫壞代碼,我們有些人需要使用或重寫,是的​​,我希望有東西拍打你的手腕。 – 2009-08-06 19:55:21

+0

原因問我想如何實現這種手腕拍打的問題,我想,以任何有意義的方式來說明這樣做的難度。 – 2009-08-06 20:12:13

+0

編譯器tim警告將是未來的一步。 – 2009-08-06 20:46:18