2010-06-24 71 views
7

似乎有很多可能的MVC配置/體系結構(MVC,MVVM,MVP,HMVC,PAC,文檔視圖...)。目前是否有任何「最佳」或最先進的MVC架構?什麼是最新思想?或者它是一個免費的和/或僅僅與任何一個開發平臺(例如用於WPF的MVVM)綁定的?MVC架構中的最新技術?

(具體我感興趣的MVC在桌面/富客戶端應用程序使用。)

+0

+1好問題。 – adatapost 2010-06-24 02:52:36

回答

6

號你不會得到什麼是「目前公認的」最佳架構達成任何協議。

這是當然不是MVC或MVP,這些架構起源於70年代末和90年代初期 MVP是對MVC的一種改進,但是在MVP發明20年後,它已經變得很清楚,它有很多很多的缺陷。這就是爲什麼有這麼多新的競爭架構。

「模型」的概念和d「觀點」被廣泛接受,並且似乎對當今所有當前的建築模型都是共同的。真正的問題是如何最好地將它們連接在一起。除了模型和視圖之外,還需要其他的東西,但是什麼?

大多數較新的體系結構傾向於通過視圖鏈接或使用數據綁定,表達式或類似機制直接綁定到模型和「其他」來實現此目的。這樣,模型中可以直接由視圖綁定的任何東西都不需要涉及「其他東西」。

我個人最喜歡的是MVVM。我喜歡這樣一個事實,即「視圖模型」在概念上只是一個「模型」,與任何其他模型的所有方面不同,除非它(通常)不會被寫入磁盤。事實上,如果沒有讓人困惑的話,那麼「MVVM」可以重新命名爲「MV」,因爲它幾乎不需要除視圖和模型之外的其他任何東西。 MVVM不僅可以用於WPF,還可以用於具有高級數據綁定功能的任何表示框架。不幸的是,這不包括GWT和Cocoa。我也喜歡MVVM,因爲它傾向於完全消除多餘或重複的代碼。

MVVM不是城裏唯一的高級玩家。建立在傳統模型和觀點基礎上的面向方面的方法和命令架構也有類似的願望。

底線是,這仍然是一個積極研究的領域,目前還沒有達成共識。 MVVM是最受歡迎的新體系結構,但不是唯一的。陪審團仍然不在。

注:要獲得較新的架構是如何在MVC和MVP改進一些想法,看看this comparison of Cocoa and WPF起始於標題爲「重複碼」,並延續到「命令體系結構」一節的結束。

+0

有沒有指向詳細描述MVVM的網站的鏈接? – 2010-06-24 12:37:39

+0

有幾個這樣的網站。 MVVM上的維基百科文章有12個外部鏈接,其中有幾個似乎是你正在尋找的。 http://en.wikipedia.org/wiki/Model_View_ViewModel警告:其中一些鏈接描述了在您的ViewModel中爲每個Model屬性創建一個代理屬性,但未能清楚地表明這是* only *必要或可取的if您的模型沒有屬性更改通知。我使用了一個實現了屬性更改通知的數據層,所以在使用MVVM時,我從來沒有任何理由創建這樣的代理屬性。 – 2010-06-25 06:19:56

3

最新的建築研究正在做這些天,胖客戶端是由谷歌做。與MVP架構。

檢查出MVP的GWT文章
http://code.google.com/webtoolkit/articles/mvp-architecture.html
http://code.google.com/webtoolkit/articles/mvp-architecture-2.html

也期待在這個http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/8b0ae5eaf84d8bc2?hide_quotes=no

也看看這個YouTube視頻http://www.youtube.com/watch?v=PDuhR18-EdM

至於回答你的問題,除了說MVC是有點過時的,我認爲這是非常主觀的去哪裏。它不是具體的平臺,不同的是你選擇的框架可能決定了建築:(

+0

GWT在桌面/富客戶端應用程序的環境中嗎?..還有,我誤解了它,還是您真的暗示MVP架構是Google的? – 2010-06-24 03:14:58

+0

@Pavel GWT非常像Java Swing。我並不是暗示他們發明了MVP(不確定是誰做的),只是他們正在推廣並發表了很多。更新我的帖子,可能會被解釋爲我的意思。 – 2010-06-24 03:20:57

+0

**自90年代初以來,MVP一直存在**並且是舊消息。如果問題是問最新的技術是什麼,MVP甚至不在運行。 MVP仍然存在MVC所具有的大多數問題。你可以做得比這更好。 – 2010-06-24 07:35:22