你或許有聽過 MVC, 也或許您正在使用 MVC. 但您知道 MVC 的歷史嗎 ?

MVC 歷史

MVC 概念

domain objects (model)presentation objects (view and controller)清楚的分

離開來。MVC使用了Observer-Synchronization機制來支持單一個 domain object

多個presentations還能保持著domain objects完全不認識 presentation objects

狀態。

View 視窗上的元件

可以是 button, label... 用於顯示 model data. 可以直接與 model 溝通.
請記得現在我們講的是80年代的視窗元件,這時候的元件只能顯示,他們本身並沒有事件偵測能力,所以不會知道User有沒有敲鍵盤,有沒有按滑鼠.

Controller 一個與 view 配對的邏輯實體

負責處理 User 的輸入, 如鍵盤、滑鼠等. 可以直接與 model 溝通

Model 一群 business objects

主要儲存資料,與DB互動. 提供服務處理業務邏輯. 完全與UI無關,而且也不知道任何的 view controller.

Application Model MVC

MVC 之後 Smalltalk MVC 中增加了一個新的 EntityApplication Model (AM)AM的加入是為了將model中有關presentation logic 的責任分離出來。AM

扮演著 model presentation objects (view and controller) 之間的中介角色,而且 controller view 不能夠直接存取 model,也不能向model 註冊 event,取而代之的只能存取 AM 與向 AM 註冊event

MVP

第一代 MVP 1996 年由 Mike Potel 發表,且被 IBM 實作在當時的下一代C++Java語言模型中。當時 Smalltalk 的下一代framework, “Dolphin Smalltalk”, 正在找尋新的 MVC 架構來補足Application Model MVC 的缺點。他們找到了 IBM 關於 MVP

應用的論文,且應用至Dolphin SmalltalkDolphin Smalltalk MVP 模式至今仍然適用。他依舊是rich-client thin-client 應用程式的基本架構,如 .NET Framework.

2006, Martin Fowler Dolphin Smalltalk使用的MVP模型命名為『Supervising Controller;另一種為 Application Model MVC的變形則命名為『Passive View』。

Microsoft所賜, 我們可以直接由 widget 捕捉滑鼠與鍵盤的事件,所以不再需要 controller 來做這件事情。另一個問題, 儘管 Application Model 是負責 View 的邏輯 (負責 push button, menu command, enabling And disabling view widgets or changing colors and such like),但是卻只能透過 Observer Synchronization view 溝通, 看起來一點也不合理. 所以 MVC 3 Role 該是需要重新定義其責任了..

View widgets 的組合

負責將 user action 轉給 presenter

目的是顯示model data

Presenter 負責顯示邏輯

下命令給 model

依據應用程式的規則變更顯示

view 之間有強烈偶合

Model 一組企業物件

負責解決問題領域

與資料庫互動

處理業務邏輯

完全不認識 view presenter

MVC MVP 的差別在哪?

MVC in ASP .NET

ASP .NET MVC Framework 自動由URL的對應設定找到controller。而 URL 必須符合 (/[controller name]/[action]/[action parameters])ASP .NET 會依照預先設定的Controller Mapping Route Table 找到 controller,該 controller 中則實作 action 方法,ASP .NET MVC Framework 會自動調用到 controller 中的 action

action 中可以進行資料的處理,並透過 RenderView 方法回覆View Client 端。

思考

  1. 為什麼要用這樣的 URL ? 有什麼優點?

  2. 如果您的 Web 要改成這樣的用法該怎麼改? URL會變成怎樣 ?

  3. Application Controller (負責 Page Flow) 在什麼情況下適合使用 ?

  4. Application Controller 還有怎樣的優點 ?

延伸

我們可以使用 MVPC 模式來建立 UI 應用嗎 ?

該怎麼使用呢 ?

文章標籤
全站熱搜
創作者介紹
創作者 Mr.Y 的頭像
Mr.Y

航向新世界

Mr.Y 發表在 痞客邦 留言(0) 人氣(732)