Что такое службы WPF?

Кто-то сказал мне в ответе на вопрос stackoverflow, что «две большие пушки» для шаблона MVVM: 1) прикрепленное поведение и 2) сервисы. Я предполагаю, что он имеет в виду "службы WPF" фразу, которая, как я обнаружил, используется в следующих случаях:

PresentationFoundation.dll определяет типы элементов управления WPF, поддержку анимации и мультимедиа, поддержку привязки данных и другие службы WPF.

Многие из этих служб WPF (несвязанная обработка событий, расширенная привязка данных, стили, ресурсы и т. д.) представляют собой передовой опыт разработки программного обеспечения, который объединяется в единый декларативный стек пользовательского интерфейса.

Вы поймете мотивацию WPF, изучите синтаксис XAML, изучите базовую модель программирования и ознакомитесь с несколькими службами WPF.

Ни в одной из книг WPF я даже не упоминаю «службы WPF» как таковые, так что это просто слово, означающее «функции WPF», такие как несвязанная обработка событий, расширенная привязка данных, стилизация и т. д., или есть что-то еще стоит за термином «Службы WPF»?


person Edward Tanguay    schedule 29.05.2009    source источник
comment
Да, речь идет о характеристиках. Я бы сказал, что в этом контексте услуги — это просто модное слово, чтобы оно звучало лучше. Так же, как пользовательский опыт и тому подобное.   -  person Botz3000    schedule 29.05.2009


Ответы (2)


Он говорит не о службах WPF, а о службах приложений. То есть абстрагирование некоторой части функциональности в независимую службу, которую могут использовать несколько виртуальных машин.

person Kent Boogaart    schedule 29.05.2009
comment
Что это значит, вы говорите о службе Windows, веб-службе? В статье в Википедии о WPF приведены примеры сервисов приложений WPF, таких как пользовательский интерфейс, 2D- и 3D-рисование, фиксированные и адаптивные документы, расширенная типографика, векторная графика, растровая графика, анимация, привязка данных, аудио и видео. Что бы это значило, что тогда, например. несколько ViewModels могут использовать привязку данных. Это всегда так. Что стоит за этим словом сервисы WPF и сервисы приложений в этом смысле? Или вы имеете ввиду в классическом понимании типа службы безопасности? - person Edward Tanguay; 29.05.2009
comment
Под сервисом я просто подразумеваю абстракцию над частью функциональности. Возможно, базовая функциональность — это COM-компонент, или доступ к базе данных, или что-то еще. Не имеет значения — виртуальная машина просто знает об интерфейсе, который она может использовать для взаимодействия с указанными функциями. - person Kent Boogaart; 29.05.2009

У Мартина Фаулера есть описание службы в его статье Dependency Injection. Проще говоря, служба — это объект, предоставляющий функциональные возможности для использования другими объектами. Вы обнаружите, что этот термин часто используется при обсуждении паттернов Инверсия управления и Поиск сервисов.

Чтобы конкретизировать эту тему, давайте подумаем о том, как мы будем отображать окно сообщения в шаблоне MVVM. Вызов MessageBox.Show() был бы плохим, Рэй. Это тесно связывает ViewModel с архитектурой пользовательского интерфейса и затрудняет тестирование ViewModel. Вместо этого одним из решений было бы использование службы, которую мы назовем IDisplayMessage. Эта служба каким-то образом предоставляется ViewModel (через один из двух приведенных выше шаблонов), и эта служба используется для «отображения» сообщения. Во время нормальной работы конкретная версия этой службы будет вызывать MessageBox.Show(), но во время тестирования мы можем предоставить другую конкретную версию (тестовый двойник), которая ведет себя по-другому (часто noop, или если мы гарантируем, что ViewModel отображает сообщение, версия, которая записывает вызов, чтобы мы могли утверждать, что он произошел). Onyx (отказ от ответственности: я автор) предоставляет именно такую ​​услугу и инфраструктуру, необходимую для предоставления этой услуги ( и другие) в вашу ViewModel.

Обновление: после получения этого ответа я написал сообщение в блоге Services: Your ViewModel Deathstar, который довольно хорошо раскрывает тему. Это было частью «серии» сообщений, и читатели могут также заинтересоваться первым сообщением Поведение — ваша верная базука ViewModel.

person wekempf    schedule 29.05.2009
comment
Почему бы не указать на ваши статьи? Прикрепленные варианты поведения: wekempf.spaces.live.com/Blog/cns!D18C3EC06EA971CF !940.entry Службы: wekempf.spaces.live. com/Blog/cns!D18C3EC06EA971CF!951.entry - person Trainee4Life; 27.09.2009
comment
В то время статей не существовало, и я просто не подумал вернуться сюда и обновить ответ. - person wekempf; 30.09.2009