С коллегой возникла дискуссия что считать сервисом, а что классом. После непродолжительной размышления пришли к выводу, что скорее всего сервис - это класс, который имеет зависимости и служит для повторяющихся задач, но нам самим такая формулировка не нравится, так как во многом подходит и обычным статическим классам-помощникам.
В чём принципиальная разница между сервисом и классом? По каким признакам можно сказать, что это уже не класс, а сервис? По каким признакам можно сказать, что это не сервис, а класс?
Обычно сервисом называют класс, который используется на всех уровнях приложения. Например сервис логирования, сервис аутентификации. Еще сервисом могут называть фасад какой то функциональности, типа сервис печати, сервис отправки писем. Сервисом могут называть запущенный отдельно код со своим ограниченным контекстом, типа Discovery Service, или сервис обмена валют.
Также есть другие подходы. Кто то делит классы на классы с данными и классы с методами и называет методы сервисами. Кто то говорит, что если класс чисто функциональный и может/должен существовать в единственном экземпляре - то он тоже сервис. В контейнере там в принципе зарегистрированные классы называются сервисами.
Сервис, как я думаю, широкое понятие. А класс - это весьма конкретное. Вы всегда можете понять, является ли обсуждаемый предмет классом. Но не всегда ясно, является ли он сервисом. То есть однозначного ответа нет.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Есть картинки и компанииКаждая компания может иметь много картинок
Мне нужно, что бы на странице с товарами, которые грузятся и базы данных, была возможность изменять эти столбцы товаров прямо на странице...