什么是WPF的棱镜?

Nol*_*rin 132 wpf prism mvvm

最近我偶然发现了一些叫做Prism的东西.运行该项目的微软将其描述为

WPF和Silverlight中的复合应用程序指南.

即使在阅读了更详细的描述之后,我也几乎不知道它实际上是什么,我害怕.

我希望有人可以给我一个明确的简洁解释,说明Prism实际上是什么以及为什么我应该学习它.我已经成为WPF开发人员几年了,使用MVVM我的公平份额,并且最近遇到过使用Prism的人,但个人感觉有点不在这里.

特别是,我想知道以下几点:

  • Prism字面上只是(或主要)是MSDN网站上的小册子吗?它是否包含任何库,如果是这样的话究竟是什么?

  • Prism是MVVM框架吗?我应该将它作为"官方Microsoft MVVM框架"而不是其他人或我自己的吗?

  • 它是否提供依赖注入?它是否与MEF有关?

  • 作为WPF/Silverlight开发人员,我应该知道Prism的作用.

Ree*_*sey 90

Prism是Microsoft模式和实践团队在WPF和Silverlight中构建"复合应用程序"的官方指南.

它旨在为构建大规模应用程序的最佳实践提供指导,这些应用程序在开发和可维护性方面具有灵活性.

这包括依赖注入(通过Unity或MEF),布局(包括使用MVVM),复合事件处理等的指导.


Prism字面上只是(或主要)是MSDN网站上的小册子吗?它是否包含任何库,如果是这样的话究竟是什么?

这是一本书,但也包括支持的库(在GitHub站点上).

Prism是MVVM框架吗?我应该将它作为"官方Microsoft MVVM框架"而不是其他人或我自己的吗?

是的,不是.它包含使用MVVM的指南,但不仅仅是MVVM框架.它本身并不是一个"MVVM框架" - 尽管它确实包含MVVM指南.

它是否提供依赖注入?它是否与MEF有关?

是.它最初包含Unity,但最新版本包括使用MEF进行DI.

作为WPF/Silverlight开发人员,我应该知道Prism的作用.

值得一看的是他们如何做事.他们有一个非常精细的"区域"概念,以及良好的事件聚合支持.它还包括针对WPF,Silverlight和Windows Phone同时开发的良好实践.

  • @Noldorin:我假设您对Prism内部的询问......对MVVM有一些支持,但坦率地说,MVVM作为一种模式,几乎不需要库支持.Prism确实有很好的通知对象和命令支持,这实际上是你真正需要MVVM的BCL中唯一缺少的东西.它还具有服务定位器支持,如果您想使用DI /共享服务进行VM < - > VM通信,这将有所帮助.它没有一些MVVM"框架"提供的"额外"东西,比如消息传递框架等. (2认同)

rbo*_*man 18

它是构建WPF和Silverlight应用程序的框架.

http://compositewpf.codeplex.com/

在Microsoft将其重命名为"CompositeWPF"之前,它曾被称为"Prism".

回答:

1)Prism是一个MVVM框架,可用作应用程序的基础

2)我建议根据您的具体要求.您应该发布另一个具有特定细节的问题,以便获得一些具体的答案.

3)Prism使用依赖注入(Unity)但不"提供"它

4)Imo,Prism提供了很多功能,但在学习曲线上很重要.对于以您为唯一开发人员的小型项目,您可能不需要它提供的抽象和工具.

  • 我有点不同意你的陈述#1 - Prism包含MVVM指导,但很多指导(大多数样本)根本不是MVVM.它更像是在构建复合应用程序时可以使用的一个选项. (2认同)