Domain Services: São classes que operam apenas em tipos pertencentes ao domínio, contendo operações que não se encaixam bem em Value Objects ou Entidades. Eles são responsáveis por operações que envolvem mais de uma entidade e contêm conceitos significativos que podem ser encontrados na Linguagem Ubíqua. Esses serviços são essenciais para manter a integridade do modelo de domínio, falando em até de encapsulando operações CRUD e acesso a dados, além de comportamentos que não se encaixam em nenhuma entidade de domínio específica.
Application Services: Também conhecidos como "Workflow Services" ou "User Cases", esses serviços orquestram as etapas necessárias para cumprir os comandos impostos pelo cliente. Eles não devem conter "lógica de negócios", mas podem realizar uma série de etapas necessárias para atender a uma necessidade da aplicação. A camada de Application Service geralmente faz chamadas para os Infrastructure Services, Domain Services e Domain Entities para realizar o trabalho. Os objetos de Application Service são "objetos de comando", ou seja, não se fala com um Application Service simplesmente para recuperar informações, mas sim diretamente com os Domain Services para tal fim.
Infrastructure Services: São serviços que geralmente se comunicam com recursos externos e não fazem parte do domínio principal do problema. Exemplos comuns incluem envio de e-mails e registro de dados significativos. Esses serviços são invocados apenas pelo Application Service e são responsáveis por** preocupações de infraestrutura**, como comunicação com bancos de dados, serviços de e-mail e logging. Eles são implementações de interfaces presentes nas camadas de domínio ou de aplicação e facilitam a comunicação com a infraestrutura externa.