簡體   English   中英

究竟什么是“WPF服務”?

[英]What exactly are “WPF services”?

有人在回答stackoverflow問題時告訴我,MVVM模式的“兩大槍”是1) 附加行為和2) 服務 我認為他的意思是“ WPF服務 ”這個短語,我發現它在以下方面使用:

PresentationFoundation.dll定義了WPF控件類型,動畫和多媒體支持,數據綁定支持以及其他WPF服務

許多這些WPF服務 (解耦事件,豐富的數據綁定,樣式,資源等)是軟件開發最佳實踐,它們集中在單個聲明性UI堆棧中。

您將了解WPF背后的動機,學習XAML的語法,檢查核心編程模型,並調查幾個WPF服務

我甚至沒有提到“WPF服務”這樣的WPF書籍,所以這只是一個詞,意思是“ WPF功能 ”,例如分離事件,豐富的數據綁定,樣式等等,或者“WPF”這個術語背后還有其他什么服務”?

Martin Fowler描述了他的依賴注入文章中的服務。 簡而言之,服務是一個提供其他對象使用的功能的對象。 在討論模式反轉控制服務定位器時,你會發現這個術語用得很多。

為了使這個主題具體化,讓我們考慮一下我們如何在MVVM模式中顯示消息框。 調用MessageBox.Show()會很糟糕,Ray。 這將ViewModel與UI架構緊密聯系在一起,使ViewModel難以測試。 相反,一種解決方案是使用服務,我們稱之為IDisplayMessage。 此服務以某種方式(通過上述兩種模式之一)提供給ViewModel,此服務用於“顯示”消息。 在正常操作期間,此服務的具體版本將調用MessageBox.Show(),但在測試期間,我們可以提供不同的具體版本(測試雙精度版)(通常是noop,或者如果我們確保ViewModel顯示)消息,一個記錄調用的版本,因此我們可以聲明它已經發生了)。 Onyx (免責聲明:我是作者)提供了這樣的服務,以及向ViewModel提供此服務(和其他服務)所需的基礎結構。

更新:自從做出回復以來,我寫了一篇博客文章服務:你的ViewModel Deathstar ,它很好地介紹了這個主題。 這是帖子的“系列”的一部分,讀者也可能對第一個帖子行為 - 你的Trusty ViewModel Bazooka感興趣。

他不是在談論WPF服務,而是在談論應用服務。 也就是說,將一部分功能抽象為多個VM可以使用的獨立服務。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM