Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kaip šachmatai tvarko įvykių agregaciją, palyginti su MVVMCross


Kaip šachmatai tvarko įvykių agregaciją, palyginti su MVVMCross


Palygindami, kaip šachmatai gali tvarkyti įvykių kaupimąsi su tuo, kaip MVVMCROSS jį tvarko, turime atsižvelgti į abiejų scenarijų įvykių kaupimo kontekstą ir tikslą.

renginių agregacija šachmatais

Šachmatų kontekste įvykių agregacija galėtų reikšti judesių ar įvykių, vykstančių žaidimo metu, sekos valdymą ir apdorojimą. Tai gali apimti kiekvieno judesio, fiksavimo, patikrinimo ar patikrinimo ar patikrinimo stebėjimą. Taikant domenų dizaino (DDD) metodą, šachmatų judesius galima modeliuoti kaip domenų įvykiai, panašūs į tai, kaip jie tvarkomi kitose įvykių sistemose. Kiekvienas įvykis parodytų konkretų veiksmą ar būsenos pokyčius žaidime, pavyzdžiui, gabalas, judantis ar užfiksuotas. Šie įvykiai būtų saugomi žurnale ar žurnale, leidžiant rekonstruoti dabartinę žaidimo būklę atkuriant šiuos įvykius.

Pvz., Šachmatų žaidime gali būti naudojami tokie įvykiai kaip „dalijimosi“, „padalinta“ arba „CheckmateOccured“. Šie įvykiai bus išlikti ir gali būti naudojami analizuoti žaidimą arba užtikrinti nuoseklumą įvairiose žaidimų būsenose. Tačiau pats šachmatai iš prigimties „tvarkyk“ įvykių kaupimą programinės įrangos sistemose; Vietoj to, jis suteikia domeną, kuriame galima pritaikyti įvykių kaupimą.

Event Aggregation in MvvmCross

„MVVMCross“ naudoja įvykių kaupimo modelį per savo „Messenger“ papildinį. Šis papildinys suteikia centralizuotą komponentų, leidžiančių bendrauti tarpusavyje, mechanizmą, nebūdamas tvirtai sujungtas. Tai leidžia keliems leidėjams siųsti pranešimus (įvykius) keliems abonentams per tarpininką, kuris yra pats „Messenger“.

„MVVMCross Messenger“ palaiko tokias funkcijas kaip leidybos renginiai, renginių prenumeratos ir prenumeratų valdymas. Jis naudoja silpnas nuorodas, kad būtų išvengta atminties nutekėjimo, užtikrinant, kad komponentai gali būti surinkti šiukšles, net jei jie užsiprenumeravo įvykius. Šis požiūris yra ypač naudingas MVVM („Model-View-ViewModel“) architektūrose, kur „View“ modeliams reikia bendrauti tarpusavyje be tiesioginių nuorodų.

Pagrindiniai MVVMCROSS įvykių apibendrinimo aspektai yra::

- Leidybos metodai: Komponentai gali skelbti įvykius naudojant tokius metodus kaip „publik“.
- Prenumeratos metodai: Komponentai gali užsiprenumeruoti įvykius, naudodamiesi tokiais metodais kaip „prenumeruoti“, „prenumeruotionmainthread“ arba „prenumeruotiThreadPoolthread“.
- Prenumeratos valdymas: „Messenger“ pateikia metodus, kaip patikrinti, ar yra konkrečių įvykių ar žymų prenumeratos, leidžiančios geriau valdyti įvykių tvarkymą.

Comparison

Nors šachmatai gali būti modeliuojami naudojant įvykių kaupimo principus, panašius į programinės įrangos sistemose, MVVMCross pateikia specifinį įvykių kaupimo, skirto MVVM architektūroms, įgyvendinimą. Pagrindinis skirtumas yra kontekstas ir tikslas:

- Šachmatai: Įvykių kaupimas labiau susijęs su žaidimų būsenų stebėjimu ir valdymu per domenų renginius, o tai yra konceptualus renginių tiekimo principų pritaikymas.
- MVVMCross: Įvykių kaupimas yra techninis įgyvendinimas palengvinant ryšį tarp laisvai sujungtų komponentų programos, naudojant centralizuotą pasiuntinį.

Apibendrinant galima pasakyti, kad šachmatai „nesutinka“ įvykių kaupimu taip pat, kaip tai daro MVVMCROSS; Vietoj to, šachmatai pateikia domeną, kuriame galima pritaikyti įvykių agregavimo koncepcijas. MvvmCross, on the other hand, offers a concrete implementation of event aggregation for software development.

Citatos:
[1] https://ep2024.europython.eu/session/event-ourourcing-from-the-ground-up
[2] https://www.mvvmcross.com/documentation/plugins/messenger
[3] https://debezium.io/blog/2020/02/10/event-ourourcing-vs-cdc/
[4] https://github.com/mateusznakodach/ddd.eventsourcing.portsandadapters.typescript.nestjs.chess
[5] https://www.linkedin.com/advice/0/how-do-you-handle-multiple-event-sources
[6] https://securosis.com/blog/undericle-and-selecting-siem-lm-agegregation-normalizacija ir-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/multitidimensional-models-olap-gogical-cube-objects/agregations-and-agregation-designs?view=asallproducts-Allversijos
[10] https://www.chess.com/forum/view/Tournaments/why-delay-next- round-for-mathematicatiškai- irrelevent-games
[11] https://blog.magnusmontin.net/2014/02/28/using-the-event-aggregator-pattern-to-communicate-between-view-models/