2011-10-06 25 views
3

可能重複:
Biggest advantage to using ASP.Net MVC vs web forms優勢和ASP.NET Web表單Vs的ASP.NET MVC的缺點,一些點

我是專門閱讀本文件

http://msdn.microsoft.com/en-us/library/dd381412(VS.98).aspx 

優點和缺點:

優勢的基於MVC的Web應用程序

ASP.NET MVC框架提供了以下優點:

這使得它更容易通過將應用劃分爲模型,視圖管理複雜性,以及控制器。

它不使用視圖狀態或基於服務器的表單。這使得MVC框架非常適合想要完全控制應用程序行爲的開發人員。

它使用前端控制器模式,通過單個控制器處理Web應用程序請求。這使您可以設計支持豐富的路由基礎結構的應用程序。有關更多信息,請參閱前端控制器。

它爲測試驅動開發(TDD)提供了更好的支持。

它適用於大型開發團隊支持的Web應用程序以及需要高度控制應用程序行爲的Web設計人員。

它支持的事件模型,在HTTP保持狀​​態,有利於線的:基於窗體的Web的Web應用程序

基於表單的Web框架提供了以下優點

優勢 - 商業Web應用程序開發。基於Web窗體的應用程序提供數百個服務器控件支持的數十個事件。

它使用頁面控制器模式,爲單個頁面添加功能。有關更多信息,請參閱頁面控制器。

它在基於服務器的表單上使用視圖狀態,這可以使管理狀態信息更容易。

對於希望利用大量可用於快速應用程序開發的組件的小型Web開發人員和設計人員來說,它非常適用。通常,應用程序開發並不複雜,因爲組件(頁面類,控件等)緊密集成,並且通常比MVC模型需要的代碼少。


因爲我對MVC,但不是在Web表單一個新手,我有這方面的優點和缺點如下:?問題

  1. MVC沒有viewstate?那麼如何將數據保存在當前頁面?這似乎是一個非常大的缺點。

  2. Webform表示,提供了一個廣泛的事件模型與大量的控件,沒有MVC支持控件和事件作爲一個正常的webform?

假設我是兩個專家嗎?爲什麼我會選擇一個或另一個? 到目前爲止,關於MVC的唯一好處就是可測試性,因爲webforms中的快速應用程序開發以多種方式贏得MVC。(只是我的觀點)

現在談論RazonEngine,它似乎要回到舊的ASP,你不能使用服務器端控件?這對我有什麼好處?

+1

@Will你是在最後,它不是一個確切的重複非常錯誤的,如果你花時間閱讀的問題,也有在底部非常具體的問題。請重新打開它。 –

+1

你是對的,它不是一個確切的副本;它不具有建設性。這種問題在這裏不再可以接受。我沒有直接關閉它,而是將它作爲複製到MVC與vanilla ASP.NET的優缺點之一的其他問題之一。如果您對此有任何進一步的問題,請轉至[meta]。我會建議在詢問任何事情之前先查詢相關問題。 – Will

+0

恥辱的投票下來沒有評論,你的恥辱 –

回答

10

1)MVC沒有視圖狀態?那麼如何將數據保存在當前頁面?這似乎是一個非常大的缺點。

爲什麼要在頁面中保存東西?這就是數據庫應該做的事情。保存數據。在頁面中,您只需使用隱藏字段即可從最初存儲的任何位置重新獲取數據。而對於可以改變的數據,你有表單輸入字段,所以它會在那裏。

2)網絡表單說,提供大量的控制,那並不MVC支持控制和事件作爲一個正常的Web窗體廣泛的事件模型?

不,MVC不支持控件和事件。它支持模型,控制器和視圖。

假設我是兩方面的專家?爲什麼我會選擇一個或另一個?到目前爲止,關於MVC在我看來唯一的好處是可測試性,因爲webforms中的快速應用程序開發以多種方式贏得MVC。

這是一個沒有客觀答案的主觀問題。我可以給你的答案是:它將取決於上下文。我同意RAD在WebForms中勝出,但是你必須記住的是,這不是開發最成本的應用程序。這是它的支持和維護。因此,如果您的應用程序的編寫速度很快,那麼您的應用程序的確很快就會發布,但如果您沒有正確設計它的可擴展性,那麼這個快速應用程序開發就會慢慢變成一場噩夢,直到​​您需要重寫它爲止因爲它要花費你很多才能繼續支持它。

現在談論的RazonEngine,它似乎要回到舊的 ASP,你不能使用服務器端控件? 我的優勢如何?

您完全控制了標記,您的頁面不再受無用的ViewStates污染,最後您的標記驗證。如果你想在ASP.NET MVC中重用一些視圖部分,你可以使用部分視圖。

以下是我可以給你的建議。由於您已經是WebForms的專家,在學習ASP.NET MVC時,這對您會有很大的好處。所以學習它,通過學習它,你可能會開始親眼看到不同的優勢,並能夠自己回答這兩個問題中哪一個更適合你的問題。在這樣

+0

使用asp.net webforms的每個人都使用viewstate,實際上你甚至不知道它使用viewstate,因爲在所有服務器控件中默認啓用viewstate。 –

+0

關於最後一個答案,它是否使應用程序更快? –

+1

@Luis搜索,再次http://stackoverflow.com/questions/221944/is-there-a-performance-difference-between-asp-net-mvc-and-web-forms –

5

ASP.NET MVC應用程序的手你回控制你的應用作品和它符合HTTP/HTML的「天然」的模式。

WebForms是Web應用程序編程的抽象;設想將簡化Visual Basic程序員的過渡,這些程序員是.NET推出時的主要目標。麻煩的是,這是一個'漏洞抽象'。它使用封面下的「技巧」,使它看起來像對VB的基於事件的模型那樣簡單,比如視圖狀態和回傳。這個(以及所有那些'泄漏抽象')的麻煩是,雖然基本的東西很容易,但是一旦你嘗試去做一些不適合抽象的東西,它就會變得更加複雜。

如果您的應用程序是微不足道的和抽象的WebForms始終爲你工作,隨時能堅持下來。微軟一直很體貼,繼續支持它。

但如果你的應用程序在所有複雜的或複雜的(因爲越來越多的這些天),我建議以開放的心態看MVC。

作爲測試,採取由非微軟的背景web開發人員,讓他們鬆兩個WebForms和MVC,看看他們是用更有效率。

+2

downvote沒有評論?恥辱對你... –

+0

我同意,有些人真的應該爲自己感到羞愧,他們甚至沒有讀完整個問題和答案,他們只是認爲它可能會重複並關閉它。 –

4

ViewState是一個詛咒,對於不瞭解HTTP是一種無狀態協議的人來說,它是一個柺杖,並試圖用一種黑客解決方案來維持跨請求狀態,導致嚴重失敗。

  • 多個客戶端之間的併發消失在窗口之外。
  • 它被存儲爲隱藏字段中的大量數據,導致頁面加載大小增加。
  • 它完全依賴於POST方法,因此它會在HTML中導航。

簡單地說,它不是用戶友好的。

而且這些控件的標記也很糟糕。


關於UserControls:您可以使用Partials來模擬Controls的一些功能。

事件:您通過控制器中的操作對事件建模。


火焰戰爭開始!

+0

這是一個非常有用的答案+1。你認爲主持人關閉非常有幫助的問題和答案怎麼樣? -1表示該行爲。 –

+1

@路易斯:我不是關閉它的版主。對不起 –

+0

能否請你解釋我最後一部分的答案:它完全依賴於POST方法,因此它會在HTML中導航。我真的不明白這一點。 @Daryl Teo –