2013-08-06 34 views
6

Ai chịu trách nhiệm xử lý các sự kiện miền? Dịch vụ ứng dụng, dịch vụ miền hoặc tổ chức chính nó?Trong DDD, ai sẽ được tôn trọng để xử lý các sự kiện miền?

Hãy sử dụng ví dụ đơn giản cho câu hỏi này.

Giả sử chúng tôi làm việc trên ứng dụng cửa hàng và chúng tôi có dịch vụ ứng dụng dành riêng cho các hoạt động đặt hàng. Trong ứng dụng này Order là một quy tắc tổng hợp và các quy tắc sau, chúng tôi chỉ có thể làm việc với một tổng hợp trong một giao dịch duy nhất. Sau khi lệnh được đặt, nó được duy trì trong cơ sở dữ liệu. Nhưng còn nhiều việc phải làm. Trước hết, chúng ta cần phải thay đổi số lượng các mặt hàng có sẵn trong kho và thứ hai thông báo cho một số phần khác của một hệ thống (có thể là một ngữ cảnh khác) rằng quy trình vận chuyển cho thứ tự cụ thể đó sẽ được bắt đầu. Bởi vì, như đã nêu, chúng tôi chỉ có thể sửa đổi một tổng hợp trong giao dịch, tôi nghĩ về việc xuất bản OrderPlacedEvent sẽ được xử lý bởi một số thành phần trong các giao dịch riêng biệt.

Câu hỏi phát sinh: thành phần nào sẽ xử lý loại sự kiện này?

Trả lời

6

Tôi muốn:

1) Lớp ứng dụng nếu sự kiện kích hoạt sửa đổi một Tổng hợp khác trong cùng một ngữ cảnh bị chặn.

2) Lớp ứng dụng nếu sự kiện kích hoạt một số dịch vụ cơ sở hạ tầng.

ví dụ: Một email được gửi đến khách hàng. Vì vậy, một dịch vụ ứng dụng là cần thiết để tải thứ tự cho nội dung thư và thư đến và sau đó gọi dịch vụ cơ sở hạ tầng để gửi thư.

3) Tôi thích cá nhân Dịch vụ miền nếu sự kiện kích hoạt một số thao tác trong ngữ cảnh bị giới hạn khác.

ví dụ: Vận chuyển hoặc Thanh toán, việc triển khai cơ sở hạ tầng của Dịch vụ miền chịu trách nhiệm tích hợp ngữ cảnh bị chặn khác.

4) Lớp cơ sở hạ tầng nếu sự kiện cần được chia thành nhiều người tiêu dùng. Người tiêu dùng chuyển sang 1), 2) hoặc 3).

Đối với tôi, kết luận là Lớp ứng dụng nếu sự kiện dẫn đến thử nghiệm chấp nhận riêng biệt cho ngữ cảnh bị chặn của bạn.

Nhân tiện, cơ sở hạ tầng của bạn là gì để đảm bảo độ bền cho sự kiện của bạn? Bạn có bao gồm xuất bản sự kiện trong giao dịch không?

+0

Cảm ơn bạn đã trả lời. Về độ bền - Tôi chưa biết cách tổ chức nó. Tôi nghĩ rằng lý tưởng, chúng ta nên có hai giao dịch và một số hàng đợi bền (JMS?) - sự kiện được xuất bản trong cùng một giao dịch và do đó chúng tôi đảm bảo rằng giao dịch đó được gửi đúng và giao dịch khác được bắt đầu khi tin nhắn được chọn từ hàng đợi. Bằng cách này, chúng tôi có thể đảm bảo rằng nếu có sự cố không ổn định sẽ được phân phối lại –

2

Các loại trình xử lý này thuộc về lớp ứng dụng. Có lẽ bạn cũng nên tạo phương thức của dịch vụ ứng dụng hỗ trợ. Bằng cách này, bạn có thể bắt đầu giao dịch riêng biệt.

Các vấn đề liên quan