เมื่อเปรียบเทียบวิธีที่หมากรุกอาจจัดการกับการรวมเหตุการณ์กับวิธีการจัดการ MVVMCROSS เราต้องพิจารณาบริบทและวัตถุประสงค์ของการรวมเหตุการณ์ในทั้งสองสถานการณ์
การรวมกิจกรรมในหมากรุก
ในบริบทของหมากรุกการรวมตัวของเหตุการณ์สามารถอ้างถึงการจัดการและประมวลผลลำดับของการเคลื่อนไหวหรือเหตุการณ์ที่เกิดขึ้นระหว่างเกม สิ่งนี้อาจเกี่ยวข้องกับการติดตามการเคลื่อนไหวการจับภาพตรวจสอบหรือเช็คเอาต์แต่ละครั้ง ในวิธีการออกแบบโดเมนที่ขับเคลื่อนด้วย (DDD) การเคลื่อนไหวของหมากรุกสามารถสร้างแบบจำลองเป็นเหตุการณ์โดเมนคล้ายกับวิธีการจัดการในระบบที่มาจากเหตุการณ์อื่น ๆ แต่ละเหตุการณ์จะแสดงถึงการกระทำที่เฉพาะเจาะจงหรือการเปลี่ยนแปลงสถานะในเกมเช่นชิ้นส่วนที่เคลื่อนไหวหรือถูกจับ เหตุการณ์เหล่านี้จะถูกเก็บไว้ในวารสารหรือบันทึกทำให้สถานะปัจจุบันของเกมถูกสร้างขึ้นใหม่โดยการเล่นซ้ำเหตุการณ์เหล่านี้
ตัวอย่างเช่นเกมหมากรุกอาจใช้กิจกรรมเช่น "ทีละน้อย" "ถูกจับกุม" หรือ "Checkmateoccurred" เหตุการณ์เหล่านี้จะคงอยู่และสามารถใช้ในการวิเคราะห์เกมหรือเพื่อให้แน่ใจว่ามีความสอดคล้องในสถานะเกมที่แตกต่างกัน อย่างไรก็ตามหมากรุกเองไม่ได้ "จัดการ" การรวมตัวของเหตุการณ์ในแบบที่กรอบซอฟต์แวร์ทำ; แต่จะมีโดเมนที่สามารถนำการรวมเข้าด้วยกันไปได้
การรวมเหตุการณ์ใน mvvmcross
MVVMCROSS ใช้รูปแบบการรวมเหตุการณ์ผ่านปลั๊กอิน Messenger ปลั๊กอินนี้ให้กลไกส่วนกลางสำหรับส่วนประกอบในการสื่อสารซึ่งกันและกันโดยไม่ต้องเข้ากันอย่างแน่นหนา อนุญาตให้ผู้เผยแพร่หลายรายส่งข้อความ (เหตุการณ์) ไปยังสมาชิกหลายคนผ่านผู้ไกล่เกลี่ยซึ่งเป็นผู้ส่งสารเอง
MVVMcross Messenger รองรับคุณสมบัติเช่นการเผยแพร่กิจกรรมการสมัครรับเหตุการณ์และการจัดการการสมัครสมาชิก มันใช้การอ้างอิงที่อ่อนแอเพื่อป้องกันการรั่วไหลของหน่วยความจำเพื่อให้แน่ใจว่าส่วนประกอบสามารถเก็บขยะได้แม้ว่าจะถูกสมัครเข้าร่วมกับเหตุการณ์ วิธีการนี้มีประโยชน์อย่างยิ่งในสถาปัตยกรรม MVVM (Model-View-ViewModel) ซึ่งรูปแบบการดูจำเป็นต้องสื่อสารซึ่งกันและกันโดยไม่ต้องอ้างอิงโดยตรง
ประเด็นสำคัญของการรวมเหตุการณ์ของ MVVMcross รวมถึง:
- วิธีการเผยแพร่: ส่วนประกอบสามารถเผยแพร่กิจกรรมโดยใช้วิธีการเช่น `publish`
- วิธีการสมัครสมาชิก: ส่วนประกอบสามารถสมัครสมาชิกเหตุการณ์โดยใช้วิธีการเช่น `สมัครสมาชิก ',` subcribeonMainThread` หรือ `subcribeonThreadPoolThread'
- การจัดการการสมัครสมาชิก: ผู้ส่งสารมีวิธีการตรวจสอบว่ามีการสมัครสมาชิกสำหรับเหตุการณ์หรือแท็กเฉพาะเพื่อให้สามารถจัดการการจัดการเหตุการณ์ได้ดีขึ้น
การเปรียบเทียบ
ในขณะที่หมากรุกสามารถสร้างแบบจำลองโดยใช้หลักการรวมเหตุการณ์ที่คล้ายกับในระบบซอฟต์แวร์ MVVMcross ให้การใช้งานเฉพาะของการรวมกิจกรรมที่ออกแบบมาสำหรับสถาปัตยกรรม MVVM ความแตกต่างที่สำคัญอยู่ในบริบทและวัตถุประสงค์:
- หมากรุก: การรวมตัวของเหตุการณ์เป็นข้อมูลเพิ่มเติมเกี่ยวกับการติดตามและการจัดการสถานะเกมผ่านเหตุการณ์โดเมนซึ่งเป็นแอปพลิเคชันแนวคิดของหลักการจัดหาเหตุการณ์
- MVVMCROSS: การรวมตัวของเหตุการณ์เป็นการดำเนินการทางเทคนิคเพื่ออำนวยความสะดวกในการสื่อสารระหว่างส่วนประกอบคู่ที่หลวมในแอปพลิเคชันโดยใช้ผู้ส่งสารจากส่วนกลาง
โดยสรุปหมากรุกไม่ได้ "จัดการ" การรวมเหตุการณ์ในลักษณะเดียวกับที่ MVVMcross ทำ; แต่หมากรุกให้โดเมนที่สามารถนำแนวคิดการรวมเหตุการณ์มาใช้ ในทางกลับกัน MVVMcross นำเสนอการใช้งานที่เป็นรูปธรรมของการรวมตัวของเหตุการณ์สำหรับการพัฒนาซอฟต์แวร์
การอ้างอิง:[1] https://ep2024.europython.eu/session/event-sourcing-from-the-ground-up
[2] https://www.mvvmcross.com/documentation/plugins/messenger
[3] https://debezium.io/blog/2020/02/10/event-sourcing-vs-cdc/
[4] https://github.com/mateusznakodach/ddd.eventsourcing.portsandadapters.typescript.nestjs.chess
[5] https://www.linkedin.com/advice/0/how-do-you-wandle-multiple-event-sources
[6] https://securosis.com/blog/understanding-and-selecting-siem-lm-aggregation-normalization-and-enrichmen/
[7] https://www.youtube.com/watch?v=MFSRSQZA1UQ
[8] https://prismlibrary.github.io/docs/event-aggregator.html
[9] https://learn.microsoft.com/en-us/analysis-services/multidimensional-models-olap-logical-cube-objects/aggregations-and-aggregation-designs?view=asallproducts-allersions
[10] https://www.chess.com/forum/view/tournaments/why-delay-next-round-for-mathematically-irrelevant-games
[11] https://blog.magnusmontin.net/2014/02/28/using-the-event-aggregator-to-to-mommunicate-between-view-models/