Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Ako spracováva agregáciu udalostí v porovnaní s MVVMCross


Ako spracováva agregáciu udalostí v porovnaní s MVVMCross


Pri porovnaní toho, ako môže šach zvládnuť agregáciu udalostí s tým, ako ho MVVMCross zvládne, musíme zvážiť kontext a účel agregácie udalostí v oboch scenároch.

Agregácia udalostí v šachu

V kontexte šachu by sa agregácia udalostí mohla vzťahovať na riadenie a spracovanie postupnosti pohybov alebo udalostí, ktoré sa vyskytujú počas hry. To by mohlo zahŕňať sledovanie každého ťahu, zachytenie, kontrolu alebo kontrolu. V prístupe na dizajn domény (DDD) by sa šachové pohyby mohli modelovať ako udalosti domény, podobné tomu, ako sa s nimi zaobchádza v iných systémoch pochádzajúcich z udalostí. Každá udalosť by predstavovala špecifickú akciu alebo zmenu štátu v hre, napríklad kus pohybu alebo zachytenie. Tieto udalosti by boli uložené v denníku alebo denníku, čo by umožnilo rekonštrukciu aktuálneho stavu hry prehrávaním týchto udalostí.

Napríklad šachová hra môže používať udalosti ako „Prunelové“, „kusecaptured“ alebo „CheckmateOccurred“. Tieto udalosti by sa pretrvávali a mohli by sa použiť na analýzu hry alebo na zabezpečenie konzistentnosti v rôznych herných stavoch. Samotný šach však neodmyslila agregáciu udalostí tak, ako to robia softvérové ​​rámce; Namiesto toho poskytuje doménu, v ktorej je možné uplatniť agregáciu udalostí.

Agregácia udalostí v MVVMCross

MVVMCross používa vzor agregácie udalostí prostredníctvom svojho doplnku Messenger. Tento doplnok poskytuje centralizovaný mechanizmus pre komponenty na komunikáciu medzi sebou bez toho, aby bol pevne spojený. Umožňuje viacerým vydavateľom posielať správy (udalosti) viacerým predplatiteľom prostredníctvom sprostredkovateľa, ktorý je samotným poslom.

MVVMCross Messenger podporuje funkcie, ako je publikovanie udalostí, prihlásenie sa na odber udalostí a správa predplatných. Používa slabé odkazy na zabránenie úniku pamäte, čím sa zabezpečí, že komponenty môžu byť zhromaždené odpadky, aj keď sú prihlásené na odber udalostí. Tento prístup je užitočný najmä v architektúrach MVVM (Model-View-ViewModel), kde modely zobrazenia musia navzájom komunikovať bez priamych odkazov.

Kľúčové aspekty agregácie udalostí MVVMCross zahŕňajú:

- Metódy publikovania: Komponenty môžu publikovať udalosti pomocou metód ako `publikovanie".
- Metódy predplatného: Komponenty sa môžu prihlásiť na odber udalostí pomocou metód ako `prihlásenie`,` subscriberonMainThread` alebo `subscriceOnthReadPoolThread`.
- Správa predplatného: Messenger poskytuje metódy na kontrolu, či existujú predplatné pre konkrétne udalosti alebo značky, čo umožňuje lepšie riadenie zaobchádzania s udalosťami.

Porovnanie

Zatiaľ čo šach je možné modelovať pomocou princípov agregácie udalostí podobných tým v softvérových systémoch, MVVMCross poskytuje špecifickú implementáciu agregácie udalostí určených pre architektúry MVVM. Hlavný rozdiel spočíva v kontexte a účele:

- Šach: Agregácia udalostí je skôr o sledovaní a riadení herných stavov prostredníctvom udalostí domény, čo je koncepčné uplatňovanie princípov získavania udalostí.
- MVVMCross: Agregácia udalostí je technická implementácia na uľahčenie komunikácie medzi voľne spojenými komponentmi v aplikácii pomocou centralizovaného posla.

Stručne povedané, šach „nezvládne agregáciu udalostí rovnakým spôsobom, ako to robí MVVMCross; Namiesto toho poskytuje šach doménu, v ktorej je možné uplatniť koncepty agregácie udalostí. Na druhej strane MVVMcross ponúka konkrétnu implementáciu agregácie udalostí pre vývoj softvéru.

Citácie:
[1] https://ep2024.europython.eu/session/event-sourcing-from-the-ground-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-d--you-wandle-meltiple-event-sources
[6] https://securosis.com/blog/understanding-and-selecting-siem-lm-aggregation-mornalization-and-enrichmen/
[7] https://www.youtube.com/watch?v=MFSRSQZA1UQ
[8] https://prismLibrary.github.io/docs/event-aggregator.html
Https://learn.microsoft.com/en-us/analysis-services/multidimensional-models-olap-logical-cube-objects/aggregations-and--aggregation-designs?view=AsallProducts-alversions
[10] https://www.chess.com/forum/view/tournaments/why-delay-next-round-for-mathematical-irrelevant-games
[11] https://blog.magnusmontin.net/2014/02/28/using-the-event-aggregator-pattern-to-communicate-between-view-models/