Sto lavorando a un progetto in cui stiamo cercando di applicare sia la progettazione guidata dal dominio sia il REST a un'architettura orientata ai servizi. Non ci preoccupiamo del 100% di conformità REST; probabilmente sarebbe meglio dire che stiamo cercando di costruire API HTTP orientate alle risorse (~ Livello 2 del modello di maturità REST di Richardson). Tuttavia, stiamo cercando di stare lontano dall'uso in stile RPC delle richieste HTTP, ovvero tentiamo di implementare i nostri verbi HTTP secondo RFC2616 piuttosto che usare POST
per fare IsPostalAddressValid(...)
, per esempio.
Tuttavia, un'enfasi su questo sembra essere a spese del nostro tentativo di applicare la progettazione guidata dal dominio. Con un solo GET
, POST
, PUT
, DELETE
e un paio di altri metodi usati raramente, si tende a costruire servizi cruddy e servizi cruddy tendono ad avere modelli di dominio anemici.
POST
: Ricevere i dati, convalidarli, scaricarli sui dati. GET
: Recupera i dati, restituiscili. Nessuna vera logica di business lì. Usiamo anche messaggi (eventi) tra i servizi e mi sembra che la maggior parte della logica aziendale finisca per essere costruita attorno a quello.
REST e DDD sono in tensione ad un certo livello? (O sto fraintendendo qualcosa qui? Forse stiamo sbagliando qualcos'altro?) È possibile costruire un forte modello di dominio in un'architettura orientata ai servizi evitando le chiamate HTTP in stile RPC?
IsPostalAddressValid(...)
adattarsi a "Fornire un blocco di dati, come il risultato dell'invio di un modulo, a un processo di gestione dei dati"?