ความสับสนระหว่าง "การส่งข้อความ" และ "ตามเหตุการณ์" นั้นเกี่ยวข้องกับรายละเอียดด้านสถาปัตยกรรมและการนำไปใช้งาน ฉันได้เห็น (และเขียน) ระบบขับเคลื่อนเหตุการณ์ที่ใช้ OS เป็นข้อความเพื่อการใช้งานจริง ฉันเดาว่าคุณพูดถึงแนวคิดทางสถาปัตยกรรมจริงๆ
ในฐานะที่เป็นคนจำนวนมากได้ชี้ให้เห็น "การส่งข้อความ" และ "ตามเหตุการณ์" ไม่ดีพอที่จะหลีกเลี่ยงความคลุมเครือ
ข้อดีของระบบ "การส่งข้อความ" คืออะไรเทียบกับระบบ "ตามเหตุการณ์"
การส่งข้อความ
ฉันจะเริ่มจากการเดาว่าเมื่อคุณพูดว่าระบบ "การส่งข้อความ" คุณกำลังพูดถึงระบบที่วัตถุหนึ่งใช้ข้อความไปยังวัตถุอื่นที่เฉพาะเจาะจง เมื่อฉันคิดถึงระบบที่ยึดตามกระบวนทัศน์นี้ฉันมักจะคิดถึงระบบที่วัตถุที่ตรวจจับสิ่งที่รู้ว่าใครต้องบอกอะไรเกี่ยวกับบางสิ่งบางอย่าง (ฉันไม่ได้ระบุว่ามันรู้แค่ไหนก็รู้)
สถาปัตยกรรมประเภทนี้ดีมากสำหรับระบบที่ผู้ผลิตและผู้บริโภครู้จักกันดี ผู้ผลิตข้อความรู้ว่าใครจะต้องได้รับหรือผู้บริโภคจะต้องรู้ว่าใครจะได้รับข้อความ
หากคุณกำลังเขียนแอปพลิเคชันธนาคารใคร ๆ ก็คาดหวังว่าคุณต้องการทราบว่าคุณกำลังส่งธุรกรรมของคุณไปยังใครและมาจากใคร
ตามเหตุการณ์
อีกระบบหนึ่งที่ฉันเชื่อว่าคุณกำลังคิดเมื่อคุณพูดถึงระบบ "ตามเหตุการณ์" คือสิ่งที่วัตถุยก "เหตุการณ์" โดยไม่ทราบว่าใคร (ถ้าใคร) จะตอบสนองต่อมัน
สถาปัตยกรรมที่ขับเคลื่อนด้วยเหตุการณ์ประเภทนี้ดีมากสำหรับระบบที่ผู้ผลิตไม่สนใจว่าใครบริโภคเหตุการณ์หรือที่ผู้บริโภคไม่สนใจว่าใครเป็นผู้สร้างเหตุการณ์
โดยทั่วไประบบเหล่านี้ยอดเยี่ยมมากโดยที่คุณไม่ทราบว่าความสัมพันธ์ระหว่างผู้บริโภคและผู้ผลิตและที่คุณคาดหวังว่าความสัมพันธ์จะเป็นแบบไดนามิก
ระบบหนึ่งที่ฉันใช้สิ่งนี้ในคือระบบที่แอปพลิเคชันนั้นประกอบไปด้วยโมดูล (ปลั๊กอิน) ที่กำหนดค่าแบบไดนามิกที่โหลดในเวลาทำงาน เมื่อโมดูลถูกโหลดมันจะลงทะเบียนสำหรับกิจกรรมที่ได้รับการดูแล ผลลัพธ์เป็นระบบที่ง่ายต่อการขยายฟังก์ชันการทำงาน
ตัวอย่างเช่นสมมติว่าเงื่อนไข A กิจกรรมที่ยกมาซึ่งปกติทำให้เกิดการตอบสนอง RA วัตถุที่ทำให้เกิดการตอบสนอง RA เพียงแค่ลงทะเบียนเพื่อรับเหตุการณ์ EA และดำเนินการกับมันเมื่อมันมาถึง ตอนนี้สมมติว่าเราต้องการเพิ่มคำตอบใหม่ให้กับ EA ที่เรียกว่า RA_1 ในการทำเช่นนี้เราเพียงแค่เพิ่มวัตถุใหม่ที่มองหา EA และสร้างการตอบสนอง RA_1
นี่คือตัวอย่างบางส่วน (โดยใช้คำศัพท์ของคุณ):
- "การส่งข้อความ" : เจ้านายของคุณบอกให้คุณกรอกใบบันทึกเวลาของคุณ
- "ผลักดันเหตุการณ์" : ฝ่ายเลขานุการส่งอีเมลถึงทุกคนเพื่อเตือนพวกเขาว่ากำหนดเวลาของพวกเขาในวันนี้