Tôi thấy các dịch vụ trong DDD là kết quả của Nghịch đảo phụ thuộc .
Nếu bạn sử dụng các phụ thuộc "đơn giản", thì mã miền của bạn sẽ gọi cơ sở dữ liệu để lưu hoặc truy vấn một thực thể hoặc nhà máy, tạo ra một thực thể, được gắn với cơ sở dữ liệu hoặc dịch vụ bên ngoài hoặc một loại mã cơ sở hạ tầng khác.
Nhưng đó không phải là cách mã miền nên được. Mã miền không nên phụ thuộc vào mã cơ sở hạ tầng. Vì sự phụ thuộc này làm cho việc kiểm tra khó khăn hơn và có thể, sử dụng lại. Đó là lý do tại sao bạn đảo ngược sự phụ thuộc đó. Bạn tạo mã cơ sở hạ tầng phụ thuộc vào mã miền. Và để làm điều đó, bạn cần phải giới thiệu một sự trừu tượng. Một sự trừu tượng xác định hành vi nào mà mã miền dự kiến sẽ được cơ sở hạ tầng triển khai.
Và các dịch vụ trong DDD là sự trừu tượng đó. Trong hầu hết các trường hợp, đối với mã miền, các dịch vụ đó phải là giao diện đơn giản. Và việc thực hiện phải nằm trong mã cơ sở hạ tầng, có sự phụ thuộc vào các giao diện đó.