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

这篇快速入门文章包括如何使用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快速入门示例的主页

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

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

原文是个PDF中的一部分

在这里下载的

http://mef.codeplex.com/

您的推荐是我把这个系列写完的动力~

时间: 2024-08-01 03:33:13

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

【翻译】WPF应用程序模块化开发快速入门(使用Prism+MEF)【下】

索引 [翻译]WPF应用程序模块化开发快速入门(使用Prism框架)[上] [翻译]WPF应用程序模块化开发快速入门(使用Prism+MEF)[中] 系统启动 系统使用Bootstrapper类型来启动程序,并初始化主窗口 /// <summary> /// Interaction logic for App.xaml /// </summary> public partial class App : Application { protected override void On

《iOS9开发快速入门》——第1章,第1.1节iOS 9新特性

1.1 iOS 9新特性 iOS9开发快速入门 2015年6月,苹果公司发布了最新的iOS 9操作系统,该系统在上一版的基础上做了很多的改进.本节将讲解iOS 9带来的新特性以及改进. 1.1.1 Siri语音助手智能化 Siri语音助手的智能性能主要表现在强大的内容检索和管理方面,支持快速自动整理历史文档:根据使用场景的不同,为用户提供内容和服务:来电联系人匹配,相关内容推荐甚至是第三方应用的内容检索.具体到使用场景方面,Siri可以自动整理历史照片.联系人历史邮件往来.健身应用下接入电源开启

《iOS9开发快速入门》——第1章,第1.3节编写第一个iOS 9应用

1.3 编写第一个iOS 9应用 iOS9开发快速入门 在Xcode 7.0安装好后,就可以在Xcode 7.0中编写iOS 9应用程序了.本节将主要讲解Xcode 7.0的项目创建.编辑.连接.运行.iOS模拟器介绍.编辑界面等相关方面的内容. 1.3.1 创建项目 一个iOS应用的所有文件都在Xcode项目下,项目可以帮助用户管理代码文件和资源文件.以下将主要讲解何如在Xcode 7.0中创建一个名为Hello的项目. (1)单击打开Xcode 7.0,弹出一个Welcome to Xcod

《iOS9开发快速入门》——第2章,第2.4节调试程序

2.4 调试程序 iOS9开发快速入门 在iOS 9程序开发中,错误是不可避免的,特别是在使用新的语言或新的开发工具时.遇到了错误就要系统地查找到底是哪里做错了.这种查找程序错误的过程叫做调试.以下主要讲解如何在Xcode 7.0中调试Hello项目的程序. 1.添加断点 调试程序就要使用到Xcode 7.0的调试器.调试器是位于开发者编写的代码和操作系统之间的程序.为程序添加断点后,就启动了调试器,对程序进行调试.断点是调试器应该停止程序的运行的地方,并让开发者进行检查.要添加断点,首先选择想

《iOS9开发快速入门》——第2章,第2.2节解剖Xcode 7.0界面

2.2 解剖Xcode 7.0界面 iOS9开发快速入门 一个Xcode 7.0项目由很多的文件组成,如代码文件.资源文件.框架等.Xcode 7.0会帮助开发者管理这些文件.所以,Xcode的界面也相对比较复杂,如图2.2所示. 在图中可以看到,Xcode 7.0的界面大致可以分为4大部分.其中,编号为1的部分是导航窗口:编号为2的部分的编辑区域:编号为3的部分是工具窗口:编号为4的部分是程序调试信息窗口.本节将分别讲解这些区域的作用以及使用方式. 2.2.1 导航窗口 导航窗口的作用是显示整

《iOS9开发快速入门》——第2章,第2.3节Xcode 7.0项目结构

2.3 Xcode 7.0项目结构iOS9开发快速入门一个Xcode 7.0项目包括了代码.界面.各类资源等.以下主要讲解Xcode 7.0的项目结构,以Hello项目为例,如图2.8所示. Hello文件夹:里边包含了应用程序的代码和编辑界面.Hello xcodeproj:是项目文件.1.png:是添加的图像文件.HelloTests与HelloUITests文件夹中包含了测试的代码以及配置文件.

《iOS9开发快速入门》——第2章,第2.5节小结

2.5 小结iOS9开发快速入门本章主要讲解了全新的Xcode 7.0的新特性以及它的界面构成.本章的重点是Xcode 7.0的项目构成以及如何在Xcode 7.0中调试程序.通过对本章的学习,希望开发者可以熟练掌握Xcode 7.0的界面,以及如何进行程序的调试.

《iOS9开发快速入门》——第1章,第1.2节构建开发环境—Xcode 7.0

1.2 构建开发环境-Xcode 7.0iOS9开发快速入门苹果公司在发布了最新的 iOS 9 系统后,又发布了最新的 Xcode 7.0.本节将主要讲解Xcode 7.0的安装.苹果账号的绑定和更新文件/组件等相关方面的内容. 1.2.1 安装Xcode 7.0Xcode 7.0可以从应用商店直接下载,并自动安装到计算机上.但是由于Xcode 7.0较大,直接从应用商店下载需要很长的时间.所以,很多时候大家都是从其他途径下载.这个时候,就需要手动进行安装.安装过程如下: (1)双击下载的Xco

.net微信公众号开发——快速入门

原文:.net微信公众号开发--快速入门 作者:王先荣     最近在学习微信公众号开发,将学习的成果做成了一个类库,方便重复使用.     现在微信公众号多如牛毛,开发微信的高手可以直接无视这个系列的文章了.     使用该类库的流程及寥寥数行代码得到的结果如下.        本文的源代码主要在:http://git.oschina.net/xrwang2/xrwang.weixin.PublicAccount/blob/master/xrwang.net/WeixinInterface.a