Мартин Фаулер имеет описание того, что такое сервис, в своей статье Dependency Injection . Проще говоря, сервис - это объект, который обеспечивает функциональность, которая будет использоваться другими объектами. Вы найдете термин, интенсивно используемый при обсуждении шаблонов Инверсия управления и Сервисный локатор .
Чтобы конкретизировать эту тему, давайте подумаем о том, как отобразить окно сообщения в шаблоне MVVM. Вызов MessageBox.Show () будет плохим, Рэй. Это тесно связывает ViewModel с архитектурой пользовательского интерфейса и затрудняет его тестирование. Вместо этого одним из решений будет использование службы, которую мы будем называть IDisplayMessage. Этот сервис каким-то образом предоставляется ViewModel (через один из двух шаблонов выше), и этот сервис используется для «отображения» сообщения. Во время нормальной работы конкретная версия этого сервиса будет вызывать MessageBox.Show (), но во время тестирования мы можем предоставить другую конкретную версию (двойной тест), которая ведет себя по-разному (часто, или мы обеспечиваем отображение ViewModel сообщение, версия, которая записывает вызов, чтобы мы могли утверждать, что он произошел). Onyx (отказ от ответственности: я автор) предоставляет именно такую услугу и инфраструктуру, необходимую для предоставления этой услуги (и других) вашей ViewModel.
Обновление: С тех пор, как был сделан этот ответ, я написал сообщение в блоге Сервисы: Ваша ViewModel Deathstar , которое довольно хорошо освещает тему. Это было частью "серии" постов, и читатели также могут быть заинтересованы в первом посте Поведение - ваша верная модель представления Bazooka .