首頁  >  文章  >  web前端  >  mvvm框架有哪些?

mvvm框架有哪些?

青灯夜游
青灯夜游原創
2020-11-09 11:02:2812564瀏覽

mvvm框架有:1、MVVMLight框架,實現MVVM模式的輕量級框架;2、Prism框架;3、Caliburn框架,一個MVVM類別的開源框架;4、MVVM Helpers框架;5、 Cinch框架;6、MVVMFoundation框架

mvvm框架有哪些?

#實作MVVM的框架

1.最強大且功能最多的組合框架-Prism

##下載網址:http://compositewpf.codeplex.com/

開發者:微軟patterns & practices團隊

是否支援Silverlight:是

學習資料:Composite Application Guidance for WPF and Silverlight - May 2010.chm以及Quickstarts和StockTraderRI等。

原始碼截圖如下:

mvvm框架有哪些?

Prism——之前又叫Composite Application Guidance for WPF and Silverlight,它是建構複雜的基於WPF/Silverlight企業級應用的主流框架。 Prism中有幾個比較重要的概念:

1,BootStrapper:應用程式切入點,繼承Prism的UnityContainer或MEF提供的MefUnityContainer,為系統提供一個容器。

2,Shell:它是一個外殼,透過UI元素和Region佈局頁面。它是應用程式的頂級窗口,顯示的內容一般就由View來填充,Shell本身並不知道它包含了哪些內容,所以功能則是由各個Module來具體提供。

3,View:它等同於MVP模式、MVVM模式中的View。可以透過IRegionManager注入到Region中。

4,Module:可以把一個大專案分開開來,每一個Module都包含View、資料、模型,主要用於實現複雜業務操作。

5,IModuleManager:主要用於管理模組加載,可以實現動態加載。

6,IEventAggregator:事件處理接口,實作訂閱和發布模式,這也是MVVM框架的一般做法。

Prism是一個比較龐大的組合框架,4.0引入MEF及功能調整以後變得更加強大了,現在可以說是組合框架和應用框架的統一體,而且是微軟團隊的力量,所以選它是值得保證的。


2、最強大且功能最多的應用程式框架-Caliburn

下載網址:http://caliburn.codeplex.com/

開發者:Rob Eisenberg

是否支援Silverlight:是

學習資料:我主要參考專案實例、原始碼、單元測試用例、國外一些部落格和社群。

原始碼截圖如下:

mvvm框架有哪些?

Caliburn中有幾個比較重要的概念:

1,在Actions基礎上的Commands帶有許多功能,其中包括多參數、過濾操作以及非同步呼叫。

2,窗體和控制項的生命週期事件也處理得比較好(包括activation、deactivation、shutdown等)。

3,不管是整個框架還是基於這個框架的應用程式的可測性都比較好。

4,提供了很多常用功能,這些在專案當中都比較有用。

5,除了支援MVVM模式之外,還很好的支援MVP模式以及其他的一些變種模式。

6,強大的依賴注入框架以及AOP框架,這裡可以靈活地選用其中一種。

Caliburn是一個非常強大的MVVM應用框架,對許多功能都提供了靈活且多種實現,不論是專案使用還是研究程式碼,感覺都受益頗多。

3、輕量級且適用的MVVMLight

MVVMLight是實現MVVM模式的輕量級框架(相對於Prism),能夠更好的幫助我們開發WPF 、Windows Phone、Windows 8、SilverLight相關專案。

MVVMLight的作者Laurent Bugnion 是個微軟MVP,作者將程式碼開源到Codeplex上面:http://mvvmlight.codeplex.com/。

MVVMLight的官網:http://www.mvvmlight.net/,上面有詳細的介紹和視訊文檔,有興趣可以了解下。

下載網址:http://mvvmlight.codeplex.com/

開發者:Laurent Bugnion

是否支援Silverlight:是

學習資料:除了online documentation,我主要參考專案實例、原始碼、單元測試案例、國外一些部落格和社群。另外這三篇文章非常不錯,用MVVMLight開發了一個比較完整的Silverlight企業專案

  • Part 1 - Introduction, Installation, and General Application Design Topics

  • #Part 2 - MVVM Light Topics

  • Part 3 - Custom Authentication, Reset Password and User Maintenance

#原始碼截圖如下:

mvvm框架有哪些?

MVVMLight中有幾個比較重要的概念:

1,RelayCommand:透過對Command進行封裝,讓MVVM模式在WPF和Silverlight上更容易。你只需要在ViewModel中定義好各個RelayCommand,然後在View中透過Command來綁定ViewModel中定義好的RelayCommand,就可以實現像WinForm、ASP.NET事件一樣的效果,只不過這裡是解除了UI和邏輯的強耦合。

2,Messager:MVVMLight中的Messager作用比較大,前面講了MVVM模式解除了ViewModel和View的強引用,那麼它們如何來互動呢?就是靠它來讓ViewModel和View來進行通訊的。一般我們會定義一個靜態AppMessages類別來作為通用的一個通訊類,原理就是發布訂閱模式。

3,EventToCommand:這裡就比較類似附加行為的概念,是在MVVM Light Toolkit V3中開始引入的概念。

4,ICleanup介面:當顯示某個View時,需要先呼叫Cleanup方法清除數據,這也是由於ViewModel和View的耦合隔離產生的一些必要操作。

MVVMLight是一個非常好用的MVVM框架,提供了VS和Blend的模板及智慧感知。它結合MEF使用真的感覺很輕量級且高效,而且提供了WPF和Silverlight的支持,尤其在Silverlight的支持上比較好,所以一般選擇輕量級的Silverlight MVVM模式,它比較被看好。

4、功能完整且易用的MVVM Helpers

#下載位址:http://mvvmhelpers.codeplex.com/

#開發者:Mark Smith

是否支援Silverlight:否

學習資料:http://www.julmar.com/blog/mark/以及提供的實例、原始碼及測試案例。

原始碼截圖如下:

mvvm框架有哪些?

MVVM Helpers又叫JulMar MVVM Helpers Behaviors,其中有幾個比較重要的概念:

1 、提供了MVVM模式的基本功能,包括ViewModel、View及Model之間的隔離,另外也提供了一些常用功能。

2、ViewModel的建立使用標籤的形式註入,現在也可以引入MEF。

3、IOC/DI的支持,屬性都有驗證機制,Wait Cursor的支持,當使用完viewmodel之後能及時釋放,這樣避免內存洩露。

4、提供了常用的Attached Behaviors支援。

5、訊息機制的引入,避免強引用產生的耦合。

MVVM Helpers是一個非常適用的MVVM框架,尤其是提供了MVVM常用功能 MEF Attached Behaviors,所以專案中的問題基本上都能解決。

5,強大且輕巧的Cinch

下載地址:http://cinch.codeplex.com/

開發者:Sacha Barber

是否支援Silverlight:否

學習資料:http://sachabarber.net/以及提供的實例、原始碼及測試案例。

原始碼截圖如下:

mvvm框架有哪些?

如果仔細研究其程式碼,你會發現它和上面講的MVVM Helpers有很多相似的程式碼,估計是相互參考了一番:-D。 Cinch 中有幾個比較重要的概念:

1,這個框架在沒有MEF出現之前就已經實現了ViewModel和View之間的強引用隔離,它既沒有一般IOC的配置,也沒有IView來做中轉,而且窗體和控制項的生命週期事件也處理得比較好,所以在這方面來說是非常好的。

2,提供了常用的Attached Behaviors支持,另外也提供了一些MVVM常用功能。

3,DI/IOC使用Unity實現,多執行緒的實現,避免系統出現不可預料的錯誤。

4,當使用完viewmodel之後能及時釋放,這樣避免記憶體洩露,驗證機制的加入,常用導航實作。

5,訊息機制的引入,避免強引用產生的耦合。

Cinch 是一個非常強大的框架,尤其是它比較著眼於整個應用程式的搭建,所以也比較受到青睞。

6、功能簡單易擴充的MVVMFoundation

#下載網址:http://mvvmfoundation.codeplex.com/

開發者:Josh Smith

是否支援Silverlight:否

學習資料:http://joshsmithonwpf.wordpress.com/以及提供的實例、原始碼及測試案例。

原始碼截圖如下:

mvvm框架有哪些?

MVVMFoundation中有幾個比較重要的概念:

1,Messenger:這裡主要用在各種不同的ViewModel之間通訊(例如相互關聯的ViewModel、主從ViewModel等),當然也可以擴充成ViewModel與View之間進行通訊。

2,ObservableObject:這裡相當於ViewModelBase的概念,每一個ViewModel繼承自該類,調用完成之後立即釋放,防止記憶體洩漏。

3,PropertyObserver:主要是對INotifyPropertyChanged.PropertyChanged進行封裝,這樣封裝可以精簡程式碼,同時可以防止不當操作引起的記憶體洩漏。

4,RelayCommand介面:封裝command的聲明,包括execution執行邏輯,可選的can-execute邏輯等。外部只需要實例化並Binding就可以簡單使用。

MVVMFoundation是一個非常簡單的MVVM框架,如果你覺得研究原始碼比較困難,就可以先從這個框架入手,程式碼簡單又精進。

更多程式相關知識,請造訪:程式設計學習網站! !

以上是mvvm框架有哪些?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn