DEV Community

Gustavo Nunes Noia
Gustavo Nunes Noia

Posted on

Entendendo Service, Repository e Controller, PT. 1

Esses são conceitos muito utilizados em Arquitetura de Software, pois ajudam a estruturar e manter o código mais organizado. Entenda agora as atribuições e responsabilidades de cada um!

Service

O Service é a camada responsável pela validação da requisição que o usuário enviar. Ou seja, é responsável pela regra de negócio ou lógica de aplicação.

Para facilitar o entendimento, imagine que você possui um aplicativo que fará uma transação bancária. Antes da transação for concluída, você precisa validar algumas informações, como se há limite de crédito na conta, se há alguma duplicidade de informações que gere conflito no banco de dados, se as informações enviadas estão corretas, e outras validações que se aplicam às lógicas e regras de negócio.

Toda essa lógica por trás da aplicação é delegada à camada de Service dentro do software, e ela que sinalizará se os dados enviados estão de acordo com o que se espera.

Repository

Essa camada fica responsável por mediar o banco de dados e o resto da aplicação. É ela que vai salvar os dados passados pelo usuário no seu banco de dados. Ou seja, a complexidade do CRUD (Create, Read, Update and Delete) fica escondida na camada de Repository, em que se irá acessar o banco de dados e manipular as informações enviadas.

Ao isolar a lógica de acesso ao banco de dados, o código fica mais limpo e fácil de ser compreendido.

Controller

O Controller lida com as requisições do usuário e emite uma resposta para ele. Logo, ele recebe as entradas(normalmente em HTTP via WEB), valida e chama o Service para tratar a lógica de negócios, e após isso retorna uma resposta ao usuário.

Ou seja, ele valida os dados passados pelo usuário(como campos obrigatórios, tipo ou formato dos dados e validação dos ID’s) ANTES de passar esses dados para o Service, que por sua vez irá validar a lógica do negócio. Depois, o Controller passa uma resposta ao usuário informando se houve sucesso ou falha na requisição.

Mas como os componentes se relacionam?

Quando o usuário faz uma requisição HTTP, o Controller a recebe e faz uma validação prévia. Caso tudo esteja correto, faz o envio para o Service.

O Service vai pegar as informações e validar segundo as lógicas por trás da aplicação. Se estiver tudo de acordo, envia a requisição para o Repository.

O Repository, por sua vez, faz com que esses dados sejam salvos, atualizados ou deletados, de acordo com a requisição mandada ao Controller.

O Controller recebe a resposta final e a manda para o usuário, informando o sucesso ou o erro da operação.

RESUMO

Vimos que cada camada tem sua responsabilidade, e isso facilita a manutenção do código.

Service: Lógica de negócio, validação do processo

Repository: Responsável pelo CRUD no banco de dados

Controller: Responsável por receber a requisição via API e informar ao usuário a mensagem final.

Top comments (0)