Обычно я использую уровень обслуживания при разработке приложения ASP.NET MVC. Это похоже на шаблон уровня обслуживания, который Мартин Фаулер обсуждает в « Шаблонах архитектуры корпоративных приложений» . Он инкапсулирует вашу бизнес-логику и делает контроллеры довольно тонкими. В основном контроллеры используют уровень обслуживания для получения моделей предметной области, которые затем преобразуются в модели представления. Я также использую шаблон проектирования единицы работы для обработки транзакций и шаблон проектирования репозитория для инкапсуляции уровня доступа к данным для упрощения модульного тестирования и возможности легко заменять ORM. На этом рисунке показаны типичные слои, которые я использую в приложении MVC.
Уровень обслуживания обозначен на этой диаграмме как «Уровень приложения или домена», потому что я обнаружил, что люди путаются, когда вы используете термин «Уровень обслуживания». Они склонны думать, что это веб-сервис. На самом деле это сборка, которая может использоваться вашей любимой технологией веб-служб, такой как веб-API ASP.NET или WCF, а также в качестве контроллера.
Что касается соглашений об именах, я обычно использую что-то, что описывает домен, за которым следует служба. Например, если у меня есть уровень сервиса, который обрабатывает членство пользователей, тогда у меня будет класс с именем MembershipService, который имеет все методы, необходимые для контроллеров и веб-сервисов для запроса и управления доменом членства. Обратите внимание, что у вас может быть несколько доменов в одном приложении, поэтому у вас может быть несколько уровней обслуживания. Я хочу сказать, что вам не обязательно иметь одну монолитную службу, которая заботится обо всем приложении.