Prism框架研究(一)


     從今天起開始寫一個Prism框架的學習博客,今天是第一篇,所以從最基本的一些概念開始學習這個基於MVVM的框架的學習,首先看一下Prism代表什么,這里引用一下比較官方的英文解釋來看一下:Prism was the code name for the guidance formally known as the Composite Application Guidance for WPF and Silverlight. For brevity and conciseness, and due to customer demand, this guidance is now referred to simply as Prism.Prism主要是用來開發具有多界面,豐富用戶交互以及數據可視化特點的WPF以及Sliverlight的應用程序的具體呈現和商業邏輯,具體了解到了其基本概念之后,我們再來學習新的內容。

     一 為什么要使用Prism框架?

     在回答這個問題之前,我們不得不了解關於使用WPF或Siverlight開發客戶端程序所面臨的挑戰。

     1  我們知道在軟件開發的過程中,應用程序的需求是隨着時間的推移發生重大改變的,在這個過程中會面臨技術的不斷更新,並且在開發周期中我們還會遇到用戶的不斷反饋,最終導致用戶需求的不斷變化,所以說在開發一個應用程序中如何構建一個隨着時間的推移能夠輕易去修改並且去擴展的應用程序就顯得非常重要了,這甚至需要架構師去構建一個各個部分之間彼此獨立,能夠單獨就行開發和測試,並且能夠順利進行更新和修改的模塊化程序,而且其中的任意一個模塊能夠做到不影響其他的任意一個部分的邏輯功能,這個是非常重要的。

  2  另外一方面就是在一個企業級的應用開發可能涉及到多人協作開發,這里可能涉及到前台UI開發者,后台邏輯實現者,這么多人大家如何去協作開發,彼此獨立,互不影響,並且最終能夠組合成一個完整的項目,這對程序的開發者提出了一個巨大的挑戰,所以Prism的出現為這些問題提供了一個高效的解決方案。

     3 對於一個大的並且耦合度非常高的應用程序,由於程序之間彼此沒有明顯的隔離,所以造成想要給應用程序添加或者更改一些特性變得非常困難,並且在這種系統中,如果想修復程序中其它部分的bug想要不影響整個系統的其它部分,這個是非常重要的。

       Prism的出現正是出於解決上面的一些問題,為構建一個:可重復利用的、可擴展的、靈活的、可以團隊開發的、高質量的應用程序提供了一個很好的解決方案。

     二  Prism框架中一些非常重要的概念

       Modules:Modules是能夠獨立開發、測試、部署的功能單元,Modules可以被設計成實現特定業務邏輯的模塊(如Profile Management),也可以被設計成實現通用基礎設施或服務的模塊    (如Logging、Exception Management)。
    Module Catalog:在Prism中,Module Catalog指明了要Load哪些Module,和用什么樣的順序去Load這些Module。
    Shell:Shell是宿主應用程序(host application),modules將會被load到Shell中。Shell定義了應用程序的整體布局和結構,而不關心寄宿其中的Module,Shell通常實現通用的application service和infrastructure,而應用的邏輯則實現在具體的Module中,同時,Shell也提供了應用程序的頂層窗口。
    Views:Views是應用中展現特定功能的視圖,它展現UI、定義交互行為,並且通過數據綁定的方式與ViewModel進行交互。
    View Model和Presenters:View Model用來封裝應用程序的UI邏輯及其狀態。
       Model:Model被用來封裝數據和相應的驗證,以及相關的業務規則來保證數據的一致性和正確性。
       Commands:Command被用來封裝應用程序功能,Prism提供了Delegate Command和CompositeCommand兩個類。
       Regions:Regions是應用程序UI的邏輯區域,它很像一個PlaceHolder,Views在Regions中展現,很多種控件可以被用作Region:ContentControl、ItemsControl、ListBox、TabControl。Views能在Regions編程或者自動呈現,Prism也提供了Region導航的支持。
    Shell、Region和View的關系如圖所示:

  Navigation:Prism支持兩種導航:state-based導航和view-switching導航。
  EventAggregator:組件通常要和其它的組件或者服務進行通信。為此,Prism提供了EventAggregator組件,這個組件實現pub-sub事件機制,允許一些組件發布事件,另一些組件去訂閱事件而無需兩個組件之間的引用。
  Dependency Injection container:Prism使用依賴注入模式來管理組件之間的依賴,Prism被設計使用Unity、Mef等依賴注入容器。
  Services:Services是用來實現非UI相關功能的邏輯,例如logging、exception management、data access。Services可以被定義在應用程序中或者是Module中,Services通常被注冊在依賴注入容器中,使得其它的組件可以很容易的定位這個服務。
  Controllers:Controller被用來控制在Region中哪個View將會被呈現,同時控制這個View的創建和初始化。
  Bootstrapper:Bootstrapper用來初始化應用程序級別的組件和服務,它也被用來配置和初始化module catalog和Shell 的View和View Model。功能如圖: 

 


免責聲明!

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



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