這篇快速入門文章包括如何使用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中的一部分
在這里下載的
您的推薦是我把這個系列寫完的動力~