【问题标题】:Sharing models between MVVM and MVC?在 MVVM 和 MVC 之间共享模型?
【发布时间】:2012-01-15 10:56:27
【问题描述】:

我目前正在从事一个具有相当标准的解耦结构的项目,如下所示:

存储库 -> 服务 -> 视图模型 -> 视图

存储库和服务层使用 POCO 对象。视图模型由这些对象构建并调用服务方法,然后传递给视图。

我有两个前端项目,一个使用 MVC3 的 Web 应用程序和一个使用 WPF 的桌面应用程序。 视图模型包含在一个独立的类库中,因为这两个应用程序的大多数是相同的。 (有一些例外,但这些是针对每个项目使用特定 VM 处理的)

目前,我正处于奠定基础并且 MVC 方面的所有工作都处于工作状态的阶段。我现在正在研究 WPF 方面并考虑使用 MVVM 轻量级工具包。

我的问题是:鉴于视图模型在 MVC 和 WPF 应用程序之间共享,MVVM 轻量级工具包(或任何其他工具包)是否合适? MVVM light toolkit 不应该与 MVC3 一起使用是否有某些原因?

我用谷歌搜索了很长一段时间,并没有发现任何具体的东西。提前感谢您的想法。

【问题讨论】:

    标签: wpf asp.net-mvc-3 mvvm mvvm-light


    【解决方案1】:

    恕我直言,答案是您将无法在 MVVM 和 MVC 之间成功共享 ViewModel。即使它们被称为相同的东西,它们也非常适合特定的实现。例如,当您为 WPF 编写 VM 时,您需要实现命令、依赖双向绑定等,这些都与 MVC 无关。 MVVM Light 帮助您使用 WPF/SL 实现 MVVM,同样与 MVC 无关。

    我和你的情况类似,除了我的 web 项目是标准 webforms 而不是 MVC。我在我的 .Web 和 .Desktop 项目之间共享我的 .Business 和 .Model 项目引用,但显然每个项目都对业务(如果您使用它们的服务)层的结果做了自己的事情。我对 WPF 很陌生,如果我的评估有误,希望有人能纠正我。

    【讨论】:

    • 感谢您的信息。多看了一下 MVVM 工具包,我不得不说你可能是对的。看起来它确实针对 WPF 或基于 silverlight 的应用程序。我不认为 MVC3 真的有意义。
    • 我已将此标记为正确,因为在 MVC3 和 WPF 应用程序之间共享相同的视图模型是不可行的。但是,我所做的是拥有一个包含视图模型及其所有属性和验证的类库。这些是 MVC3 使用的视图模型。然后我扩展其中的每一个以添加所有命令等。这些是 WPF 使用的视图模型。这让我的代码保持干爽,带来所有好处,而不是在两个地方定义相同的属性、验证等。
    • 您能详细说明您的方法吗?我面临着类似的情况,我想在 MVC 网站上重用我的数据层(POCO 类),并通过 MVVM 为 Win8 和 WindowsPhone 公开它们。您是否将 inotifychanged 的​​东西添加到底层的 POCO 中?还是在需要的 MVVM 阶段将它们注入到链中?
    • 恐怕在我之前的评论之后不久,我就放弃了这个项目的 MVC3 方面,纯粹专注于胖客户端。从本质上讲,我认为我尝试做的越多,就越困难。最后,我采用的方法对我不起作用,所以我不得不重复大量的工作和维护,或者只使用其中一种。
    猜你喜欢
    • 1970-01-01
    • 2017-01-14
    • 1970-01-01
    • 2012-02-16
    • 1970-01-01
    • 2011-07-22
    • 2012-05-09
    • 2014-02-26
    • 1970-01-01
    相关资源
    最近更新 更多