Depois de mais ou menos um mês lendo e pesquisando DDD, decidi iniciar meu próprio projeto e criei DDD com esses contextos limitados>
- Clientes
- Produtos
- Encomendas
- Faturamento
Cada contexto delimitado possui API de descanso como uma camada de apresentação, camada de domínio, camada persistente.
Até agora, o código está funcionando perfeitamente, mas, vindo de um mundo monolítico, ainda estou tentando descobrir o seguinte:
- quando eu quiser criar um novo cliente, emitir uma nova fatura, criar um novo pedido que eu queira, por exemplo, acessar a lista de países. Eu:
a) crie uma lista de países em cada BC
b) crie uma API de países BC -> e use-a para obter uma lista dos países disponíveis
c) use uma API de terceiros e extraia dados através da camada anti-corrupção em cada BC
- ao integrar com a API de terceiros usando uma camada anticorrupção ou uma camada adaptadora, quais dados devem ser incluídos no meu modelo de domínio? Por exemplo, se eu quiser integrar uma API do zendesk a um Client BC. Preciso apenas de um ticketID no meu domínio ou tenho que extrair todos os dados do Zendesk que desejo acessar e usar em um Client BC?
Se meu aplicativo MVC está realmente obtendo dados das APIs (camadas de apresentação dos meus contextos limitados), acho muito difícil definir claramente os limites de cada BC. Isso significa que um BC projetado adequadamente serviria a um único controlador MVC sem a necessidade de consumir APIs adicionais?