ความแตกต่างระหว่างคำสั่งและเหตุการณ์ในการสื่อสารรถบัสนั้นค่อนข้างคลุมเครือสำหรับฉัน ฉันรู้ว่าควรดำเนินการคำสั่งเพียงครั้งเดียวในขณะที่เหตุการณ์สามารถจัดการได้หลายครั้ง แต่ฉันก็ยังไม่แน่ใจว่าจะใช้คำสั่งหรือเหตุการณ์เมื่อใด
ลองดูตัวอย่าง:
เมื่อผู้ใช้ใหม่ลงทะเบียนกับเว็บแอปพลิเคชันเราควรสร้างบัญชีให้เขาและส่งอีเมลยืนยัน
การสร้างบัญชี - นี่เป็นจุดที่เหมาะสมในการส่งCreateUserCommand
รถบัสและให้ส่วนประกอบเฉพาะจัดการ
หรือบางทีสิ่งนี้ไม่ควรนำมาใช้กับการสื่อสารบัสแบบอะซิงโครนัส? เราต้องการให้ผู้ใช้ ba สามารถล็อกอินเข้าสู่แอปพลิเคชันได้ทันที ด้วยรถบัสเราไม่รับประกันว่าคำสั่งจะถูกดำเนินการเมื่อใด
การส่งอีเมล - หลังจากส่วนประกอบสร้างบัญชีฉันสามารถเห็นความเป็นไปได้ 2 อย่าง
- ส่งคำสั่งอื่นไปที่รถบัส
SendConfirmationEmailCommand
- เผยแพร่กิจกรรม
UserAccountCreatedEvent
และปล่อยให้องค์ประกอบของผู้ส่งอีเมลคว้ามันและมันเป็นงาน
ในอีกด้านหนึ่งฉันต้องการอีเมลยืนยันที่จะส่งเพียงครั้งเดียวเท่านั้น (ใช้คำสั่ง) ในทางกลับกันฉันเชื่อว่าอาจมีหลายองค์ประกอบที่สนใจในผู้ใช้ที่ลงทะเบียนใหม่ คนตัดไม้หรือผู้ส่ง SMS
คุณจะใช้มันอย่างไร?