São responsáveis por receber as requisições HTTP e controlar o fluxo de dados dentro da aplicação. Eles são responsáveis por receber as requisições e enviar as respostas adequadas ao cliente.
São responsáveis por gerenciar o acesso e manipulação de dados. Eles são responsáveis por criar, ler, atualizar e excluir (CRUD) registros em um banco de dados ou qualquer outro tipo de armazenamento de dados.
São objetos que representam os dados da aplicação, como usuários, produtos, pedidos, etc. Esses objetos são usados para transferir dados entre as camadas da aplicação.
São pacotes que contêm funcionalidades relacionadas. Por exemplo, um módulo de autenticação pode conter rotas, controladores, serviços e repositórios relacionados à autenticação.
É um padrão de projeto utilizado para criar objetos de forma dinâmica. A camada de fábrica é responsável por instanciar e configurar objetos complexos, como controladores, serviços e repositórios, e fornecê-los para outras partes da aplicação.
É uma estrutura de dados que representa os dados relevantes para transferência entre diferentes partes do sistema, ajudando a manter a coesão, desacoplamento e eficiência da comunicação entre os componentes.