Tôi đang làm việc trong một dự án mà chúng tôi đang cố gắng áp dụng cả thiết kế hướng tên miền và REST cho kiến trúc hướng dịch vụ. Chúng tôi không lo lắng về việc tuân thủ REST 100%; có lẽ sẽ tốt hơn khi nói rằng chúng tôi đang cố gắng xây dựng các API HTTP hướng tài nguyên (~ Cấp độ 2 của mô hình trưởng thành REST của Richardson). Tuy nhiên, chúng tôi đang cố gắng tránh xa việc sử dụng các yêu cầu HTTP theo kiểu RPC, tức là chúng tôi cố gắng thực hiện các động từ HTTP theo RFC2616 thay vì sử dụng POST
để làm IsPostalAddressValid(...)
, chẳng hạn.
Tuy nhiên, một sự nhấn mạnh về điều này dường như là chi phí cho nỗ lực của chúng tôi để áp dụng thiết kế theo hướng tên miền. Với chỉ GET
, POST
, PUT
, DELETE
và một vài phương pháp ít được sử dụng khác, chúng ta có xu hướng để xây dựng các dịch vụ cruddy, và dịch vụ cruddy có xu hướng có các mô hình miền thiếu máu.
POST
: Nhận dữ liệu, xác thực nó, kết xuất dữ liệu. GET
: Lấy dữ liệu, trả lại. Không có logic kinh doanh thực sự ở đó. Chúng tôi cũng sử dụng tin nhắn (sự kiện) giữa các dịch vụ và dường như hầu hết logic kinh doanh cuối cùng được xây dựng xung quanh đó.
REST và DDD có căng thẳng ở một mức độ nào đó không? (Hoặc tôi có đang hiểu nhầm điều gì đó ở đây không? Có phải chúng ta có thể làm sai điều gì khác không?) Có thể xây dựng mô hình miền mạnh trong kiến trúc hướng dịch vụ trong khi tránh các cuộc gọi HTTP kiểu RPC không?
IsPostalAddressValid(...)
sẽ phù hợp với "Cung cấp một khối dữ liệu, chẳng hạn như kết quả của việc gửi biểu mẫu, cho quy trình xử lý dữ liệu" không?