什么是WPF棱镜?


137

最近我经常碰到一种叫做Prism的东西。运行该项目的Microsoft将其描述为

WPF和Silverlight中的复合应用程序准则。

恐怕即使在阅读了更详细的说明之后,我也几乎不知道它的实际含义。

我希望在这里有人可以给我一个清晰简洁的解释,关于棱镜实际上是什么以及为什么我应该学习它。我已经是WPF开发人员两年了,我使用了MVVM,并且最近遇到了使用Prism的人,但是我个人对此有点不了解。

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

  • 正如MSDN站点上所提供的 Prism实际上只是(或主要是)一本小册子吗?它是否包括任何库(如果有的话)到底是什么?

  • Prism是MVVM框架吗?我是否应该将它用作“正式的Microsoft MVVM框架”而不是我自己的?

  • 它提供依赖注入吗?这样是否完全与MEF有关?

  • 作为WPF / Silverlight开发人员,我对Prism所做的任何其他了解。


5
实际上,这也是一件相当复杂的事情-Prism试图满足很多需求,因此,如果您想弄清其目的,很难得到一个“正确”的答案。它确实做了很多事情。
Reed Copsey

1
这类似的问题由我问也有一些很好的答案,这个问题- stackoverflow.com/questions/6251821/...
akjoshi

9
P&P的另一个模糊的泥潭。每次他们发布这样的内容时,我都会发现自己必须去SO或Wikipedia来了解实际情况。为什么总是必须如此神秘?
亚当·拉尔夫

1
如果愿意,它是一种文档,可以指导您如何在WPF / Silverlight应用程序中实现MVVM模式。还有一个来自codePlex的库,我不确定它的确切用途。有关PRISM的良好文档位于下面的链接中,值得一看:Prism 4.1-Microsoft Prism开发人员指南
-MSDN

Answers:


92

Prism是Microsoft模式和实践团队的官方指南,用于在WPF和Silverlight中构建“复合应用程序”。

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

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


正如MSDN网站上所提供的,Prism真的只是(或主要是)一本小册子吗?它是否包括任何库(如果有的话)到底是什么?

这是一本书,但也包含用于支持的库(在GitHub站点上)。

Prism是MVVM框架吗?我是否应该将它用作“正式的Microsoft MVVM框架”而不是我自己的?

是的,没有。它包括有关使用MVVM的指南,但远不止MVVM框架。实际上,它本身不是“ MVVM框架”,尽管它确实包含了MVVM指南。

它提供依赖注入吗?这样是否完全与MEF有关?

是。它最初包括Unity,但最新版本包括使用MEF for DI。

作为WPF / Silverlight开发人员,我对Prism所做的任何其他了解。

值得一看的是他们如何做事。它们具有非常详尽的“区域”概念,并且具有良好的事件聚合支持。它还包括用于同时针对WPF,Silverlight和Windows Phone进行开发的良好实践。


1
谢谢回复。我认为这给了我很好的概述。只是要清楚一点:实际上是否有任何与MVVM相关的代码或库DLL?
Noldorin

4
@Noldorin:我假设您是在Prism里面询问的... MVVM有一些支持,但是坦率地说,MVVM作为一种模式几乎不需要库支持。Prism确实具有良好的通知对象和命令支持,这确实是MVVM真正需要的BCL中唯一缺少的东西。它还具有服务定位器支持,如果您想将DI /共享服务用于VM <-> VM通信,这将提供帮助。它没有一些被一些MVVM“框架”,提供“额外”的东西,如一个消息框架等
里德科普塞

1
为了遵守Prism指南,必须已安装库?
dios231 '16

18

这是用于构建WPF和Silverlight应用程序的框架。

http://compositewpf.codeplex.com/

在Microsoft将其重命名为“ CompositeWPF”之前,它曾经被称为“ Prism”。

答案:

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

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

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

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


3
我有点不同意您的陈述#1-Prism包含MVVM指导,但是很多指导(大多数示例)根本不是MVVM。它是作为构建复合应用程序时可以使用的一种选择而呈现的。
Reed Copsey

1
我想我一直使用MVVM模式
rboarman 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.