2008-11-21 76 views
7

我最近注意到了很多關於asp.net MVC的討論,但是我還沒有遇到過關於什麼時候,何地或爲什麼要在WebForms上使用它的明確或有說服力的描述。何時以及爲什麼我應該考慮asp.net MVC?

比方說,我想建立一個小型的網絡應用程序,允許一個人在網上做廣告。該網站將有4個用例:

  • 搜索廣告
  • 查看房源
  • 查看項目
  • 廣場的廣告

假設:

  • 我對單元測試我的控制器並不特別感興趣。該頁面將正確呈現項目列表,否則將不會。
  • 我對更多控制HTML標記感興趣。
  • 我對使用最新的buzz技術並不感興趣。
  • 我有興趣使用最適合該作業的工具,從生產力,性能,可維護性等角度考慮最終解決方案的簡單性。
  • 我不想爲解決一些細微差別而努力工作。

所以,我的問題是這樣的:

  • 什麼是兩種模式之間的根本區別是什麼?
  • 在哪種情況下比另一種更好?
  • 什麼是asp.net MVC的陷阱(我知道與WebForms的陷阱)
  • 對於我們的示例應用程序,我會通過使用asp.net MVC而不是WebForms獲得什麼?
  • 對於我們的示例應用程序,使用asp.net MVC而不是WebForms會失去什麼?
  • 在同一個小應用程序中混合和匹配模型是否可行?

感謝任何花時間提供答案的人。

回答

10
  • 這兩個模型之間的根本區別是什麼?

的WebForms試圖通過允許您重用大量預製的控制,並通過隱藏_VIEWSTATE機制僞造的Web應用程序的狀態,以模仿的WinForms開發。

MVC是一種旨在幫助您分離數據(模型),業務邏輯(控制器)和演示文稿(視圖)的模式。它更堅持網絡的真實性質:RESTful URL,無狀態。

  • 在哪種情況下比另一種好?

在我看來,對於一個Intranet應用程序使得控制大量使用,WebForms的可以減少開發時間是有用的,因爲得益於設計師可以非常快速地創建你的用戶界面,讓框架管理的應用的自動狀態。

對於任何其他項目,尤其是公共網站,甚至是小型項目,我都認爲MVC是一條路。

  • 什麼是與ASP的陷阱。淨MVC(我知道有 的WebForms的陷阱中)

我會說有一些學習曲線,充分了解MVC模式,它的力量。另外,由於該框架仍處於BETA中,因此您可以期望API在發佈之前經歷一些較小的更改。

由於JavaScript在MVC中並未隱藏,因此如果您不熟悉JavaScript,也需要一些時間來學習。 jQuery大大簡化了這一點。

  • 對於我們的示例應用程序,你會得到我用asp.net MVC代替 的WebForms?

你會獲得對HTML標記和JavaScript行爲,關注清潔分離和一些容易測試的代碼庫(即使看起來你不感興趣的單元測試它)更好的控制。

  • 對於我們的示例應用程序,你會失去我用asp.net MVC代替 的WebForms?

您會失去構建頁面和應用程序狀態管理的「拖放」快捷方式。

  • 是否可行相同的小 應用程序中的混搭模式?

在某些方面,似乎是。

我建議您觀看Phil Haack的this talk,他對框架進行了很好的概述,並邀請Jeff Atwood談論他如何使用它構建StackOverflow。

他解釋了SO是如何將一些WebForms控件用於呈現在視圖中的CAPTCHA的。

+0

優秀的答案! – 2008-11-26 21:15:54

2
  1. ASPNET MVC和WebForms的最大區別是頁面的生命週期,沒有困難(不必要的)回發,乾淨的編碼,enz。
  2. 對此沒有規定
  3. ???
  4. REST的完整的網站,邏輯的分離
  5. 設計時支持,不能使用第三方器WebControls
  6. 請不要混在一起了。如果你真的想使用你可以使用MVP模式的WebForms模型,Billy McCafferty寫上設計模式

我重新設計了一些來自MVP模式我的應用MVC模式,而不是因爲方位的文章MVC更好,但我想使用MS提供的最新技術(模式本身很舊)。

3

主要區別在於MVC更像是編程世界其餘部分使用的「常規」網絡開發,而標準ASP.NET旨在使Windows開發人員成爲Web開發人員容易死腦筋。我通過學習Ruby on Rails學習了Web編程,而MVC似乎正在成爲Rails的.NET版本。

MVC更多地圍繞標準合規性,不引人注意的javascript和與普通ASP.NET分離關注點。您需要了解HTML和CSS如何協同工作。當你掌握MVC時,你會學到更多的JavaScript。 MVC對我來說最大的優點之一就是你可以使用jQuery來做一些令人驚訝的AJAX東西,比在普通的ASP.NET中更容易和更好。

如果您剛剛學習網頁開發,那麼我強烈建議您學習MVC。您將來可以將至少一些新技能轉移到其他框架。

如果你正在尋找哪些學習快速獲得Web開發工作,那麼我將不得不強烈建議ASP.NET。

一旦MVC RTM'd,我認爲我們將看到一個緩慢和穩定的採用曲線,隨着成熟,MVC可能成爲用ASP.NET創建網站的主要框架。至少我希望如此!

相關問題