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主要是用來開發(fā)具有多界面,豐富用戶交互以及數(shù)據(jù)可視化特點的WPF以及Sliverlight的應用程序的具體呈現(xiàn)和商業(yè)邏輯,具體了解到了其基本概念之后,我們再來學習新的內(nèi)容。
? ? ?一 為什么要使用Prism框架?
? ? ?在回答這個問題之前,我們不得不了解關于使用WPF或Siverlight開發(fā)客戶端程序所面臨的挑戰(zhàn)。
? ? ?1 ?我們知道在軟件開發(fā)的過程中,應用程序的需求是隨著時間的推移發(fā)生重大改變的,在這個過程中會面臨技術的不斷更新,并且在開發(fā)周期中我們還會遇到用戶的不斷反饋,最終導致用戶需求的不斷變化,所以說在開發(fā)一個應用程序中如何構建一個隨著時間的推移能夠輕易去修改并且去擴展的應用程序就顯得非常重要了,這甚至需要架構師去構建一個各個部分之間彼此獨立,能夠單獨就行開發(fā)和測試,并且能夠順利進行更新和修改的模塊化程序,而且其中的任意一個模塊能夠做到不影響其他的任意一個部分的邏輯功能,這個是非常重要的。
2 ?另外一方面就是在一個企業(yè)級的應用開發(fā)可能涉及到多人協(xié)作開發(fā),這里可能涉及到前臺UI開發(fā)者,后臺邏輯實現(xiàn)者,這么多人大家如何去協(xié)作開發(fā),彼此獨立,互不影響,并且最終能夠組合成一個完整的項目,這對程序的開發(fā)者提出了一個巨大的挑戰(zhàn),所以Prism的出現(xiàn)為這些問題提供了一個高效的解決方案。
? ? ?3 對于一個大的并且耦合度非常高的應用程序,由于程序之間彼此沒有明顯的隔離,所以造成想要給應用程序添加或者更改一些特性變得非常困難,并且在這種系統(tǒng)中,如果想修復程序中其它部分的bug想要不影響整個系統(tǒng)的其它部分,這個是非常重要的。
? ? ? ?Prism的出現(xiàn)正是出于解決上面的一些問題,為構建一個:可重復利用的、可擴展的、靈活的、可以團隊開發(fā)的、高質(zhì)量的應用程序提供了一個很好的解決方案。
? ? ?二 ?Prism框架中一些非常重要的概念
? ? ? ?Modules:Modules是能夠獨立開發(fā)、測試、部署的功能單元,Modules可以被設計成實現(xiàn)特定業(yè)務邏輯的模塊(如Profile Management),也可以被設計成實現(xiàn)通用基礎設施或服務的模塊 ? (如Logging、Exception Management)。
?Module Catalog:在Prism中,Module Catalog指明了要Load哪些Module,和用什么樣的順序去Load這些Module。
?Shell:Shell是宿主應用程序(host application),modules將會被load到Shell中。Shell定義了應用程序的整體布局和結構,而不關心寄宿其中的Module,Shell通常實現(xiàn)通用的application service和infrastructure,而應用的邏輯則實現(xiàn)在具體的Module中,同時,Shell也提供了應用程序的頂層窗口。
?Views:Views是應用中展現(xiàn)特定功能的視圖,它展現(xiàn)UI、定義交互行為,并且通過數(shù)據(jù)綁定的方式與ViewModel進行交互。
?View Model和Presenters:View Model用來封裝應用程序的UI邏輯及其狀態(tài)。
? ? ? ?Model:Model被用來封裝數(shù)據(jù)和相應的驗證,以及相關的業(yè)務規(guī)則來保證數(shù)據(jù)的一致性和正確性。
? ? ? ?Commands:Command被用來封裝應用程序功能,Prism提供了Delegate Command和CompositeCommand兩個類。
? ? ? ?Regions:Regions是應用程序UI的邏輯區(qū)域,它很像一個PlaceHolder,Views在Regions中展現(xiàn),很多種控件可以被用作Region:ContentControl、ItemsControl、ListBox、TabControl。Views能在Regions編程或者自動呈現(xiàn),Prism也提供了Region導航的支持。
??? Shell、Region和View的關系如圖所示:
Navigation:Prism支持兩種導航:state-based導航和view-switching導航。
EventAggregator:組件通常要和其它的組件或者服務進行通信。為此,Prism提供了EventAggregator組件,這個組件實現(xiàn)pub-sub事件機制,允許一些組件發(fā)布事件,另一些組件去訂閱事件而無需兩個組件之間的引用。
Dependency Injection container:Prism使用依賴注入模式來管理組件之間的依賴,Prism被設計使用Unity、Mef等依賴注入容器。
Services:Services是用來實現(xiàn)非UI相關功能的邏輯,例如logging、exception management、data access。Services可以被定義在應用程序中或者是Module中,Services通常被注冊在依賴注入容器中,使得其它的組件可以很容易的定位這個服務。
Controllers:Controller被用來控制在Region中哪個View將會被呈現(xiàn),同時控制這個View的創(chuàng)建和初始化。
Bootstrapper:Bootstrapper用來初始化應用程序級別的組件和服務,它也被用來配置和初始化module catalog和Shell 的View和View Model。功能如圖:?
?
轉(zhuǎn)載于:https://www.cnblogs.com/seekdream/p/5771377.html
總結
以上是生活随笔為你收集整理的Prism框架研究(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux下安装jdk(xxx.rpm,
- 下一篇: 查看Eclipse32位还是64位以及E