Vì bạn đã gắn thẻ câu hỏi của mình bằng "CQRS", tôi đoán bạn có nghĩa là các sự kiện trong ngữ cảnh "CQRS & Tìm nguồn sự kiện", giống như được mô tả ở đây . Trong hướng dẫn này , sự khác biệt giữa các sự kiện và lệnh được giải thích rõ:
các sự kiện nắm bắt "những điều có thể xảy ra" cơ bản trong hệ thống của bạn, theo quan điểm của hệ thống.
các lệnh được xác định bởi những gì người dùng coi là một hoạt động, theo quan điểm của mình
Và mặc dù điều này thường dẫn đến một vài lệnh và sự kiện có tỷ lệ tương ứng 1: 1, các quan điểm khác nhau này có thể dẫn đến các lệnh kích hoạt nhiều hơn một sự kiện hoặc các sự kiện khác nhau tùy thuộc vào các tham số lệnh. Tôi thậm chí có thể tưởng tượng các trường hợp một lệnh không đưa ra một sự kiện nào cả, nhưng đó sẽ là một trường hợp rất đặc biệt, không phải là một trường hợp rất điển hình.
Ví dụ, hướng dẫn đề cập đến các sự kiện
- TabOpened
- Đồ uống
- Thực phẩm
và các lệnh
Tại đây, lệnh "OpenTab" sẽ dẫn đến một sự kiện "TabOpened", nhưng lệnh PlaceOrder sẽ dẫn đến các sự kiện "DrinksOrdered", "FoodOrdered" hoặc cả hai.
Trên thực tế, nếu bạn đang thiết kế một hệ thống mới "từ đầu", bạn có thể thử thiết kế nó với sự tương ứng 1: 1 giữa các lệnh và sự kiện và xem tỷ lệ đó như thế nào khi hệ thống trở nên lớn hơn. Bạn thậm chí có thể thử một cách tiếp cận hỗn hợp: một danh sách các sự kiện và lệnh với sự tương ứng 1: 1, cùng với một số lệnh kết hợp bổ sung. Chỉ cần thử bao xa dẫn bạn đến hệ thống cụ thể mà bạn đang thiết kế.