代码之家  ›  专栏  ›  技术社区  ›  Edward Tanguay

“WPF服务”到底是什么?

  •  6
  • Edward Tanguay  · 技术社区  · 16 年前

    有人告诉我 answer to a stackoverflow question MVVM模式的“两门大炮”是1) 依附行为 2) 服务 . 我想他是说 WPF服务 “我发现这个短语有以下几种用法:

    presentationfoundation.dll定义WPF控件类型、动画和 多媒体支持,数据绑定 支持和其他 WPF服务 .

    其中许多 WPF服务 (去耦合事件,富数据绑定, 样式、资源等)是软件 开发最佳实践 在单个声明性UI中聚合 栈。

    您将了解WPF背后的动机,学习XAML的语法, 检查核心编程模型,并调查几个 WPF服务 .

    我甚至没有提到过任何一本WPF书籍“WPF服务”,所以这只是一个意思 WPF特性 “比如分离的事件、丰富的数据绑定、样式等,或者在术语“WPF服务”后面还有其他东西吗?”

    2 回复  |  直到 13 年前
        1
  •  3
  •   Tim Cooper    13 年前

    他说的不是WPF服务,而是应用程序服务。也就是说,将一些功能抽象为多个虚拟机可以使用的独立服务。

        2
  •  14
  •   wekempf    15 年前

    马丁·福勒描述了他的服务 Dependency Injection 文章。简单地说,服务是一个提供其他对象使用的功能的对象。在讨论模式时,你会发现这个词使用得很频繁。 Inversion of Control Service Locator .

    为了使这个主题具体化,让我们考虑一下如何在MVVM模式中显示消息框。调用messagebox.show()会很糟糕,ray。这将ViewModel与UI体系结构紧密相连,并使ViewModel难以测试。相反,一种解决方案是使用服务,我们称之为IDisplayMessage。该服务以某种方式(通过上述两种模式之一)提供给ViewModel,并且该服务用于“显示”消息。在正常操作期间,此服务的具体版本将调用messagebox.show(),但在测试期间,我们可以提供不同的具体版本(测试双重版),其行为不同(noop经常出现,或者如果我们确保viewModel显示消息,则记录调用的版本,以便我们可以断言发生了该调用)。 Onyx (免责声明:我是作者)提供这样的服务,以及为您的ViewModel提供此服务(以及其他服务)所需的基础结构。

    更新: 自从这篇文章发表以来,我写了一篇博文 Services: Your ViewModel Deathstar ,这个话题讲得很好。这是一系列文章的一部分,读者也可能对第一篇文章感兴趣。 Behavior - Your Trusty ViewModel Bazooka .