有人在对堆叠溢出问题的回答中告诉我,MVVM模式的“两大支柱”是: 1) 附加行为和2) 服务。我猜想他的意思是"WPF服务“--我发现这个短语有以下几种用法:
PresentationFoundation.dll定义了WPF控件类型、动画和多媒体支持、数据绑定支持以及其他WPF服务__。 许多这些WPF服务(去耦合事件、丰富的数据库、样式、资源等)是软件开发的最佳实践,汇聚在一个单一的声明性UI堆栈中。 您将了解WPF背后的动机,学习XAML的语法,检查核心编程模型,并调查几个WPF服务__。
我甚至没有提到"WPF服务“这类WPF书籍,所以这仅仅是一个词,意思是"WPF功能”,例如解耦事件、丰富的数据库、样式等等,还是在"WPF服务“这个术语后面还有其他的东西?
发布于 2009-05-29 10:46:16
他说的不是WPF服务,而是应用程序服务。也就是说,将部分功能抽象为多个VM可以使用的独立服务。
发布于 2009-05-29 16:34:41
Martin在他的依赖注入文章中描述了什么是服务。简单地说,服务是一个提供其他对象将要使用的功能的对象。在讨论模式控制反转和服务定位器时,您会发现这个术语被大量使用。
为了使这个主题具体化,让我们考虑一下如何在MVVM模式中显示消息框。打电话给MessageBox.Show()是不好的,雷。这将ViewModel与UI体系结构紧密地联系在一起,并使ViewModel很难测试。相反,一种解决方案是使用服务,我们称之为IDisplayMessage。此服务以某种方式提供给ViewModel (通过上述两种模式之一),该服务用于“显示”一条消息。在正常操作期间,此服务的具体版本将调用MessageBox.Show(),但在测试期间,我们可以提供不同的具体版本(测试双),该版本的行为不同(通常为noop,或者如果我们确保ViewModel显示消息,则该版本记录调用,以便断言发生了调用)。奥尼 (免责声明:我是作者)提供了这样一个服务,以及向您的ViewModel提供此服务(以及其他服务)所需的基础设施。
更新:自从做出这个回应以来,我写了一篇博客文章服务:您的ViewModel死亡之星,它很好地涵盖了这个主题。这是“系列”文章的一部分,读者也可能对第一篇文章行为-你信任的ViewModel火箭筒感兴趣。
https://stackoverflow.com/questions/925017
复制相似问题