自定义MVVM实现VS. PRISM

时间:2011-06-06 12:13:59

标签: .net wpf mvvm frameworks prism

这个问题的灵感来自这个封闭的问题:

What does Prism actually offer the developer? And is it worth it?

我已经在企业应用程序中实现了自己的自定义MVVM实现。我有兴趣知道:

  • 我为什么要学习PRISM(特别是PRISM,而不是其他MVVM框架)?
  • PRISM对定制MVVM实施的好处和
  • 学习PRISM是否值得投资?

我希望这个问题不是主观的,每个人都请不要参与论证:)

4 个答案:

答案 0 :(得分:25)

与许多为您执行常见任务的框架一样,您可以获得:

  1. 通过更多眼球测试:而不仅仅是你自己。这(希望)包括单元测试,您在构建自己的框架时可能会或可能不会这样做。
  2. 对其他开发人员更具可读性:没有其他人具有您的自定义MVVM框架的经验。但是,如果另一个开发人员加入您的项目,或加入您的团队,或加入您的公司,他们可以直接进入Prism代码。
  3. 更好的文档:同样,任何新加入的人都可能需要通过手动收集大脑和团队中任何其他用户的集体知识并通过查看源代码。第三方框架有自己的文档,互联网上有更多博客文章。
  4. 更好的社区:您可以在StackOverflow上提问“如何使用Prism进行X?”你不能用你的自定义框架问这个问题。
  5. 可能更强大:通过需要为您/您的团队提供更多用户,我们会添加更多功能。如果你需要做一些你以前从未做过的与MVVM相关的事情,很可能它不支持它自己的MVVM框架。但它可能在Prism中。
  6. 更好的结构:假设您想要做与MVVM相关的事情,但它不在Prism中。很有可能,这是有充分理由的!如果某个东西不在一个(合理成熟的)框架中,而是在一个给定的域中工作,那就表明你想要做的是一种不自然或笨拙的方法来解决问题。使用您自己的框架,很容易说“哦,我会添加该功能”,然后6个月后意识到您犯了一个大错误,因为这个新功能使您的代码很难遵循或最终成为一个矢量批量错误或诸如此类的。
  7. 一个简历项目:对于雇用“实施和使用自定义MVVM框架”的人,我会有一种复杂的感觉。虽然这可能意味着他们很聪明,但它也可能表明可怕的“没有建立在这里的综合症”。另一方面,将“Microsoft Prism MVVM Framework”放在一个巨大的技术列表中可能会很好,但不是一个哇哇。两个世界中最好的将是一个更长的要点,沿着“对MVVM模式的深刻理解,通过在切换到MVVM Prism之前首先实现用于学习目的的玩具MVVM框架来实现”。是的,这三者之间的差异不会影响或破坏你的简历,并且非建筑综合症是一种有希望在面试中出现的东西,但是值得记住,特别是如果你正在申请对于一个获得足够简历的地方,他们可以抛弃任何让他们轻微不安的东西。

答案 1 :(得分:8)

PRISM对您来说很有趣,因为它不仅仅是一个MVVM框架。是的,它的一部分实际上可以被认为是一个MVVM框架(NotificationObjectEventAggregator和Command对象都是它的例子),但它提供了更多。

它允许您创建多个松散情侣“模块”的复合应用程序。它具有非常灵活和可扩展的导航框架(区域导航),提供与IoC容器(特别是Unity和MEF)的集成以及许多其他功能。

除此之外,文档(包括电子书)非常好,并附带了大量示例和快速入门。顺便说一句,我认为值得投资,这不应该太多。

希望这会有所帮助:)

答案 2 :(得分:1)

Prism是一个具有MVVM功能的应用程序组合框架,但(在我看来)并不是一个功能齐全的MVVM框架。它提供了进行基本MVVM开发所需的最低要求。

有关应用程序组合框架和MVVM框架的细分,请参阅我之前对类似问题的回答。大多数应用程序从两个类别中选择一个:

Alternatives to Prism + MEF for modular MVVM apps

答案 3 :(得分:0)

使用prism和MEF,您可以构建高度可扩展性和可维护性。净申请。每个模块都有自己的UI,在自己独立的dll中。您的模块或扩展与MainUI之间的唯一连接将是您将注入扩展的UI的区域。相信我,它具有高度可扩展性和可维护性