2010-10-07 44 views
3

我想了解ASP.NET WebForms和MVC從理解所使用的設計模式的角度。 雖然MVC看起來像FrontController的實現,但我對WebForms頁面不太確定。所以,如果有人能幫助解決以下問題,我將不勝感激。ASP.NET webforms和MVC基於哪種模式? PageController,FrontController?

  1. WebForms是否基於PageController模式?

  2. 前端控制器和頁面控制器都是MVC的修改版本嗎?

  3. WebForms也可以稱爲MVC的特殊情況,其中控制器和視圖之間的區別是模糊的嗎?

最後,網上有沒有很好的資源可以提供關於這個話題的詳細參考?

回答

2

繼你的問題的順序:

1 //沒有。 Webforms基於「智能UI」模式,即通過編寫事件處理程序來控制應用程序。智能用戶界面有其問題,但是當完全基於桌面時,它確實可行,因爲沒有大型「虛構」被引入到框架中以使其工作。然而,對於網絡來說,它處理無狀態的HTTP,引入了一個重要的小說,主要是以ViewState的形式,當頁面被髮送到客戶端瀏覽器時,它保存所有控件的狀態。因此,Web表單在您的應用程序中引入了一層複雜的功能,只能維持這個缺陷。 MVC消除了這種小說。

虛構實質上是這樣說的:我們會假裝我們和客戶之間不存在HTTP。

2 // MVC刪除小說併爲您提供裸體HTTP。然而,它更多基於Front Controller而不是Page Controller模式,因爲Page Controller模式使得獨立於Http請求測試控制器很困難,而MVC專門設計用於使控制器可獨立於HTTP請求進行測試。換句話說,MVC被設計用於在控制器上進行單元測試,而不是集成測試。

MVC重點關注模型與視圖的分離,而Webforms /智能用戶界面不會做出區分。

我想你可以說,爲了消除ASP.NET MVC中的頁面控制器,ASP.NET重構了HTTP在控制器上對「正交屬性」的影響,這不是我被引導相信的方式頁面控制器模式起作用。但是,不要在此引用我,我是這些東西的學生,而不是專家。

3 //不一定不是!如上所述,webforms是虛構的智能UI,而不是任何形狀或形式的MVC。你可以通過一些箍環來使它們成爲MVC ish(a Dino Esposito),但這又是一個幻燈片。如果你有ASP.NET MVC,爲什麼沉迷於小說?

最後的問題。我從webforms轉換到mvc的原因是Wizard Server Control。它的「事件模型」是殘酷的一件事是,在面對一切,我需要實現蠅(更不要說其他的屬性,方法......呸的窒息擴散!)。

再過10天我寫了一個基地WizardController現在我的嚮導是美麗,優雅和簡單的事情。我高興地都扔有3個月的工作對奇才的WebForms將其轉換爲我的新的迷你嚮導框架。這是很糟糕的。

4

ASP.NET MVC基於Front Controller設計模式。傳統的ASP.NET WebForms基於微軟的努力,通過隱藏和抽象很多部分來將Windows Forms事件模型引入Web,您可以應用page controller模式,但它不是開箱即用的模式。