Sto lavorando a un progetto in cui stiamo cercando di applicare sia la progettazione basata sul dominio sia REST a un'architettura orientata ai servizi. Non ci preoccupiamo della conformità al 100% del REST; sarebbe probabilmente meglio dire che stiamo cercando di costruire API HTTP orientate alle risorse (~ Level 2 di Richardson's REST modello di maturità). Tuttavia, stiamo cercando di evitare l'uso in stile RPC delle richieste HTTP, ovvero tentiamo di implementare i nostri verbi HTTP in base a RFC2616 anziché utilizzare POST
per fare IsPostalAddressValid(...)
, ad esempio.
Tuttavia, un'enfasi su questo sembra essere a spese del nostro tentativo di applicare la progettazione basata sul dominio. Con solo GET
, POST
, PUT
, DELETE
e pochi altri metodi usati di rado, tendiamo a creare servizi CRUDdy e i servizi CRUDdy tendono ad avere modelli di dominio anemici.
POST
: riceve i dati, li convalida e li invia ai dati. GET
: recupera i dati, li restituisce. Nessuna logica di business reale lì. Usiamo anche messaggi (eventi) tra i servizi e mi sembra che la maggior parte della logica aziendale finisca per essere costruita intorno a questo.
REST e DDD sono tesi a un certo livello? (O sto fraintendendo qualcosa qui? Stiamo forse facendo qualcosa di sbagliato?) È possibile costruire un modello di dominio strong in un'architettura orientata ai servizi evitando le chiamate HTTP in stile RPC?