Estou trabalhando em um projeto no qual estamos tentando aplicar o design controlado por domínio e o REST a uma arquitetura orientada a serviços. Não estamos preocupados com 100% de conformidade com REST; provavelmente seria melhor dizer que estamos tentando criar APIs HTTP orientadas a recursos (~ Nível 2 do modelo de maturidade REST de Richardson). No entanto, estamos tentando ficar longe do uso de estilo RPC de pedidos HTTP, ou seja, nós tentativa de implementar a nossa HTTP verbos de acordo com RFC2616 em vez de usar POST
a fazer IsPostalAddressValid(...)
, por exemplo.
No entanto, uma ênfase nisso parece estar à custa de nossa tentativa de aplicar o design orientado a domínio. Com apenas GET
, POST
, PUT
, DELETE
e alguns outros métodos usados raramente, tendemos a criar serviços fétido e serviços fétido tendem a ter modelos de domínio anêmicos.
POST
: Receba os dados, valide-os e despeje-os nos dados. GET
: Recupere os dados, devolva-os. Nenhuma lógica de negócios real lá. Também usamos mensagens (eventos) entre os serviços, e me parece que a maior parte da lógica de negócios acaba sendo construída em torno disso.
REST e DDD estão em tensão em algum nível? (Ou estou entendendo errado algo aqui? Talvez esteja fazendo algo errado?) É possível criar um modelo de domínio forte em uma arquitetura orientada a serviços, evitando chamadas HTTP no estilo RPC?
IsPostalAddressValid(...)
isso se encaixaria em "Fornecer um bloco de dados, como o resultado do envio de um formulário, para um processo de manipulação de dados"?