【翻譯】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/

您的推薦是我把這個系列寫完的動力~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM