zoukankan      html  css  js  c++  java
  • 【翻译】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快速入门示例的主页

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

    image

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

    原文是个PDF中的一部分

    在这里下载的

    http://mef.codeplex.com/

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

  • 相关阅读:
    jquery流行的插件收集
    简单遮罩层
    生成任意位数随机验证码
    30个图片浏览插件收集
    [转载]12个jQuery Lightbox效果插件
    jqzoom图片放大镜效果
    23个超流行的jQuery相册插件收集
    在suse上创建UDEV Rules For RAC OCR And Voting Devices
    /etc/fstab文件中的一些参数
    Oracle提供的自治事务记录日志的方法
  • 原文地址:https://www.cnblogs.com/liulun/p/2399654.html
Copyright © 2011-2022 走看看