• Prism初研究之简介


    Prism初研究之简介

    Prism相关资料

    国内对Prism的传经授道很早就开始了,比如说博客园的周银辉和张兴浩,他们分别在自己的项目中使用到这个框架,因此有丰富的心得体会以及大量的介绍性文章,博客地址如下:

    >

    Prism吹水

    Prism优点

    • 界面与交互逻辑相剥离,从而美工和程序员可以各按其事,互不干扰;
    • 把界面拆成小块的模块(Module),从而使模块将的交互实现最大的松耦合,降低“牵一发而动全身”的风险。此外,部署时可以实现按需加载和更新;
    • 模块拆分,使得开发和测试也可以独立地进行,“开发未动,测试先行”。
    • 最大程度的实现可复用(re-use)。尤其是面向切面的日志关联和权限管理。

    关键技术概念

    • Module

      一组独立开发、测试、配置的功能包,一般由分开的小组开发,多是一组业务相关的功能服务。一个典型的Prism程序由多个Module组成。
    • Module catalog

      在复合应用程序中,模块的装载多发生在运行时,Prism使用Module catalog来指定加载的模块、加载时机、加载顺序。Module catalog由ModuleManager 和 ModuleLoader组件来使用。Prism允许三种使用方式:
      • 编码
      • XAMl声明
      • 配置文件
    • Shell

      用于装载Module的主应用程序,提供顶层的窗口,它经常实现通用的应用服务和基础结构。大多数的应用程序功能在Module中实现。
    • Views

      MVVM中的Views,通过数据绑定与View model进行交互。
    • View model

      MVVM中的View Models,实现应用程序的展现逻辑,它们定义View中数据绑定使用的属性、命令、事件等。
    • Models

      MVVM中的Models, 应用程序的数据和业务逻辑。包括相关的业务规则、数据验证,数据保持等等。
    • Commands

      可以独立于UI进行测试,Prism提供DelegateCommand和CompositeCommand两个类,后者用于处理一组一起调用的命令。
    • Regions

      在Shell或者Views中定义的UI逻辑区域。在Region中View可以自动地或者程序地显示。Prism还未Region实现了导航。可以通过RegionManager组件(使用RegionAdapter和RegionBehavior组件)来进行定位。
    • Navigation

      Prism提供两种导航:
      • 基于状态的导航
      • 视图切换的导航
    • EventAggregator

      复合应用程序中的组件和服务需要一种松耦合的方式互相通信。Prism为此提供了EventAggregator组件。该组件允许定义在不同模块的组件进行相互通信。
    • Dependency injection container

      Prism提供Unity和MEF两种依赖注入的方式,如需使用其他DI container,需要通过ServiceLocator。
    • Services

      非UI相关的功能,比如日志、异常管理、数据访问。服务能通过一个模块来进行定义。经常使用DI方式来注册服务。
    • Bootstrapper

      Bootstrapper初始化化各种各样的Prism组件和服务。而且经常用来初始化Module catalog和Shell视图,View Model等。
      Prism

    使用Prism

    一个典型的Prism应用由一个Shell工程和多个Module工程组成。
    典型Prism应用架构

    定义Shell

    定义Shell

    创建Bootstrapper

    定义Bootstrapper
    每个Prism应用程序创建一个继承自UnityBootstrapper或者MefBootstrapper的bootstrapper。它的属性有Container、Shell、Logger、ModuleCata。

    创建Module

    一个实现IModule接口的类。

    1. publicclassHelloWorldModule:IModule
    2. {
    3. privatereadonlyIRegionViewRegistry _regionViewRegistry;
    4. publicHelloWorldModule(IRegionViewRegistry registry)
    5. {
    6. _regionViewRegistry = registry;
    7. }
    8. publicvoidInitialize()
    9. {
    10. _regionViewRegistry.RegisterViewWithRegion("MainRegion",typeof(Views.HelloWorldView));
    11. }
    12. }





  • 相关阅读:
    备忘录方法与动态规划比较
    struct大小
    位域
    cocos2d-x获得系统的语言
    游戏中的心理学:利用归因错误让玩家更爱你的游戏
    武侠游戏核心追求点
    将“Cocos2dx-截屏并设置图片尺寸 ”中cocos2d-x代码转换为2.2的代码
    Cocos2dx-截屏并设置图片尺寸
    信息图:iOS 7开发者需要知道的事
    批处理学习 二
  • 原文地址:https://www.cnblogs.com/qianzi067/p/5804765.html
Copyright © 2020-2023  润新知