0510 prism

Prism is a framework for building loosely coupled, maintainable, and testable XAML applications in WPF, Windows 10 UWP, and Xamarin Forms. Separate releases are available for each platform and those will be developed on independent timelines. Prism provides an implementation of a collection of design patterns that are helpful in writing well-structured and maintainable XAML applications, including MVVM, dependency injection, commands, EventAggregator, and others. Prism's core functionality is a shared code base in a Portable Class Library targeting these platforms. Those things that need to be platform specific are implemented in the respective libraries for the target platform. Prism also provides great integration of these patterns with the target platform. For example, Prism for UWP and Xamarin Forms allows you to use an abstraction for navigation that is unit testable, but that layers on top of the platform concepts and APIs for navigation so that you can fully leverage what the platform itself has to offer, but done in the MVVM way.

Prism是一个用于在WPF,Windows 10 UWP和Xamarin Forms中构建松散耦合,可维护和可测试的XAML应用程序的框架。每个平台都有单独的版本,Prism提供了一组设计模式的实现,这些设计模式有助于编写结构良好且可维护的XAML应用程序,包括MVVM,依赖注入,命令,EventAggregator等。 Prism的核心功能是针对这些平台的可移植类库中的共享代码库。那些需要特定于平台的东西在目标平台的相应库中实现。 Prism还提供了这些模式与目标平台的完美集成。例如,用于UWP和Xamarin Forms的Prism允许您使用可单元测试的导航抽象,但是在平台概念和用于导航的API之上进行层次化,以便您可以充分利用平台本身提供的内容,但是以MVVM方式完成。

小国寡民,使民有什伯之器而不用,使民重死而不远徙。虽有舟舆,无所乘之。虽有甲兵,无所陈之。使民复结绳而用之。甘其食,美其服,安其居,乐其俗。邻国相望,鸡犬之声相闻,民至老死不相往来--道德经

依赖注入IOC

IoC不是一种技术,只是一种思想,一个重要的面向对象编程的法则,它能指导我们如何设计出松耦合、更优良的程序。传统应用程序都是由我们在类内部主动创建依赖对象,从而导致类与类之间高耦合,难于测试;有了IoC容器后,把创建和查找依赖对象的控制权交给了容器,由容器进行注入组合对象,所以对象与对象之间是松散耦合,这样也方便测试,利于功能复用,更重要的是使得程序的整个体系结构变得非常灵活。 其实IoC对编程带来的最大改变不是从代码上,而是从思想上,发生了“主从换位”的变化。应用程序原本是老大,要获取什么资源都是主动出击,但是在IoC/DI思想中,应用程序就变成被动的了,被动的等待IoC容器来创建并注入它所需要的资源了。

 

 

 

 

 

 

 

 

 

 

 

Modules(模块)

Modules是一些可以独立开发,测试和(任意)部署的功能包。通常不同的模块是由不同的团队开发并且维护的。一个典型的Prism包含了若干个模块。Modules可以用来表示有特定的业务关系的功能(如配置管理器 profile management),并且封装了视图,服务,和实现所必要的数据模型。Modules也可以封装一些系统通用模块或服务(如日志,异常管理器)以方便它们在不同系统间复用。

Module Catalog(模块列表)

在一个复杂系统,模块必需在运行时由客户端加载和使用。在Prism中模块列表用来指定哪些模块应该加载,又应该在什么时候加载,以及用什么顺序加载。模块列表由ModuleManager和ModuleLoader两个负责远程加载,或者将模块加载到应用程序域和初始化的组件使用。Prism允许用多种方法定义模块列表,包括使用代码编程,使用XAML定义,或者使用配置文件。也可以根据需要自定义一个模块列表。

Shell

“壳”是应用程序加载的第一个模块,它定义了程序的总体布局和结构,它通常不知道在其内的实际应用模块。它通常实现了应用程序的基础服务和框架,大部分程序中功能性的模块都在它的里面运行。它提供了最顶层的的窗口或者可视化元素以便于载入不同的UI模块和功能模块。

View(视图)

视图是封装了特定特征和功能区域的用户界面,视图通常和MVVM和MVP设计模式相结合,它提供了一个UI和应用程序表现逻辑或数据间独立的关注点。视图用来封装用户接口和用户交互行为,因此视图可以独立与底层功能进行升级和替换。视图通过数据绑定与View Model或Presenter层相结合

View Models

View Model是一些封装了应用程序表现逻辑和状态的类。它们是MVVM模式的一部分。View Model封装了应用程序中非常多的功能。Presenter与View Model一样也是封闭了应用程序表现逻辑和状态的类,它在MVP模式中被使用。两者都定义了属性,命令和事件,以及哪些控件应该要绑定数据。

Models(模型)

模型类是数据和应用程序逻辑的封装。它们是MVVM和MVP设计模式中的一部分。模型封装了数据和任何与之相关的验证,以及用来保证数据完整性和一致性的业务逻辑。

Commands(命令)

命令是应用程序功能的封装,在某种程序上它们可以与用户UI独立进行测试和定义。它们可以在View Model或者Presenters中被定义成为命令对象或者方法。Prism提供了DelegateCommond和CompositeCommand类。后者用来表示一组一起调用的命令的集合。

Regions(区域)

区域是一个定义在应用程序UI(Shell或者某个视图)中显示哪个视图的逻辑占位符。区域使应用程序可以在不更改代码的情况下切换布局。一些控件可以当成区域,因为他们可以显示其它视图的控件和内容,比如ContentControl,ItemsControl,ListBox,或者TabControl。视图可以通过编程或者自动的方式在区域中显示。Prism也支持在区域中实现Navigation(导航)。区域可以通过RegionManager放到其它组件中,使用RegionAdapter和RegionBehavior组件来调配显示在特定区域中的视图。

Navigation(导航)

导航是应用程序响应用户操作并且显示更换相应UI或者状态的过程。)Prism支持两种状态的导航:基于状态导航,它是用来实现已经存在的视图的不同场景切换的导航;和视图切换导航,这是在应用程序UI中新视图创建并且代替旧视图的导航。视图切换导航的机制是基于URI的,与Prism regions一起可以实现一切灵活的导航结构。

EventAggregator(事件聚合器)

在一些复杂系统中,组件通常需要通过一些松耦合的方法与其它的组件或服务相交互。为了支持这些,Prism提供了EventAggregator组件来实现pub-sub事件机制,以此组件可以在不互相引用的前提下发布事件或者订阅其它组件的事件。EventAgrregator通常在不同组件中被定义以用来实现不同模块间的交流。

Dependency injection container(依赖注入容器)

依赖注入(DI)模式在Prism中普遍使用以保证组件间的依赖可以被管理。依赖注入可以保证组件间的依赖关系可以在运行时被满足,也保证组件的可扩展性和可测试性。Prism的依赖注入是通过Untity,MEF或者其它通过ServiceLocator开发的DI容器。

Bootstrapper(启动精灵)

Bootstrapper是应用程序用来启动多种Prism组件和服务的组件。它用来初始化依赖注入容器来注册应用程序层的多种组件和服务。它也用来配置和初始化模块列表,Shell视图和视图模型或者表现界面。

Service(服务)

服务是封装与UI无关功能的集合,比如日志,异常管理器或者数据通道。服务通常在依赖注入窗口中进行注册以使其它可以被其它依赖于它的组件所定位和组建。

Controller(控制器)

控制器是用来协调显示在应用程序UI区域中的视图的创建和初始化的类。控制器封装了检测何时应该显示哪个界面的表现逻辑。它使用了Prism的视图切换导航机制,它是基于URI来创建和切换当前区域中显示视图的导航机制。(The Application Controller pattern defines an abstraction that maps to this responsibility. Application Controller(应用程序控制器)模式定义了实现这些内容的抽象模型)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值