2011-12-07 116 views
4

我目前正在对具有相当标准的分离结构这样一个项目:在MVVM和MVC之间共享模型?

库 - >服务 - >查看模型 - >查看

资源库和服务层使用POCO对象。视图模型是根据这些对象构建的,然后调用服务方法,然后传递给视图。

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

目前我处于奠定基础并且MVC方面都工作的阶段。我现在正在看WPF方面,并考虑使用MVVM光工具包。我的问题是:鉴于MVC和WPF应用程序共享视图模型,MVVM轻工具包(或任何其他工具包)是否合适? MVVM轻工具包不应该与MVC3一起使用吗?

我搜索了很长一段时间,发现没有具体的东西。预先感谢您的想法。

回答

5

恕我直言,答案是您将无法在MVVM和MVC之间成功共享ViewModels。尽管它们被称为同一件事,但它们非常适合特定的实现。例如,当您为WPF编写VM时,您需要实现命令,依靠双向绑定等,而这些都与MVC无关。 MVVM Light可帮助您使用WPF/SL实现MVVM,而MVC根本就与MVC无关。

我和你的情况类似,除了我的web项目是标准webforms而不是MVC。我在我的.Web和.Desktop项目之间共享我的.Business,.Model项目引用,但显然,它们都是自己的事情,包含业务结果(如果使用它们的话)。我对WPF非常新鲜,如果我的评估错误,我希望有人会纠正我。

+0

感谢您的信息。看了MVVM工具包多一点,我不得不说你可能是对的。它看起来像是针对WPF或基于Silverlight的应用程序。我认为这对于MVC3来说并不合适。 – Steve

+1

我已经标记为正确的,因为在MVC3和WPF应用程序之间共享相同的viewmodel是不可行的。但是,我所做的是拥有一个带有视图模型及其所有属性和验证的类库。这些是MVC3使用的视图模型。然后我扩展其中的每一个以添加所有命令等。这些是WPF使用的视图模型。这使我的代码保持干爽,具有所有必需的好处,而不是在两个地方定义相同的属性,验证等。 – Steve

+0

你能详细阐述一下你的方法吗?我面临着类似的情况,我想在MVC网站上重用我的数据层(POCO类),并通过MVVM for Win8和WindowsPhone公开它们。你是否将inotifychanged的东西添加到底层的POCO?或者在需要MVVM阶段的链中稍后注入它们? – SelAromDotNet

相关问题