В чем разнице между Service, Hadler, Proccess в архитектуре бэкенд?
Приведу пример из опенсурс приложения
Вот, я там увидел три интерфейса:
- JobService
public interface JobService {
void scheduleAsyncJob(JobEntity job);
JobQuery createJobQuery();
TimerJobQuery createTimerJobQuery();
SuspendedJobQuery createSuspendedJobQuery();
DeadLetterJobQuery createDeadLetterJobQuery();
HistoryJobQuery createHistoryJobQuery();
JobEntity findJobById(String jobId);
...
- JobHandler
public interface JobHandler {
String getType();
void execute(JobEntity job, String configuration, VariableScope variableScope, CommandContext commandContext);
}
- JobProcessor
public interface JobProcessor {
/**
* Process the given {@link JobProcessorContext}.
*
* @param jobProcessorContext the {@link JobProcessorContext} to process
*/
void process(JobProcessorContext jobProcessorContext);
}
Просто если в название есть
- слово
Repository, то понятно, что это обращение к хранилищу данных - слово
Mapper или Mapping, то это сопоставление или отображение данных из одной сущности к другой.
Вопрос, о чем мне должны говорить слова Service, Hadler, Proccess в названии интерфейса.
UPD: И что из чего можно вызвать?
Я понимаю, что в Service как правило хранится бизнес логика, и там может быть обращение и к Repository так и к Mapper.
А к чему можно обращаться на уровне Hadler и Proccess?
Если рекомендуете литературу по данной теме, буду крайне признателен)
Ответы (1 шт):
Что написано, то и говорит :
Service > это просто один из слоёв архитектуры
Цитата из статьи:
Сервисный слой (Service layer) — это шаблон проектирования, который инкапсулирует бизнес логику вашего приложения и определяет границу и набор допустимых операций с точки зрения взаимодействующих с ним клиентов.
Думаю, что звучит запутанно и сложно. Если простыми словами, то вы сосредотачиваете логику вашего приложения в одном (или нескольких) классе-сервисе, а в своих контроллерах обращаетесь к нему. Это избавляет от дублирования кода в разных участках системы, делая ваш контроллер действительно соответствующим букве S из SOLID.
Handler > в переводе "обработчик", видимо должен обрабатывать какое-то событие
Proccess > В переводе "процесс", видимо должен запускать выполнение какого-то процесса
Обращаться можно откуда угодно и куда угодно, ЕСЛИ ваш компонент находится на уровень ниже в контексте архитектуры.