搜尋
首頁web前端前端問答mvvm框架有哪些?
mvvm框架有哪些?Nov 09, 2020 am 11:02 AM
mvvm框架

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
解读CRISP-ML(Q):机器学习生命周期流程解读CRISP-ML(Q):机器学习生命周期流程Apr 08, 2023 pm 01:21 PM

译者 | 布加迪审校 | 孙淑娟目前,没有用于构建和管理机器学习(ML)应用程序的标准实践。机器学习项目组织得不好,缺乏可重复性,而且从长远来看容易彻底失败。因此,我们需要一套流程来帮助自己在整个机器学习生命周期中保持质量、可持续性、稳健性和成本管理。图1. 机器学习开发生命周期流程使用质量保证方法开发机器学习应用程序的跨行业标准流程(CRISP-ML(Q))是CRISP-DM的升级版,以确保机器学习产品的质量。CRISP-ML(Q)有六个单独的阶段:1. 业务和数据理解2. 数据准备3. 模型

PHP实现MVVM架构:基本原理及应用PHP实现MVVM架构:基本原理及应用Jun 18, 2023 am 08:54 AM

随着Web应用程序的快速发展,越来越多的开发者将目光投向了各种新兴的Web开发框架和架构设计模式。其中一个备受瞩目的设计模式就是MVVM(ModelViewViewModel)架构模式。MVVM采用了一种现代化的设计模式,通过将UI和业务逻辑相分离,使得开发人员能够更好地管理和维护应用程序。此外,MVVM减少了不必要的耦合,提高了代码的可重用性和灵活性,

thinkphp是不是国产框架thinkphp是不是国产框架Sep 26, 2022 pm 05:11 PM

thinkphp是国产框架。ThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架,是为了简化企业级应用开发和敏捷WEB应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。

Python 强大的任务调度框架 Celery!Python 强大的任务调度框架 Celery!Apr 12, 2023 pm 09:55 PM

什么是 celery这次我们来介绍一下 Python 的一个第三方模块 celery,那么 celery 是什么呢? celery 是一个灵活且可靠的,处理大量消息的分布式系统,可以在多个节点之间处理某个任务; celery 是一个专注于实时处理的任务队列,支持任务调度; celery 是开源的,有很多的使用者; celery 完全基于 Python 语言编写;所以 celery 本质上就是一个任务调度框架,类似于 Apache 的 airflow,当然 airflow 也是基于 Python

6个推荐的Python框架,用于构建可解释的人工智能系统(XAI)6个推荐的Python框架,用于构建可解释的人工智能系统(XAI)Apr 26, 2023 am 10:49 AM

AI就像一个黑匣子,能自己做出决定,但是人们并不清楚其中缘由。建立一个AI模型,输入数据,然后再输出结果,但有一个问题就是我们不能解释AI为何会得出这样的结论。需要了解AI如何得出某个结论背后的原因,而不是仅仅接受一个在没有上下文或解释的情况下输出的结果。可解释性旨在帮助人们理解:如何学习的?学到了什么?针对一个特定输入为什么会做出如此决策?决策是否可靠?在本文中,我将介绍6个用于可解释性的Python框架。SHAPSHapleyAdditiveexplanation(SHapleyAdditi

Microsoft .NET Framework 4.5.2、4.6 和 4.6.1 将于 2022 年 4 月终止支持Microsoft .NET Framework 4.5.2、4.6 和 4.6.1 将于 2022 年 4 月终止支持Apr 17, 2023 pm 02:25 PM

已安装Microsoft.NET版本4.5.2、4.6或4.6.1的MicrosoftWindows用户如果希望Microsoft将来通过产品更新支持该框架,则必须安装较新版本的Microsoft框架。据微软称,这三个框架都将在2022年4月26日停止支持。支持日期结束后,产品将不会收到“安全修复或技术支持”。大多数家庭设备通过Windows更新保持最新。这些设备已经安装了较新版本的框架,例如.NETFramework4.8。未自动更新的设备可能

如何在PHP中使用AOP框架如何在PHP中使用AOP框架May 19, 2023 pm 01:21 PM

AOP(面向切面编程)是一种编程思想,用于解耦业务逻辑和横切关注点(如日志、权限等)。在PHP中,使用AOP框架可以简化编码,提高代码可维护性和可扩展性。本文将介绍在PHP中使用AOP框架的基本原理和实现方法。一、AOP的概念和原理面向切面编程,指的是将程序的业务逻辑和横切关注点分离开来,通过AOP框架来实现统一管理。横切关注点指的是在程序中需要重复出现并且

KB5013943 2022 年 5 月更新使 Windows 11 上的应用程序崩溃KB5013943 2022 年 5 月更新使 Windows 11 上的应用程序崩溃Apr 16, 2023 pm 10:52 PM

如果你在Windows11上安装了2022年5月累积更新,你可能已经注意到你一直使用的许多应用程序都不像以前那样工作了。强制性安全更新KB5013943正在使某些使用.NET框架的应用程序崩溃。在某些情况下,用户会收到错误代码:0xc0000135。可选更新中报告了类似的问题,但并不普遍。随着2022年5月的更新,该错误似乎已进入生产渠道,这次有更多用户受到影响。崩溃在使用.NETFramework的应用程序中很常见,Discord或MicrosoftTeams等

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!