【问题标题】:WPF Prism + Existing WPF Application [closed]WPF Prism + 现有的 WPF 应用程序 [关闭]
【发布时间】:2015-08-08 05:24:34
【问题描述】:

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

在 WPF/MVVM 方面拥有大约 3 年的良好经验 - 我觉得我应该从 Prism 开始(目前我对 PRISM 框架一无所知 - 我打算现在就学习它)。

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

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

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

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

  • 我有一种感觉,学习 PRISM 就像从 winforms 迁移到 WPF 一样多的学习曲线 - 这是真的吗?关于我应该遵循的书籍的任何建议?我有点程序学习者,更喜欢从基础开始逐步学习(即关于 Prism 的一切)。

  • 我将通过 Prism 获得哪些巨大优势。在 GUI 级别会不会有任何性能影响?

问候,维奈

【问题讨论】:

  • 这个问题主要是基于意见的。这不符合 stackoverflow 规则(或任何与此相关的问答网站)。
  • 我想在 StackOverFlow 上,我们可以征求专家的意见,不是吗?
  • @Kryptos:OP 不会问“Prism 是好是坏?”。这个问题很正确。
  • 你的问题太宽泛了。使用 Prism 的两个人可能感到不同。 Stackoverflow 问题应该是关于具体的编程问题,而不是使用软件/工具是否。见help
  • @Dennis 在说我错之前请阅读 stackoverflow 规则。在现有项目上使用新软件实际上取决于软件本身。您认为在这里可以找到明确的答案吗?这将如何帮助其他有相同问题的用户。 StackOverflow 旨在建立一个知识库。但是这里的问题太宽泛了,更适合每个用户发表意见或分享自己项目经验的论坛。我并不是说这个问题不合法,只是说它不适合这里。

标签: c# .net wpf mvvm prism


【解决方案1】:

我推荐the official guide,顺便说一下,它首先将 Prism 定义如下:

Prism 以样本和文档的形式提供指导, 帮助您轻松设计和构建丰富、灵活且易于维护的 Windows Presentation Foundation (WPF) 桌面应用程序。使用 体现重要架构设计原则的设计模式, 例如关注点分离和松耦合,Prism 可以帮助您 使用松散耦合的组件设计和构建应用程序 可以独立发展,但可以轻松无缝地发展 集成到整个应用程序中。 简而言之,这些应用程序 是“经久耐用”和“为变革而生”。这些类型的 应用程序称为复合应用程序

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

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

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

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

编辑:回复评论

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

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

【讨论】:

  • 非常感谢@jnovo,那么,我可以在现有的 WPF 应用程序中启动一个基于 PRISM 的 GUI 集吗?不想再问太多,只想快速回答是/否……休息我会通过学习来做的。
  • @VinayDwivedi 看到编辑。
【解决方案2】:

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

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

【讨论】:

  • 非常感谢您的洞察罗伯特。我最初想沿着 DI fw 路径走下去。我已经使用基本的 SOLID 原则(所有新开发)编写了 DI。我的想法是编写新组件,然后慢慢开始将其他部分迁移到 PRISM 中。这似乎是不可避免的,因为现有的非 MVVM 代码对于单元测试来说非常令人沮丧并且有很多依赖关系。我确实有这个意图 - 只是想为更好的未来和适应性选择正确的道路,您预见到还有其他挑战吗?
  • 或者可能是,根据这个建议,我将在接下来的几周内创建一个 POC,无论如何这将是一个学习。非常感谢大家的投入!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-12-16
  • 1970-01-01
  • 1970-01-01
  • 2012-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多