Prism 框架基礎架構


概要

Prism提供指導,幫助您更輕松地設計和構建,靈活且易於維護的客戶端業務應用程序,這些應用程序可在Windows運行時,Windows Presentation Foundation(WPF)桌面,Silverlight或Windows Phone 7上運行。隨着時間的推移而演變

使用體現重要架構設計原則的設計模式,例如關注點分離和松散耦合,Prism幫助您設計和構建體現重要的表示和業務邏輯的應用程序,這些應用程序通常與后端系統和服務交互,並使用分層架構,可以跨多個層進行物理部署。預計該應用程序將在其生命周期內發生重大變化,以響應新的需求和商機。簡而言之,這些應用程序“經久耐用”,“為變革而打造”。不需要這些特性的應用程序可能無法使用Prism。

 

社區

WPF的Prism和Windows Runtime的SilverlightPrism擁有蓬勃發展的在線社區。

在這些社區網站上,您可以發布問題,提供反饋或與其他用戶聯系以分享想法。社區成員還可以幫助Microsoft計划和測試未來的產品,並下載其他內容,例如擴展和培訓材料。

 

入門演示:

示例中用到了8個子模塊, 所有的子模塊統一繼承 IModule接口, 實現Initialize方法。如下代碼所示:

public class ModA : IModule
    {

        public ModA(IRegionViewRegistry registry)
        {
            this.regionViewRegistry = registry;
        }

        private readonly IRegionViewRegistry regionViewRegistry;

        public void Initialize()
        {
            regionViewRegistry.RegisterViewWithRegion(Module.ModA.ToString(), typeof(Hello));
        }
    }

在啟動項中的app.xaml中, 重寫OnStartUp方法, 添加Bootstrapper類啟動項。

 protected override void OnStartup(StartupEventArgs e)
        {
            base.OnStartup(e);
            Bootstrapper bootstrapper = new Bootstrapper();
            bootstrapper.Run();
        }

Bootstrapper類的具體實現如下:

class Bootstrapper : UnityBootstrapper
    {
        protected override DependencyObject CreateShell()
        {
            return this.Container.Resolve<MainWindow>();
        }

        protected override void InitializeShell()
        {
            base.InitializeShell();

            App.Current.MainWindow = (Window)this.Shell;
            App.Current.MainWindow.Show();
        }

        protected override void ConfigureModuleCatalog()
        {
            base.ConfigureModuleCatalog();

            ModuleCatalog moduleCatalog = (ModuleCatalog)this.ModuleCatalog;
            moduleCatalog.AddModule(typeof(ModA.ModA));
            moduleCatalog.AddModule(typeof(ModB.ModB));
            moduleCatalog.AddModule(typeof(ModC.ModC));
            moduleCatalog.AddModule(typeof(ModD.ModD));
            moduleCatalog.AddModule(typeof(ModE.ModE));
            moduleCatalog.AddModule(typeof(ModF.ModF));
            moduleCatalog.AddModule(typeof(ModG.ModG));
            moduleCatalog.AddModule(typeof(ModH.ModH));
        }
    }

在Bootstrapper中, 通過重寫了 ConfigureModuleCatalog方法 , 添加各個子模塊的 IModule具體實現。

 

界面層:

模塊顯示區域設置RegionName, 也可以利用后台代碼進行程序集加載的方式, 如此固定是演示其效果: 

 

項目解決方案:

 

 模塊的實現示例代碼, 通過RegisterViewWithRegion注冊指定模塊, 和向其指定的View頁 :

 

項目源代碼

 


免責聲明!

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



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