Tôi đang trong quá trình áp dụng các khái niệm DDD để thiết kế các dự án tiếp theo của chúng tôi, và cụ thể hơn là CQRS.CQRS và các hoạt động đồng bộ (như đăng ký người dùng)
Sau khi đọc rất nhiều nội dung, tôi hiện đang cố gắng triển khai Chứng minh khái niệm đơn giản.
Vấn đề là tôi bị mắc kẹt ngay sau khi tôi bắt đầu: p
Tôi đang cố gắng để áp dụng phương pháp này để một quá trình đăng ký sử dụng đơn giản, nơi bước là:
- tài lấp đầy đăng ký hình thức & gửi yêu cầu
- ứng dụng tạo ra người dùng
- ứng dụng xác thực người dùng (đăng nhập tự động vào)
- ứng dụng gửi một verifica tion email cho người dùng
- Ứng dụng chuyển hướng người dùng ở một nơi khác với một thông báo xác nhận
Từ một điểm thực hiện xem, những gì tôi có được cho đến nay là:
- Hành động điều khiển ánh xạ yêu cầu dữ liệu đến đối tượng RegisterCommand
- Hành động điều khiển yêu cầu Command Bus xử lý RegisterCommand
- Phương thức xử lý lệnh (UserService) "đăng ký" tạo đối tượng Người dùng mới (cho dù một lệnh mới hoặc một đối tượng nhà máy)
- Mô hình này đặt ra một RegisterEvent
- Việc xử lý lệnh yêu cầu kho để lưu trữ các đối tượng người dùng mới
Vậy đó, các hành động điều khiển không biết về bất kỳ cái đó. Vì vậy, tôi đoán là, vì mọi thứ trong bối cảnh này phải được thực hiện đồng bộ (ngoại trừ gửi email), tôi có thể sử dụng một lệnh lệnh trực tiếp/đồng bộ, và trong hành động điều khiển, ngay sau lệnh gọi bus , Tôi có thể truy vấn cho một người dùng chỉ đọc (cơ sở dữ liệu truy vấn) và nếu nó tồn tại giả định rằng mọi thứ diễn ra tốt đẹp, vì vậy tôi có thể cung cấp cho người dùng một thông báo xác nhận.
Quá trình đăng nhập tự động được xử lý bởi Trình xử lý sự kiện.
Giả sử rằng điều này là chính xác, điều gì sẽ xảy ra nếu xảy ra sự cố, cách thông báo cho người dùng thông tin chính xác?
Ví dụ phổ biến thường được sử dụng trong các bài viết chúng tôi có thể tìm thấy trên internet: Khách hàng thanh toán đơn đặt hàng của mình bằng cách sử dụng thẻ tín dụng đã hết hạn. Hệ thống chấp nhận yêu cầu, thông báo cho người dùng rằng mọi thứ đều ổn, nhưng người dùng nhận được email một vài phút sau đó nói với anh rằng đơn hàng của anh ta không thể được xử lý.
Vâng, kịch bản này có thể chấp nhận được trong nhiều trường hợp, nhưng đối với một số trường hợp khác, điều đó là không thể. Vậy các ví dụ giải quyết những trường hợp sử dụng này ở đâu? : p
Cảm ơn bạn!
các bộ xử lý này có đang chạy trong cùng một chuỗi không? hoặc bạn có một dịch vụ khác đang chạy ở nơi khác xử lý các lệnh/sự kiện? – Sarmaad
Chúng tôi sử dụng ngôn ngữ kịch bản, do đó không có chuỗi. Một máy chủ xếp hàng cuối cùng có thể tồn tại, nhưng không phải cho trường hợp sử dụng này tôi nghĩ. – Benjamin