Từ những gì tôi đã đọc, thiết kế CQRS liên quan đến các lệnh không đồng bộ khi các lệnh được đặt trong hàng đợi. Người sử dụng giả định tất cả là okay và các cuộc thăm dò giao diện người dùng hoặc thông qua một bộ đếm thời gian được một số thức ăn trở lại nếu tất cả làm việc hay không.Các lệnh có phải không đồng bộ trong CQRS không?
Làm cách nào điều này có hiệu quả nếu tôi có giao diện người dùng nơi tôi đang kéo thư mục trong cây? Tôi có thể có một người dùng xóa một thư mục trong khi một người khác kéo một thư mục vào nó (để biến nó thành một thư mục con của nó). Vì vậy, từ giao diện người dùng, tôi có thể cho thấy kéo đã diễn ra và sau đó từ trong một số kiểm tra bộ đếm thời gian để xem mô hình đọc của tôi đã được cập nhật hay chưa. biết nó đã làm việc).
Nếu người dùng đã thực hiện một số hoạt động kéo, tôi sẽ phải giữ một danh sách các hoạt động này trong giao diện người dùng và kiểm tra cửa hàng đọc (loại bỏ bất kỳ lệnh thành công nào từ danh sách).
Có thể có cách tốt hơn để thực hiện việc này.
Có vẻ như rất nhiều công việc trên giao diện người dùng và dễ bị lỗi hơn trong khi nếu tôi chỉ chạy một lệnh đồng bộ và nếu tất cả đều ổn, thì tôi chuyển sang hoạt động tiếp theo.
Cảm ơn bạn đã trả lời. –
Tôi thấy điều này càng cố gắng để thông báo cho người dùng càng sớm càng tốt liệu hành động của họ có thành công hay không. Vì vậy, theo quan điểm của tôi, nó không tốt từ quan điểm khả năng sử dụng UI để cho phép người dùng vui vẻ kéo các thư mục chỉ để "gọi lên máy chủ" vài giây sau đó và tìm ra tất cả các hành động này đã bị từ chối - Tôi nghĩ người dùng nên được thông báo đi thẳng. Trường hợp tương tự cho các vấn đề với lưu dữ liệu (nghĩ rằng xác nhận!), Và hầu hết nếu không phải tất cả các điều kiện lỗi khác. – Dav
"Phấn đấu để thông báo cho người dùng càng sớm càng tốt liệu hành động của họ có thành công hay không" không phải là yêu cầu phổ quát mà mọi hệ thống đều phải đáp ứng. Nếu trạng thái hiện tại của ứng dụng là rất quan trọng để xác định các hành động có sẵn cho người dùng thì các lệnh không đồng bộ có lẽ không phải là quyết định thiết kế tốt nhất, nhưng điều đó không có nghĩa là sử dụng các lệnh đồng bộ là một số viên đạn ma thuật. * giữa các lệnh được cấp bởi một người dùng *. – arootbeer