Я зазвичай використовую сервісний рівень при розробці програми ASP.NET MVC. Подібно до шаблону службового рівня, який Мартін Фаулер обговорює в " Шаблонах архітектури корпоративних додатків" . Це містить вашу бізнес-логіку та робить контролери досить тонкими. В основному контролери використовують сервісний рівень для отримання моделей доменів, які потім трансформуються у моделі представлення. Я також використовую шаблон дизайну одиниці роботи для обробки транзакцій, а шаблон дизайну сховища для інкапсуляції рівня доступу до даних для спрощення модульного тестування та можливості легкої заміни ORM. На цьому малюнку показано типові шари, які я використовую в програмі MVC.
На цій схемі сервісний рівень позначений як "Рівень додатків або доменів", оскільки я вважаю, що люди заплутуються, коли ви використовуєте термін "рівень послуг". Вони схильні думати, що це веб-сервіс. Це насправді збірка, яку можуть використовувати ваші улюблені технології веб-служб, такі як ASP.NET Web API або WCF, а також контролер.
Що стосується конвенцій про іменування, я зазвичай використовую те, що описує домен, а потім службу. Наприклад, якщо у мене є сервісний рівень, який обробляє членство користувачів, тоді я мав би клас під назвою MembershipService, який має всі методи, необхідні контролерам та веб-службам для запиту та маніпулювання доменом членства. Зверніть увагу: у вас може бути кілька доменів в одній програмі, тому ви можете мати кілька рівнів обслуговування. Я маю на увазі те, що вам не потрібно мати одну монолітну службу, яка б опікувалася всією програмою.