WPF Prism +现有的WPF应用程序

时间:2015-05-26 13:37:58

标签: c# .net wpf mvvm prism

我有一个现有的应用程序。

拥有大约3年的WPF / MVVM经验 - 我觉得我应该从Prism开始(我现在还不了解PRISM框架 - 我现在计划学习它。)

目标是 - - 使应用程序成为基于SOLID(设计)的框架。现有代码是MVVM(最近的新功能)和模型背后的代码(现有功能)的混合

因为它是一个巨大的应用程序 - 将所有东西都移到Prism将是一项相当艰巨的任务。

问题: - 我打算开始一个新的开发(一个很棒的功能实现)。我可以将Prism用于新开发吗?我很乐意从头开始编写大部分组件,然后慢慢地将整个应用程序移动到Prism。

e.g。现有的前台实时交易应用程序,计划向其添加后台/中台功能,并将前台功能慢慢移至Prism。

  • 我有一种感觉,学习PRISM可以像从winforms转向WPF一样多的学习曲线 - 这是真的吗?关于我应该遵循的书籍的任何建议?我是一个程序性的学习者,更喜欢从基础知识(即关于棱镜的一切)中逐步学习。

  • 我将从Prism获得的巨大优势是什么? GUI级别可以有任何性能命中吗?

问候,Vinay

2 个答案:

答案 0 :(得分:2)

我建议the official guide顺便说一下,按照以下方式定义Prism:

  

Prism以样本和文档的形式提供指导   帮助您轻松设计和构建丰富,灵活且易于维护   Windows Presentation Foundation(WPF)桌面应用程序。运用   设计模式体现了重要的建筑设计原则,   如关注点分离和松散耦合,棱镜可以帮助你   使用松散耦合的组件设计和构建应用程序   可以独立发展,但可以轻松无缝地发展   整合到整个应用程序中。总之,这些应用程序   是"建立持续#34;和#34;为变革而建立。"这些类型   应用程序称为复合应用程序

我已经突出显示了我认为最能概括的句子以及他们用来指代此类应用程序的术语:复合应用程序。

如果您的应用程序可以从松散耦合的模块中受益,那么Prism可能是最佳选择。例如,在开发ERP时,您可以选择将每个相关的功能区域作为模块来实现。您可能希望更细化并使用模块用于UI的不同部分,例如stock trader reference implementation

我还没有发现学习曲线非常陡峭。实际上,the guide组织得非常好,您可以直接了解每个时刻所需的概念,而无需阅读整个内容。绝不是从WinForms转向WPF这样的变化:它建立在您熟悉的MVVM基础之上,添加了一些更高级别的抽象,并使用了一些已知的模式,如发布者/订阅者事件。

最重要的是,对于尺寸合适的应用程序,您应该通过投资使用Prism来获得可维护性。已经精通MVVM,学习应该很容易。

编辑:回答评论

  

那么,我可以在现有的WPF应用程序中启动基于PRISM的GUI集吗?

当然,是的。您可以使用您认为有用的位,并且最有可能最终使用越来越多的位。请注意,您可能需要更改应用程序的初始化以实现Bootstrapper。但是,它不是强制性的,所以只需看看模式并开始使用您认为合适的模式。它不是一个全有或全无的框架。

答案 1 :(得分:0)

将现有应用迁移到Prism是一项艰巨的任务。让应用程序的一部分成为Prism,而其中一部分不可能,但我认为你会发现自己变得非常沮丧,不得不在两个世界之间来回跳跃,并且必须找到让他们一起玩得很好的方法。

我个人不会走这条路。如果您希望获得依赖注入的好处,那么逐渐采用依赖注入库比采用更大的Prism框架要容易得多。具体来说,当您构建新功能时,请编写它们以便注入其依赖项...最初此代码将失败,因此您将转到实际定义每个依赖项的位置并添加一行代码以将其注册到您的DI容器。