Silverlight MVVM与Prism

时间:2011-07-16 03:06:34

标签: mvvm silverlight-4.0 frameworks prism

我是Silverlight的新手。我正在开始一个新项目,我想使用现有模式,如MVVM和PRISM

有没有人可以指导我通过哪种模式更适合什么类型的场景。哪一个主要用于Silverlight,请

8 个答案:

答案 0 :(得分:3)

MVVM是一种模式,PRISM是一个可用于实现MVVM的框架。要开始使用Silverlight和MVVM,我建议您查看MVVM Light。

答案 1 :(得分:2)

PRISM框架最适用于大型模块化项目,尤其是当开发可能跨越团队时。它提供了非常松散的耦合,允许完全独立开发模块,可以按需单独下载

MVVM是一个完全独立的问题,可以与大多数框架一起使用。它基本上是一种通过在视图中绑定的中间对象中提供视图与支持数据的模式。这种分离允许对数据对象和业务逻辑进行单独测试,而不是将视图与大量代码隐藏在一起。

MVVM是“最常见的”,因为它出现在多个框架中,包括PRISM(甚至是没有框架的普通旧Silverlight)。 PRISM的学习和实施工作量要多出几个数量级,但值得大型项目的努力。

答案 2 :(得分:2)

Prism远不止MVVM,它提供了许多开箱即用的功能/基类,您必须在自定义MVVM实现中实现它们; Prism提供了一种解决SL或WPF应用程序(EventAggregator,导航框架,命令等)中遇到的各种问题/场景的标准方法。

我同意其他答案 -

  

Prism适用于将要维护/发展的大规模应用程序   许多开发人员多年来一直。

MVVM更适合需要一次性快速开发的轻量级应用。虽然如果你想要灵活性,你可以开发自己的MVVM框架或使用可用的框架(如MVVM light等)。

另外看看我问过的关于棱镜的这个问题 - Custom MVVM implementation Vs. PRISM

答案 3 :(得分:2)

MVVM是一种模式,您可以使用Prism框架来实现它。还要记住,如果你在代码隐藏中放入任何代码,那么你就是在破坏模式。如果你想单独进行任何特定的检查或操作,那么通过添加一个派生自Converter类的类来使用Converter属性(例如:如果你想在网格/面板上使用动画等)

答案 4 :(得分:1)

PRISM是一个框架,MVVM是一种设计模式。因此,您可以在Silverlight应用程序中同时使用PRISM和MVVM。

答案 5 :(得分:1)

我在一个项目中使用了MVVM和Prism。我也是单独编码,我喜欢两者。帮助我掌握了项目的概况。

Prism和MVVM完美结合。 Prism的Region-Manager让我将视图分成几部分,Controller / Microkernel(我使用Microsofts Unity / Not实际上是Prism-Framework的一部分)帮助我保持松散耦合的部分。还有更多......

我有大约40k行代码,我坚信使用Prism Framework和MVVM可以节省我比花费更多的时间。但是一开始需要一点时间。

阅读有关MVVM的提示:

乔什史密斯对我来说是一个很大的帮助。这是一篇文章:http://msdn.microsoft.com/en-us/magazine/dd419663.aspx

如果德语对你好,我几个月前正在阅读一篇dotnetpro文章。这正是一些问题,我花了很多时间弄明白:“JörgNeumann/ Flexibler Standard / dotnetpro 04/2012”

对于棱镜我真的不记得了,但并不是那么难。我不会说使用棱镜是一件很难的事。 MVVM在细节上要复杂得多。但我无法想象没有它就编程WPF应用程序。

希望它有所帮助!

答案 6 :(得分:1)

在学习Prism和Silverlight方面我也很天真,但过去几天在网上经过几个教程我可以说,Prism是一个框架,不适合小型应用程序。 因此,对于创建一个小应用程序,最好使用MVVM模式,就像你将使用Prism一样,那将是浪费精力,但如果你认为你的应用程序可以在此期间发展,那么使用Prism将是个好主意。 虽然Prism也将MVVM作为设计模式之一实现。

答案 7 :(得分:0)

我可以看到我们已经有很多关于什么是MVVM和Prism的答案。正如所说的MVVM是一种模式,可以帮助您编写更清晰的“几乎没有代码”的UI,而Prism是帮助您实现这一目标的框架之一。但是要使用MVVM模式,你必须使用任何框架(如Prism)并不是必须的,但如果你使用它们,它们会给你一些启动。你甚至可以尝试自己编写 http://channel9.msdn.com/Events/MIX/MIX10/EX15