Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Conceitos difusos de data service e domain service (ddd)

Considerações

  • No capítulo 1, o data service é apresentado como camada fina acima do banco, utilizado para operações (CRUD);
  • No capítulo 2 , um data service é apresentado como sendo um domain service, se levarmos DDD em consideração;
  • Também no capítulo 2, "Aluno" é apresentado como um exemplo de domínio.

Ao pesquisar um pouco mais sobre DDD e domain service, esse foi o conceito que encontrei: "Domain Service: Encapsula lógica de negócio que não pertence a uma entidade específica e pode envolver múltiplas entidades do domínio. Exemplo: um serviço que processa a matrícula de alunos em cursos"

Que vai de encontro a definição passada no curso.

PS.: Posteriormente no curso, se define como Business Service, um serviço que faz o papel de lidar com múltiplos domínios.

Minhas dúvidas são:

  • O que é realmente o Data Service? Na definição de papéis do DDD, não seria ele mais próximo de um "Application Service"?
  • No papel de lidar com múltiplas entidades, o DDD assume o Domain Service, qual devo assumir para seguir o curso?

Não sei se foi apenas um exemplo, mas os conceitos não estão coerentes com a definição.

2 respostas
solução!

Olá, Victor!

Entendo a sua confusão, e vou tentar ajudar a esclarecer esses conceitos. Vamos lá!

  1. Data Service: No contexto de arquitetura de software e, mais especificamente, no DDD (Domain-Driven Design), o termo "Data Service" geralmente se refere a uma camada que interage diretamente com o banco de dados. Ele é responsável por operações CRUD (Create, Read, Update, Delete) e é mais voltado para a persistência de dados. No entanto, no DDD, essa camada não é chamada de "Data Service", mas sim de "Repository". O papel do repositório é fornecer uma interface para acessar e manipular dados de entidades do domínio.

  2. Domain Service: No DDD, um Domain Service é usado para encapsular lógica de negócio que não pertence a uma entidade específica e pode envolver múltiplas entidades. Ele age como uma orquestração de operações que fazem sentido no contexto do domínio. Por exemplo, um serviço que processa a matrícula de alunos em cursos, como você mencionou, seria um Domain Service.

  3. Application Service: Este é o serviço que orquestra a lógica de aplicação e coordena a interação entre os Domain Services e os Repositories. Ele não contém lógica de negócio por si só, mas é responsável por coordenar as operações necessárias para realizar uma ação de negócio.

Para seguir o curso, eu sugeriria que você considere o "Data Service" apresentado como algo mais próximo dos Repositories, que lidam com a persistência de dados. Já para lidar com múltiplas entidades e lógica de negócio mais complexa, o Domain Service seria o conceito mais apropriado.

Espero que isso ajude a esclarecer as diferenças e que você consiga seguir o curso com mais clareza. Bons estudos!

Muito obrigado Lucas! Esclareceu muito.