Silverlight項目筆記4:初識Prism以及IoC

1.Prism

    Prism是由微軟Patterns & Practices團隊開發的針對WPF和Silverlight的MVVM框架。編程

    Prism的幾個關鍵點:app

   (1)啓動器類UnityBootstrapper框架

        Silverlight程序入口處調用Bootstrapper.Run方法時,Prism會自動作一些初始化工做,包括讀取模塊信息表,建立模塊類實例並初始化(還能夠選擇按需加載模式OnDemand),以及在CreatShell中指定整個程序的根視圖。    模塊化

      

      

    (2)繼承IModule接口,進行模塊初始化工做。 函數

       構造函數中傳入UnityContainer容器(使用了IoC容器Unity),便可得到容器對象,後面須要大量使用UnityContainer對象的Resolve方法來獲取指定對象關聯的對象,即直接使用容器對象container來獲取實例或方法。設計

       而後在Initialize中作一些模塊相關的初始化工做,好比監聽事件消息,當載入本模塊時,界面須要作一些什麼工做等等。模塊化開發

      

   (3)UI管理RegionManager對象

     以前在模塊初始化時說到界面須要作一些初始化工做,使用Prism框架,能夠很方便的進行UI控件的切換導航。blog

     在模塊初始化的時候將須要用到的頁面進行註冊,當須要加載的時候就能夠直接將頁面加載到指定的區域。繼承

     下圖便是在模塊初始化時註冊了某一個頁面「XXXMainView」,當監聽到加載頁面的事件時,就能夠將其加載到以前設計好的頁面區域「Page Region」。

     

   (4)事件聚合服務EventAggregator

      Prism提供了事件聚合服務EventAggregator,使用起來比委託事件更方便,註冊事件,而後直接發佈訂閱便可,模塊之間的通訊中將大量用到。

     

     

      

 

2.IoC容器Unity

     IoC即Inversion of Contro控制反轉,將代碼的控制權交由系統控制,好比對象的建立、方法的調用都交給Unity進行控制,Unity也是由微軟patterns& practices團隊用C#實現的輕量級、可擴展的依賴注入容器,這樣作的好處是消除模塊間的直接依賴,面向抽象即便面向接口編程,方便程序的擴展維護。

     使用UnityContainer的容器對象,即圖中的m_Container、container,將對象與對象之間的關係進行註冊後(IDataService與XXXDataService),就能夠在整個程序任意地方再經過容器對象解析出該註冊對象,進而執行該註冊對象的屬性或方法,

這也是除了事件聚合服務EventAggregator外,模塊之間進行通訊的另外一辦法。

     

       

     

 

3.使用Prism及IoC的好處

   (1) 功能模塊化,將系統劃分爲多個獨立模塊,方便多人協同開發;

   (2)有效減小程序大小,模塊化開發方式加上IoC,面向接口編程,模塊各司其職,使得模塊重複引用類庫狀況大爲減小,編譯出來的程序更小,對於Silverlight這種富客戶端,提升了加載速度。

   (3)層次邏輯更加清晰,便於開發;

   (4)模塊之間低耦合,當模塊沒有更新時,能夠unload,不須要從新編譯,大幅減小編譯時間。

   (5)加強擴展維護性。

    因此係統有必定複雜程度後,非Demo或原型系統時,採用Prism以及IoC會是一個很好的選擇。

相關文章
相關標籤/搜索