Prism 框架基础架构
概要
Prism提供指导,帮助您更轻松地设计和构建,灵活且易于维护的客户端业务应用程序,这些应用程序可在Windows运行时,Windows Presentation Foundation(WPF)桌面,Silverlight或Windows Phone 7上运行。随着时间的推移而演变
使用体现重要架构设计原则的设计模式,例如关注点分离和松散耦合,Prism帮助您设计和构建体现重要的表示和业务逻辑的应用程序,这些应用程序通常与后端系统和服务交互,并使用分层架构,可以跨多个层进行物理部署。预计该应用程序将在其生命周期内发生重大变化,以响应新的需求和商机。简而言之,这些应用程序“经久耐用”,“为变革而打造”。不需要这些特性的应用程序可能无法使用Prism。
社区
WPF的Prism和Windows Runtime的Silverlight和Prism拥有蓬勃发展的在线社区。
在这些社区网站上,您可以发布问题,提供反馈或与其他用户联系以分享想法。社区成员还可以帮助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页 :
项目源代码