การขับเคลื่อนกิจกรรมและการจัดหากิจกรรมแตกต่างกันอย่างไร


13

ฉันกำลังศึกษาการออกแบบโดยใช้โดเมน (DDD) และพบเจอกัน: Event Driven และ Event sourcing ฉันรู้ว่ามันเกี่ยวกับการเผยแพร่กิจกรรมจากผู้ผลิตสู่ผู้บริโภคและจัดเก็บบันทึกดังนั้นคำถามของฉันคือ:

การขับเคลื่อนกิจกรรมและการจัดหากิจกรรมแตกต่างกันอย่างไร

คำตอบ:


16

คำว่าสถาปัตยกรรมขับเคลื่อนด้วยเหตุการณ์นั้นใช้สำหรับระบบซอฟต์แวร์ประเภทใดก็ได้ซึ่งขึ้นอยู่กับส่วนประกอบที่สื่อสารเป็นหลักหรือโดยเฉพาะผ่านเหตุการณ์ต่างๆ ตัวอย่างเช่นกรอบ GUI หลัก ๆ เกือบทุกแพลตฟอร์มที่ได้รับความนิยมใช้กลไกที่ขับเคลื่อนด้วยเหตุการณ์ คำว่า "เหตุการณ์" มักจะหมายถึง "การแจ้งเตือน" ในบริบทนี้

การจัดหากิจกรรมเป็นคำพิเศษมากขึ้นหมายถึงระบบที่เก็บสถานะแอปพลิเคชันทั้งหมดเป็นลำดับเหตุการณ์ คลาสที่เป็นที่รู้จักกันดีของตัวอย่างคือระบบฐานข้อมูลธุรกรรมซึ่งเก็บการเปลี่ยนแปลงสถานะใด ๆ ในบันทึกธุรกรรม ที่นี่คำว่า "เหตุการณ์" หมายถึง "การเปลี่ยนแปลงสถานะ" มากกว่าไม่เพียง แต่จะ "แจ้งเตือน"

ดังนั้นระบบใด ๆ ที่ใช้ "การจัดหาเหตุการณ์" เป็นกลไกหลักสามารถมองเห็นได้ว่าเป็นระบบที่ขับเคลื่อนด้วยเหมือนกัน แต่สิ่งที่ตรงกันข้ามนั้นไม่เป็นความจริงโดยทั่วไป


ยกระดับคำตอบของคุณ ตอนนี้ฉันกำลังค้นหาตัวเองอยู่และเจอคำตอบของคุณก่อน ดูที่วลี "สถานะแอปพลิเคชันทั้งหมดถูกจัดเก็บเป็นเหตุการณ์ลำดับ" ดูเหมือนว่าคุณกำลังพูดถึงสิ่งนี้: "สถานะของแอปพลิเคชันไม่คงอยู่ในรูปแบบปัจจุบันโดยตรงแทนที่จะดำเนินการสร้างอัปเดตหรือลบแต่ละครั้ง บนวัตถุหรือแบบจำลองนั้นถือเป็น 'เหตุการณ์' และเป็น 'เหตุการณ์' ที่ได้รับการยืนยันโดยตรงดังนั้นเพื่อให้ได้สถานะปัจจุบันของวัตถุคุณต้องเล่นเหตุการณ์เหล่านั้นซ้ำเพื่อสร้างสำเนาขึ้นใหม่ " เสียงนี้ถูกต้องไหม
Panzercrisis

1
@Panzercrisis: ฉันควรจะเขียนว่า "การจัดหากิจกรรมจะเก็บการเปลี่ยนแปลงทั้งหมดในสถานะแอปพลิเคชันเป็นลำดับเหตุการณ์" (เช่นฟาวเลอร์) วัตถุทั้งหมดมักจะมีสถานะ "ปัจจุบัน" สถานะนี้อาจยังคงอยู่ (อาจเลื่อนออกไป) เช่นเดียวกับลำดับเหตุการณ์ของตัวเอง ฉันแนะนำให้อ่านบทความของ Fowler สำหรับคำอธิบายแบบเต็ม
Doc Brown
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.