⌨️ WPF MVVM实战系列教程
Prism框架介绍
Prism框架是一个基于 WPF 的复合应用程序开发框架。原名Composite Application Guidance for WPF,最初是由Microsoft patterns & practices团队创建,它的目的是为了构建松耦合、可维护且可测试的 XAML 应用程序。
支持 WPF、.NET MAUI、Uno Platform 和 Xamarin Forms 平台,每个平台均提供独立版本,且开发时间线相互独立。
Prism 实现了多项有助于编写结构良好且易于维护的 XAML 应用程序的设计模式,包括 MVVM、依赖注入、命令、事件聚合器等。
Prism的核心功能基于跨编译的.NET Standard和.NET 4.5/4.8库共享代码库实现,平台特有的功能则在目标平台的对应库中实现,Prism还实现了这些模式与目标平台的深度集成。
例如Prism for Xamarin Forms提供的导航抽象层既支持单元测试,又基于平台原生导航概念与API构建,使开发者能充分利用平台特性,同时保持MVVM架构的规范性。
Prism 6.3版本是Microsoft patterns & practices 团队维护的最后一个版本,后续将代码放到社区,Prism 7.0版本是社区维护的第一个版本,目前最新是Prism 9.0版本。
Prism 9 标志着应用程序开发领域的一次重大飞跃,其核心在于致力于实现跨平台API的统一。这一突破将为开发者开启无限可能:既能将代码从旧版应用程序中迁移出来,也能实现不同应用开发平台间的无缝转换,从而最大化代码复用率,同时大幅降低开发成本。
说明:稳定项目建议使用Prism 8.1.97版本,Prism9商业使用涉及收费问题,以及存在不稳定性。
注意: MVVM只是Prism框架的一部分。这里放到MVVM系列里来讲,是因为我们需要有前面MVVM的基础,才能更深入的掌握Prism框架。
Prism项目地址:
https://github.com/PrismLibrary/Prism
Prism WPF示例代码地址:
https://github.com/PrismLibrary/Prism-Samples-Wpf
核心设计理念
Prism 的核心设计理念是 "复合应用(Composite Application)" ------ 将应用拆分为多个独立的 "模块(Module)",模块间通过统一的 "通信机制" 协作,最终聚合为完整应用。其核心价值包括:
- 松耦合:模块独立开发、测试、部署,依赖通过接口而非具体实现;
- 可扩展性:支持模块动态加载 / 卸载、功能插件化;
- 标准化:统一 MVVM 落地方式、导航、通信、依赖注入等开发规范;
- 问题解决方案:内置对 "多视图管理、区域布局、事件通信、命令绑定" 等 WPF 常见难题的成熟解决方案。
何时需要使用Prism框架
Prism这个框架的最初目的是为了方便我们构建强大的XAML应用程序,它包含的功能比较多,MVVM只是它的一部分功能。
使用Prism框架没有硬性规定,但是如果我们只是用到它的MVVM功能,推荐使用CommunityToolkit.MVVM包,它更轻量级。
Prism更偏向于大型项目,例如多人协同时需要进行模块化开发。
Prism中涉及的概念需要我们对常用的设计模式有一定的了解,例如,模块化/组合式开发、MVVM、观察者模式、中介者模式等等。
大部分在前面的文章中已经介绍过,关于模块化,可以参考下面的文章:
https://en.wikipedia.org/wiki/Modular_programming
正是因为使用了大量的设计模式,一部分初学者刚接触Prism框架时,会难以理解其中的概念。都会有一个疑问,就是:这里为什么是这样调用/设计的?
我的建议是循序渐进,前期不理解没关系,可以根据我文章中的内容和示例代码,多理解几遍,然后再自己尝试用一些小例子去进行演练,慢慢就能理解其中的原理。
也不建议新手刚入门就使用Prism框架进行开发,至少需要一定的软件开发基础,并且理解MVVM开发模式,再去使用Prism框架。
还是前面的那句话 ,框架的作用是为了帮我们更好的解决问题、实现需求,提升可维护性,切勿本末倒置。
Prism框架包含的核心组件功能
1. Commands/命令
2. Dependency Injection/依赖注入
3. Dialog Service/对话框服务
4. Event Aggregator/事件聚合器
5. Mvvm
6. Modularity/模块化
7. Navigation/导航
在后续的文章中,我会详细介绍所有核心组件的功能。