【发布时间】:2015-12-20 10:18:21
【问题描述】:
我们在 Windows 8.1 中有一个与 Win 10 兼容的工作项目。现在需要将此项目转换为 UWP。在早期的项目中,我们使用 PRISM 作为 MVVM 的框架。现在的问题是对于UWP应用,Prism的新版本还没有发布,我们正在考虑使用MVVMLight。
我对这两个框架都是新手,即 PRISM 和 MVVMLight。现在我的问题是将代码库从 PRISM 迁移到 MVVMLight 会有多困难。如果困难,应该等待PRISM更新版本发布。如果我们应该迁移到 MVVMLight,需要进行哪些重大更改。
根据我的观察,代码库与 PRISM 高度耦合,在整个代码中广泛使用 IResourceLoader、ISessionStateService 等接口。另外,我读到 PRISM 有一个学习曲线,而 MVVMLight 没有。因此,如果我们决定迁移到 MVVMLight,我是否必须先学习 PRISM 来理解代码库,然后再学习 MVVMLight 来移植代码库。如果我们决定等待本周某个时间发布更新版本的 PRISM,会不会有重大的代码更改?
两个框架如何支持单元测试。
既然分配给这项任务的时间不多,那么哪种方式最有效?
【问题讨论】:
-
“代码库与 PRISM 高度耦合” - 我认为这是您最大的问题。
-
好的。因此,您能否介绍一下迁移到 MVVMLight 需要付出哪些努力,因为我们还没有批准使用 PRISM。我确实说过,这两个框架都是新手。
-
你不需要一个花哨的框架来让 MVVM 为你工作,它只是让 一些 的事情更容易实现,比如 依赖注入 例如。圣杯是让您的代码自适应以改变、分离层并将实现公开为接口。除非您能找到分离依赖关系的方法,否则使用花哨的框架很可能会将您与该框架联系起来。这是一个相当庞大的话题,但我建议您阅读adaptive code。
-
虽然@MikeEason 说最好解耦尽可能多的代码是正确的,但您必须知道选择PRISM 与MVVM light 相比具有一些优势。因为它包含您不再需要自己编写的代码。一个示例是在导航时将 ViewModel 数据保存到本地存储。因此,如果您想继续使用另一个框架,则需要重写内置功能...
-
值得注意的是Prism 6.0 for UWP applications has been released自从提出这个问题以来。
标签: c# mvvm prism mvvm-light uwp