PRISM基本知识

Prism框架是用于创建低耦合,易维护,易测试的应用的。最初由微软开发,后提交给开源社区由开源社区维护的开源项目。每个平台都有独立的版本。

Prism实现了一系列的设计模式,有助于编写well-structured和可维护的XAML应用程序,包括MVVM,依赖注入,命令,EventAggregator等。Prism的核心功能是方便的在不同平台共享代码。

1.Prism Key Concepts

Modules. 模块是可以独立开发/测试/部署的功能包。

Module catalog. 在组合应用程序里(composite application),模块可能需要在运行时加载。在Prism里,module catalog用于指定哪些模块需要被加载,以及按什么顺序加载。module catalog被ModuleManager和ModuleLoader组件使用。Prism允许使用不同的方式指定module catalog:代码,xaml,或者用配置文件指定。

Shell. shell是应用程序外壳,定义了应用程序的总体布局和结构,但它通常不知道确切的模块,它通常实现通用的服务和基础架构,具体的功能则是在具体的模块里面实现。shell还提供了顶层的窗口和视觉元素,然后它会嵌入由具体modules提供的不同的UI

View. 视图封装了应用程序的特定的功能或者功能区域,用于MVVM模式。MVVM将UI和显示逻辑&数据分离,View用于封装UI,并定义用户交互行为,从而允许view独立于底层应用程序的功能进行更新和替换。view通过数据绑定与view model交互。

View models. 视图模型是封装应用的表现逻辑和状态的类,它是MVVM模式的一部分。View model封装了许多功能,为view中可以绑定的控件定义属性,命令和事件。

Models. 模型封装了应用程序的数据和业务逻辑,它是MVVM模式的一部分。model封装数据,相关的验证和业务规则,以确保数据的一致性和完整性。

Commands. 命令用于封装应用程序的功能,允许它们独立于应用程序的UI进行定义和测试。它们可以被定义成command objects或者view model中的command methods。(They can be defined as command objects or as command methods in the view model. ) Prism提供了DelegateCommand classs和CompositeCommand class,后者用于表示一起触发的命令集合。

Regions. 区域是应用程序UI(在shell上或者view内)上定义的逻辑占位符,用于显示view。Region允许对应用程序UI的布局进行更新,而不需要更改应用程序逻辑。许多通用控件都可以被用作region,运行view被自动的显示在它里面,比如ContentControl, ItemsControl, ListBox, TabControl. View可以自动的或者通过编程被显示在region里。Prism also provides support for implementing navigation with regions. Regions can be located by other components through the RegionManager component, which uses RegionAdapter and RegionBehavior components to coordinate the display of views within specific regions.

Navigation. 导航是指应用程序把[用户与应用程序交互的结果]或者[应用程序内部状态的变化]同步到UI的过程。Prism提供了两种导航方式:基于状态的导航(state-based navigation)和视图切换导航(view-switching navigation).视图切换导航使用统一资源标识符(URI)为基础的导航机制与Prism region相结合,允许实现灵活的导航方案。

EventAggregator. 事件聚合。复合应用程序中的组件通常需要以松耦合的方式与应用程序中的其他组件和服务通信。为此,Prism提供了EventAggregator组件,它实现了一个pub-sub事件机制,从而允许组件发布事件和其它组件订阅这些事件不需要引用对方。EventAggregator通常用于运行定义于不同模块中的组件间的交互。

Dependency injection container. 依赖注入(DI)模式就是利用Prism允许管理组件间的依赖关系。依赖注入允许组件依赖关系在运行时执行,并支持可扩展性和可测性。Prism被设计成和Unity或MEF一起工作,或通过servicelocator和任何其他依赖注入容器一起工作。

Services. 服务是封装非UI相关功能的组件,如日志记录、异常管理和数据访问。服务可以由应用程序或在一个模块中定义。服务通常在依赖注入容器中注册,以便它们可以按需要定位或构建,并由依赖于它们的其他组件使用。

Controllers. 控制器是用来协调将要在应用程序UI的region中显示的view的构造和初始化的类。控制器封装决定哪个视图被显示的逻辑。该控制器将使用PRISM的视图切换导航机制,它提供了一种可扩展的基于URI的导航机制,用于协调区域内视图的构造和放置。程序控制器模式定义了一个抽象映射到这个责任(The Application Controller pattern defines an abstraction that maps to this responsibility.)。

Bootstrapper. 引导程序组件用于初始化Prism的各种组件和服务。它是用来初始化依赖注入容器来注册应用层组件和服务的。它也可以用来配置和初始化module catalog和shell’s view和view model or presenter。

Example

猜你喜欢

转载自blog.csdn.net/hetoby/article/details/77449506