2010年5月5日 星期三

開發 asp.net webform 與 asp.net mvc 不同處

開發流程

asp.net web form 開發功能時,是以網頁(Page)為重心。舉例來說,實作「新增訂單」功能時,

  1. 會想在 web application 下新增一個 Order 目錄
  2. 在Order 目錄下新增一個 AddOrder.aspx 網頁。
  3. 在 designer 上拉 UI Control,例如 GridView
  4. 將 GridView 連接到 datasource,例如設定到 datasource control。

而 asp.net mvc 在開發相同功能時,卻走下面的流程

  1. 思考Url 如何配置:例如 /Order/Create。
  2. 對應到哪一個 Controller:與上一步相關,此時會對應到 OrderController
  3. 在 OrderController 實作 Create 的 Action
  4. 在該 Action 中,取得適當的 Model (即顯示的資料)
  5. 在Action 挑選一個適當的 View,並傳遞Model(資料)到View
  6. 實作該 View

重心

由上述流程觀之,兩者開發的重心大大不同。asp.net web form 重點在網頁,而 asp.net mvc 則在 Controller。asp.net web form 會讓開發人員急著開發功能,而在designer 上設定視覺控件並連接上資料元件。asp.net mvc 開發流程卻會讓開發人員一步步地思考責任分工,最後才實作 View。

由設計流程上, asp.net mvc 的確較優,這也是為何微軟在2008到現在,花了較多的心思在 mvc 上。而asp.net web form 我認為該設計已到了一個顛峰,也就更難突破了。

asp.net web form 為了讓網頁的開發更像 VB Winform 的開發流程,特意地設計了 ViewState 的東西,讓 Web form 有了事件的概念。接著為了讓 Control 能順利地執行與開發,設計了 Page Life cycle。由 page life cycle 與 event 交織出來的複雜度,實在很難讓開發人員深入地了解。如下圖。

ASP.NET Page Life Cycle Diagram

而 asp.net mvc 返璞歸真地去除了這此 page life cycle、event 的困擾,以簡單的責任分工方式來開發設計,相對地容易。

結論

我認為,asp.net mvc 將來會成為主流。然而 web form 的生產力較高,也容易產生第三方的元件,也不會因此而消失。

沒有留言:

Share with Facebook