PRISM基本知識

Prism框架是用於創建低耦合,易維護,易測試的應用的。最初由微軟開發,後提交給開源社區由開源社區維護的開源項目。每個平臺都有獨立的版本。

Prism實現了一系列的設計模式,有助於編寫well-structured和可維護的XAML應用程序,包括MVVM,依賴注入,命令,EventAggregator等。Prism的核心功能是方便的在不同平臺共享代碼。

1.Prism Key Concepts

Modules. 模塊是可以獨立開發/測試/部署的功能包。

Module catalog. 在組合應用程序裏(composite application),模塊可能需要在運行時加載。在Prism裏,module catalog用於指定哪些模塊需要被加載,以及按什麼順序加載。module catalog被ModuleManager和ModuleLoader組件使用。Prism允許使用不同的方式指定module catalog:代碼,xaml,或者用配置文件指定。

Shell. shell是應用程序外殼,定義了應用程序的總體佈局和結構,但它通常不知道確切的模塊,它通常實現通用的服務和基礎架構,具體的功能則是在具體的模塊裏面實現。shell還提供了頂層的窗口和視覺元素,然後它會嵌入由具體modules提供的不同的UI

View. 視圖封裝了應用程序的特定的功能或者功能區域,用於MVVM模式。MVVM將UI和顯示邏輯&數據分離,View用於封裝UI,並定義用戶交互行爲,從而允許view獨立於底層應用程序的功能進行更新和替換。view通過數據綁定與view model交互。

View models. 視圖模型是封裝應用的表現邏輯和狀態的類,它是MVVM模式的一部分。View model封裝了許多功能,爲view中可以綁定的控件定義屬性,命令和事件。

Models. 模型封裝了應用程序的數據和業務邏輯,它是MVVM模式的一部分。model封裝數據,相關的驗證和業務規則,以確保數據的一致性和完整性。

Commands. 命令用於封裝應用程序的功能,允許它們獨立於應用程序的UI進行定義和測試。它們可以被定義成command objects或者view model中的command methods。(They can be defined as command objects or as command methods in the view model. ) Prism提供了DelegateCommand classs和CompositeCommand class,後者用於表示一起觸發的命令集合。

Regions. 區域是應用程序UI(在shell上或者view內)上定義的邏輯佔位符,用於顯示view。Region允許對應用程序UI的佈局進行更新,而不需要更改應用程序邏輯。許多通用控件都可以被用作region,運行view被自動的顯示在它裏面,比如ContentControl, ItemsControl, ListBox, TabControl. View可以自動的或者通過編程被顯示在region裏。Prism also provides support for implementing navigation with regions. Regions can be located by other components through the RegionManager component, which uses RegionAdapter and RegionBehavior components to coordinate the display of views within specific regions.

Navigation. 導航是指應用程序把[用戶與應用程序交互的結果]或者[應用程序內部狀態的變化]同步到UI的過程。Prism提供了兩種導航方式:基於狀態的導航(state-based navigation)和視圖切換導航(view-switching navigation).視圖切換導航使用統一資源標識符(URI)爲基礎的導航機制與Prism region相結合,允許實現靈活的導航方案。

EventAggregator. 事件聚合。複合應用程序中的組件通常需要以鬆耦合的方式與應用程序中的其他組件和服務通信。爲此,Prism提供了EventAggregator組件,它實現了一個pub-sub事件機制,從而允許組件發佈事件和其它組件訂閱這些事件不需要引用對方。EventAggregator通常用於運行定義於不同模塊中的組件間的交互。

Dependency injection container. 依賴注入(DI)模式就是利用Prism允許管理組件間的依賴關係。依賴注入允許組件依賴關係在運行時執行,並支持可擴展性和可測性。Prism被設計成和Unity或MEF一起工作,或通過servicelocator和任何其他依賴注入容器一起工作。

Services. 服務是封裝非UI相關功能的組件,如日誌記錄、異常管理和數據訪問。服務可以由應用程序或在一個模塊中定義。服務通常在依賴注入容器中註冊,以便它們可以按需要定位或構建,並由依賴於它們的其他組件使用。

Controllers. 控制器是用來協調將要在應用程序UI的region中顯示的view的構造和初始化的類。控制器封裝決定哪個視圖被顯示的邏輯。該控制器將使用PRISM的視圖切換導航機制,它提供了一種可擴展的基於URI的導航機制,用於協調區域內視圖的構造和放置。程序控制器模式定義了一個抽象映射到這個責任(The Application Controller pattern defines an abstraction that maps to this responsibility.)。

Bootstrapper. 引導程序組件用於初始化Prism的各種組件和服務。它是用來初始化依賴注入容器來註冊應用層組件和服務的。它也可以用來配置和初始化module catalog和shell’s view和view model or presenter。

Example

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章