Что такое «WPF сервисы»? - PullRequest
6 голосов
/ 29 мая 2009

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

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

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

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

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

Ответы [ 2 ]

14 голосов
/ 29 мая 2009

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

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

Обновление: С тех пор, как был сделан этот ответ, я написал сообщение в блоге Сервисы: Ваша ViewModel Deathstar , которое довольно хорошо освещает тему. Это было частью "серии" постов, и читатели также могут быть заинтересованы в первом посте Поведение - ваша верная модель представления Bazooka .

3 голосов
/ 29 мая 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...