Estoy trabajando en un proyecto en el que estamos tratando de aplicar tanto el diseño basado en dominio como REST a una arquitectura orientada a servicios. No nos preocupamos por el 100% de cumplimiento de REST; probablemente sería mejor decir que estamos tratando de construir API HTTP orientadas a recursos (~ Nivel 2 del modelo de madurez REST de Richardson). Sin embargo, estamos tratando de mantenernos alejados del uso de solicitudes HTTP al estilo RPC, es decir, intentamos implementar nuestros verbos HTTP de acuerdo con RFC2616 en lugar de POST
hacerlo IsPostalAddressValid(...)
, por ejemplo.
Sin embargo, un énfasis en esto parece estar a expensas de nuestro intento de aplicar un diseño basado en dominio. Con solamente GET
, POST
, PUT
, DELETE
y algunos otros métodos de uso poco frecuente, que tienden a crear servicios sucia, sucia y los servicios tienden a tener modelos de dominio anémicos.
POST
: Reciba los datos, valídelos, vuélvalos a los datos. GET
: Recupere los datos, devuélvalos. No hay lógica de negocios real allí. También usamos mensajes (eventos) entre los servicios, y me parece que la mayor parte de la lógica de negocios termina construyéndose alrededor de eso.
¿Están REST y DDD en tensión en algún nivel? (¿O estoy malinterpretando algo aquí? ¿Tal vez estamos haciendo algo más mal?) ¿Es posible construir un modelo de dominio sólido en una arquitectura orientada a servicios mientras evito las llamadas HTTP de estilo RPC?
IsPostalAddressValid(...)
encajaría con "Proporcionar un bloque de datos, como el resultado de enviar un formulario, a un proceso de manejo de datos"?