Pracuję nad projektem, w którym staramy się zastosować zarówno projektowanie oparte na domenie, jak i REST do architektury zorientowanej na usługi. Nie martwimy się o 100% zgodność z REST; prawdopodobnie lepiej byłoby powiedzieć, że próbujemy budować API HTTP zorientowane na zasoby (~ Poziom 2 modelu dojrzałości REST Richardsona). Niemniej jednak staramy się trzymać z daleka od używania żądań HTTP w stylu RPC, tzn. Próbujemy implementować nasze czasowniki HTTP zgodnie z RFC2616 zamiast na przykład POST
robić to IsPostalAddressValid(...)
, co robimy .
Wydaje się jednak, że nacisk na to leży kosztem naszej próby zastosowania projektowania opartego na domenie. Z tylko GET
, POST
, PUT
, DELETE
i kilka innych rzadko stosowane metody, mamy tendencję do budowania usług cruddy i usługi cruddy mają tendencję do anemiczny model domeny.
POST
: Odbierz dane, zweryfikuj je, zrzuć do danych. GET
: Pobierz dane, zwróć je. Nie ma tam prawdziwej logiki biznesowej. Używamy również komunikatów (zdarzeń) między usługami i wydaje mi się, że większość logiki biznesowej kończy się wokół tego.
Czy REST i DDD są na pewnym poziomie napięcia? (A może coś tu źle rozumiem? Czy robimy coś innego źle?) Czy można zbudować silny model domeny w architekturze zorientowanej na usługi, unikając wywołań HTTP w stylu RPC?
IsPostalAddressValid(...)
byłoby zgodne z „Zapewnieniem bloku danych, takiego jak wynik przesłania formularza, do procesu przetwarzania danych”?