前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【翻译】WPF应用程序模块化开发快速入门(使用Prism框架)【上】

【翻译】WPF应用程序模块化开发快速入门(使用Prism框架)【上】

作者头像
liulun
发布2022-05-09 12:32:23
9180
发布2022-05-09 12:32:23
举报
文章被收录于专栏:liulunliulun

这篇快速入门文章包括如何使用Prism进行编码、探索和创建模块的示例

创建模块:

模块是实现了IModule接口的类,

可以通过声明特性来给模块命名、控制其初始化、定义依赖等

注册模块:

模块可以通过以下方式注册:

直接使用代码:

可以直接使用代码把模块注册到模块目录

这样你就可以咱找业务逻辑来决定哪些模块需要注册到系统中来

在代码中注册的模块需要引用到系统中来,不能在运行时动态加载

使用配置文件:

Prism支持通过加载一个配置文件来注册模块

这与在Silverlight中使用XAML方法注册模块的场景非常类似

在配置文件中声明模块可以让系统决定什么时候加载和初始化模块

通过监视目录

可以指定一个目录,

如果有程序集被添加到此目录中,

系统将自动发现程序集内的模块。

注册模块依赖:

模块可以依赖于其他模块,

Prism支持管理依赖。

包括控制循环引用和重复模块检测等功能。

初始化化模块:

prism支持两种初始化模块的方式:

在可用的时候初始化:

模块可以在其可用的时候即马上被初始化,

模块在应用程序启动的时候被下载,

当模块在后台线程中下载完毕后马上就被初始化了。

在需要的时候初始化:

模块可以在系统代码调用它的时候再进行初始化,

当系统代码调用模块的时候,后台线程开始下载模块

当模块下载成功后马上初始化

在后台下载模块

尽管对于silverlight应用程序来说在后台下载模块是非常有用

桌面应用程序现在也可以利用这个改进来发现和加载程序集

显示进度:

应用程序可以订阅一个“进度改变”事件

以展示下载的byte数量和下载进度百分比,

下载完成行为:

程序可以订阅一个加载“模块完成”事件,

以处理模块加载和初始化完成后的额外事件

使用不同的依赖注入容器

一般在“快速入门”的示例中都是使用Unity依赖注入容器

虽然核心类库的代码仍然“容器-未知”(container-agnostic)

但却使用了.Net4的MEF依赖注入容器插件。

这里有两个使用不同依赖注入容器的快速入门示例

MEF模块化:

此模块化快速入门示例使用MEF倚赖注入容器

Prism推荐使用MEF的声明式特性

使ModuleCatalog和MEF的ComposablePartsCatalog成为一体

Unity模块化:

此模块化快速入门示例使用Unity倚赖注入容器

场景

这一小节描述两个快速入门示例的相同场景,

每个快速入门示例都由六个模块组成

ModuleA、ModuleB、ModuleC、ModuleD、ModuleE、ModuleF

这些模块示例展示了模块是怎么被发现、下载和初始化的

模块

注册方式

初始化方式

下载方式

依赖

A

代码

直接

随程序集

D

B

目录

按需

后台

C

代码

按需

随程序集

D

目录

直接

后台

E

配置

按需

后台

F

配置

按需

后台

E

每个示例中所有的模块都是一个控件

这些控件展示了以下信息:

是否已经被初始化、下载进度、按需加载的控件可以在点击事件中初始化

这些控件还提供了一个tooltip

以显示它现在的初始化状态和被发现的信息

在快速入门示例的最下面

有一个TextBox控件

在这里展示从程序创建开始到模块加载过程中的日志记录

下图为使用模块化MEF快速入门示例的主页

模块化快速入门示例的用户界面(桌面版本)

image
image

----------------------------------------------------------------

原文是个PDF中的一部分

在这里下载的

http://mef.codeplex.com/

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2012-03-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档