1 Prism概述

架构目标

  • 以模块化方式开发应用,这些模块被独立团队用WPF技术开发,集成,部署,这是使用Prism的最大好处。
  • 最小化交叉团队依赖。允许团队在不同领域专业化,比如UI设计,商业逻辑实现,基础代码开发
  • 架构用于提升不同团队(开发模块)的重复利用性。
  • 通过抽象出可在不同队伍使用的公共服务提升应用质量
  • 提升持续集成能力

关键概念

模块(Module)

所谓模块是指实现某个特定功能的包,一般是一个独立程序集。该包可以被单独开发,测试,部署。实现多人协作开发,解耦,以及复用。一个应用可以包含一个或多个模块。

模块目录(Module Catalog)

在组合式应用中,应用程序需要找到所有找到的模块,这里就需要使用模块目录。正如目录本身含义,目录是用于声明以及索引内容区域。模块目录用于标明什么模块被导入,什么时候导入,以什么顺序导入。我们可以使用多种方式指明模块目录,如代码,XAML或者配置文件。

壳(Shell)

所谓壳就是应用程序导入模块的容器,该容器不了解模块的具体内容。Shell确定整体布局以及应用程序组织架构。一般一个项目仅包含一个Shell,但支持多个Shell。

域(Region)

所谓域是定义在应用程序UI(如Shell或者Views)中的逻辑占位符,简而言之,为view提前占座。有很多控件可充当占位符,如ContentControlItemsControl, ListBox, TabControl。Prism使用域进行导航,可以使用RegionManager获取域,该RegionManager使用RegionAdapter和RegionBehavior协调特定域中view的显示。

事件聚合器(Event Aggregator)

所谓事件聚合器是一套实现发布-订阅(pub-sub)事件的机制。它允许某个部件发布一个事件,另一个部件订阅该事件,这个过程二者不需要添加任何指向对方的引用,完全解耦。常用于组件与组件或者组件与服务间的通信。

服务(Services)

所谓服务是封装非界面功能的组件,该服务不包含界面渲染,组织功能。服务一般定义在主项目或者一个单独的模块项目中。通常需要在依赖注入容器中注册,供其他模块使用。服务分为三个级别:

  • 核心级,由Prism提供,主要包括日志服务,域管理服务,模块服务。适用于所有Prism程序。
  • 应用级,由应用程序提供,应用级服务一般是基础服务,比如硬件层交互服务,数据库读写服务。一般在独立程序集定义,用于整个程序。
  • 模块级,由模块开发者提供,一般定义在该模块内,只用于单个模块。

引导程序(BootStrapper)

所谓引导程序就是连接应用程序,Prism库服务以及依赖注入容器的胶水。在引导程序中你需要完成初始化Shell,配置模块目录,配置拦截业务实现等功能。依据不同依赖注入容器,我们可以创建不同类型的引导程序,主要实现方法是继承UnityBootstrapper或者MefBootStrapper。

架构图

Shell、Region、View

所谓Shell就是应用程序主界面,简单来说就是UI容器。每个Shell可包含多个域(Region),每个域可包含多个视图(view)。

posted @ 2020-11-01 22:51  饮冰少年  阅读(289)  评论(0编辑  收藏  举报