WPF棱镜+现有的WPF应用程序

本文关键字:WPF 应用程序 棱镜 | 更新日期: 2023-09-27 17:50:45

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

有了大约3年的WPF/MVVM的良好经验-我觉得我应该从Prism开始(我现在对Prism框架一无所知-我现在计划学习它)。

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

由于它是一个庞大的应用程序-将所有内容移动到Prism将是一项相当艰巨的任务。

问题:-我计划开始一个新的开发(一个大的功能实现)。我可以使用Prism进行新的开发吗?我很乐意从头开始编写大部分组件,并慢慢地将整个应用程序迁移到Prism。

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

  • 我有一种感觉,学习PRISM可以像从winforms到WPF一样多的学习曲线-这是真的吗?对我应该读的书有什么建议吗?我是一个有点程序化的学习者,更喜欢从基础知识一步一步地学习(即关于Prism的一切)。

  • 我将获得Prism的巨大优势是什么?在GUI级别上是否会有性能影响?

问候,Vinay

WPF棱镜+现有的WPF应用程序

我推荐官方指南,顺便说一下,它从定义Prism开始,如下所示:

Prism以示例和文档的形式提供指导帮助您轻松设计和构建丰富,灵活,易于维护Windows Presentation Foundation (WPF)桌面应用程序。使用体现重要建筑设计原则的设计模式,比如关注点分离和松耦合,Prism可以帮助您使用松散耦合的组件来设计和构建应用程序可以独立进化,但哪些可以轻松无缝地进化集成到整个应用程序中。总之,这些应用程序是"为持久而建"answers"为变化而建"。这些类型应用程序称为复合应用程序

我强调了我认为最能概括这类应用程序的一句话,以及他们用来指代这类应用程序的术语:复合应用程序。

如果您的应用程序可以从松散耦合模块中获益,那么Prism可能是您的选择。例如,在开发ERP时,您可以选择将每个相关功能区域作为一个模块来实现。您可能希望更细粒度,并为UI的不同部分使用模块,例如在股票交易者参考实现中。

我还没有发现学习曲线有多么陡峭。的确,指南组织得很好,你可以在每个时刻直接进入你需要的概念,而不必阅读全文。从WinForms到WPF绝不是这样的改变:它建立在你熟悉的MVVM基础上,增加了一些更高层次的抽象,并使用了一些已知的模式,如发布者/订阅者事件。

底线是,对于适当大小的应用程序,您应该通过投资使用Prism来获得可维护性。对于已经精通MVVM的人来说,学习应该很容易。

编辑:回复评论

所以,我可以在现有的WPF应用程序中启动一个基于PRISM的GUI集?

绝对是的。你可以选择你认为有用的部分,最终很可能会越来越多地使用。请注意,您可能需要更改应用程序的初始化以实现Bootstrapper。然而,这并不是强制性的,所以只要看看模式,并开始使用那些你认为合适的模式。它不是一个全有或全无的框架。

将现有应用程序迁移到Prism是一项相当艰巨的任务。让应用的一部分是Prism,而另一部分不是,这是可能的,但我认为你会发现自己在两个世界之间来回跳跃,必须找到让它们完美结合的方法,这让你感到非常沮丧。

我个人不会走这条路。如果您希望获得依赖注入的好处,那么逐步采用依赖注入库要比采用大得多的Prism框架容易得多。具体来说,当你在构建新特性时,要把它们的依赖项注入进去……一开始,这段代码会失败,所以你要去每个依赖项实际定义的地方,并添加一行代码来将它们注册到你的DI容器中。