2010-08-25 46 views
4

可能重複:
What’s your choice for your next ASP.NET project: WebForms or MVC?在什麼情況下,你比較喜歡ASP.NET webforms而不是MVC?

你能列舉一些原因,這將使你使用ASP.NET web表單的一個新的項目,而不是MVC?我聽到很多關於相反的事情,但不是通過webforms完成更容易或更好的事情。我並不是在討論開發者偏好,而是在於技術特徵以及他們如何映射到項目特徵。

+2

有一天,豬會飛,地獄會凍結,stackoverflow.com將不會再得到webforms與mvc問題。 :/ http://stackoverflow.com/search?q=mvc+vs+webforms – jfar 2010-08-25 13:19:09

+0

我沒有找到答案,我標記爲接受任何其他問題。隨意關閉,我覺得我問了一個理由,並得到了一個很好的答案。相似的事實並不總是意味着它是同一個問題。 – Slavo 2010-08-26 11:11:18

+0

SO關閉無人機,歡迎光臨。保存現金在Atwood口袋 – Jonathan 2010-08-27 10:30:07

回答

7

WebForms唯一的參數是需要設計高度複雜(讀取雜亂)的接口與大量相互關聯的元素,全部或部分應該對其他元素的變化作出反應。

一個典型的例子是某些企業應用程序(來自SAP或更小的供應商)。它們通常具有與瘋狂相接的界面。如果您使用的是MVC,則您將很難嘗試使用JavaScript手動同步控件。藉助WebForms,它變得非常容易。

構建這樣的接口是否是一個好主意完全是另一回事。


在WebForms元素事件觸發頁面回發。他們訪問相同的網址並進行統一處理。這使得架構非常具有可擴展性。

使用MVC來實現這一點,您必須設置一堆服務URL來處理來自不同控件的帖子,然後處理這些帖子並相應地更新視圖模型。這一切都涉及很多欺騙和雜耍。並不是說它不可行 - 它是,但不是大規模。這種方法不可擴展。遲早你會達到理解你需要建立自己的框架,像WebForms這樣的有狀態的面向對象的HTML/HTTP抽象方向。

+1

+1迄今爲止唯一的答案,實際上回答實際問題 – PHeiberg 2010-08-25 09:49:05

+0

我不知道這是否真的如此。你意味着在那裏發回並「同步控制」。根據我的經驗,這對於複雜的Web界面絕對不可接受,所以幾乎總是使用某種形式的JS。這是完全兼容的,實際上在MVC環境中是有利的 – Jonathan 2010-08-25 09:55:17

+0

總之,最大的優勢是能夠在需要時做回發。有道理,謝謝。 @Jonathan爲什麼在MVC中使用JS而不是webforms是有利的? – Slavo 2010-08-25 11:34:13

2

個人而言,我發現MVC非常適合管理頁面。因爲它們通常有一堆表格,並且用於數據輸入和編輯。 MVC是爲這些東西「製造」的,所以它的製作速度非常快。

webforms我用於更復雜的事情,如網站的用戶端。我製作的網站顯示人們可以學習的課程。註冊一個課程是一個5步程序,在MVC中,我沒有真正的想法如何去做。我確信它可以在MVC中完成,但我認爲它在webforms中更好/更快。

但是最後我還是喜歡MVC。它感覺工作起來非常乾淨。

0

這取決於!

WebForms和MVC之間的區別是如果你可以TDD和控制完整的標記。

+1

不完全是答案。它依賴於什麼? – Slavo 2010-08-25 11:34:49

+0

這取決於您擁有哪種類型的項目以及開發團隊的工作方式。 – 2010-09-10 21:34:06

2

我唯一會考慮在新項目中使用Web窗體的時候,是否有爲Web窗體創建的組件,它解決了使用MVC解決更難解決的特定問題。

1

除了一些不應該被禁止的技巧之外,我不能再看到Webforms比MVC更有優勢了。

[本來我認爲MVC與webcontrols不兼容,所以希望使用Dundas圖表控件是不可能的。根據您的要求,使用webforms會是一個很好的參數。但我相信這不再的情況下,並且無論如何,您可以在你的MVC項目作爲最壞情況的WebForms]

3

可能推我(回)有幾件事情對的WebForms:

  • 我需要生成一些可以被主要不是Web應用程序開發人員(例如WinForms程序員)接管的東西,並且可以通過Visual Studio的Forms Designer大幅維護應用程序。 IDE支持使開發模型更接近於WinForms。
  • 需要查看Ajax-y的應用程序,但由不會學習JavaScript的人維護。我認爲像UpdatePanel這樣的東西(雖然在很多方面都很糟糕)對於這種情況來說確實很不錯。
  • 可能是因爲IDE和ASP.NET AJAX而導致的某種類型的demoware。在沒有太多想法的情況下,相當快地敲掉一些合理的智能屏幕。
  • 我需要一個功能強大的CMS並需要保持在.NET中。在這一點上,它看起來像在WebForms中比在MVC中有更好的選擇(儘管希望這正在改變)。
  • 我正在與一個已經熟悉它並且不會學習MVC的團隊合作。

其中,可能CMS是我現在可以想到的要求,實際上使我使用WebForms。

+0

謝謝。對於前三點,我猜LightSwitch會是你的方式:) – Slavo 2010-08-25 11:36:28

3

如果你只知道的WebForms MVC附帶了一個學習的過程,所以你將需要花費相當長的一段時間的訓練(或風險進行認真的安全性和性能的錯誤)

你需要一個小小的應用程序現在如果您選擇反模式,那麼在webforms中構建一個不需要的模擬應用程序可能會更快。例如。 SqlDataSource,邏輯在你的代碼後面等。

豐富的控件 GridView是一個很好的控制,有排序等所有內置爲你只需少量代碼,只要你的自定義要求很小。

缺乏Web開發經驗 Web表單更容易。它需要更多關注你的盤子。對於一個新手來說,這很好,因爲它很難出錯。儘管如此,如果你知道自己在做什麼,或者有時間學習,並且想要建立一個持久的站點,那麼MVC是非常好的。還有更多樂趣。

我會補充說,沒有什麼是錯誤與web窗體。完全可以用它來構建高性能的應用程序。自從它首次推出以來,時代已經發生了變化,MVC已經很好地解決了這些變化。

相關問題