Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Jak se šachy zpracovávají agregací událostí ve srovnání s mvvmcross


Jak se šachy zpracovávají agregací událostí ve srovnání s mvvmcross


Při porovnání toho, jak může šachy zvládnout agregaci událostí s tím, jak to MVVMCross zvládne, musíme zvážit kontext a účel agregace událostí v obou scénářích.

Agregace událostí v šachu

V kontextu šachu by agregace událostí mohla odkazovat na správu a zpracování sekvence pohybů nebo událostí, ke kterým dochází během hry. To by mohlo zahrnovat sledování každého pohybu, zachycení, kontroly nebo kontroly. V přístupu designu založeného na doméně (DDD) mohly být chesové pohyby modelovány jako události domény, podobné tomu, jak se s nimi zacházejí v jiných systémech pocházejících z pobytu událostí. Každá událost by představovala konkrétní akci nebo změnu státu ve hře, jako je pohyb nebo zachycení kusu. Tyto události by byly uloženy v deníku nebo protokolu, což by umožnilo rekonstrukci aktuálního stavu hry přehráním těchto událostí.

Například šachová hra by mohla používat události jako „PieceMoned“, „PiecesAptured“ nebo „CheckMateCurred“. Tyto události by byly přetrvávány a mohly by být použity k analýze hry nebo k zajištění konzistence v různých herních stavech. Samotný Chess však není ze své podstaty agregace událostí „zpracovávat“ ve způsobu, jakým se softwarové rámce dělají; Místo toho poskytuje doménu, kde lze aplikovat agregaci událostí.

Agregace událostí v mvvmcross

MVVMCross používá agregační vzorec událostí prostřednictvím svého pluginu Messenger. Tento plugin poskytuje centralizovaný mechanismus pro komponenty ke komunikaci mezi sebou, aniž by byl pevně spojen. Umožňuje více vydavatelům odesílat zprávy (události) více předplatitelům prostřednictvím mediátoru, který je samotný posel.

MVVMCross Messenger podporuje funkce, jako jsou publikování událostí, předplacení událostí a správa předplatného. Používá slabé odkazy, aby zabránilo únikům paměti, což zajišťuje, že komponenty mohou být shromážděny odpadky, i když jsou předplaceny k událostem. Tento přístup je zvláště užitečný v architekturách MVVM (Model-View-ViewModel), kde modely pohledu musí navzájem komunikovat bez přímých odkazů.

Klíčové aspekty agregace událostí MVVMCrossu zahrnují:

- Publikování Metody: Komponenty mohou publikovat události pomocí metod jako `Publish`.
- Metody předplatného: Komponenty se mohou přihlásit k odběru událostí pomocí metod jako `Abcribe ',` AbcribeOnMainthread` nebo `AdbcribeOnthreadPoolThread`.
- Správa předplatného: Messenger poskytuje metody pro kontrolu, zda existují předplatné pro konkrétní události nebo značky, což umožňuje lepší správu zpracování událostí.

Porovnání

Zatímco šachy lze modelovat pomocí principů agregace událostí podobné principům v softwarových systémech, MVVMCross poskytuje specifickou implementaci agregace událostí určené pro architektury MVVM. Hlavní rozdíl spočívá v kontextu a účelu:

- Chess: Agregace událostí je spíše o sledování a správě herních stavů prostřednictvím doménových událostí, což je koncepční aplikace principů získávání událostí.
- MVVMCross: Agregace událostí je technická implementace pro usnadnění komunikace mezi volně vázanými komponenty v aplikaci pomocí centralizovaného posel.

Stručně řečeno, šachy „nezvládne“ agregaci událostí stejným způsobem MVVMCross; Místo toho Chess poskytuje doménu, kde lze aplikovat koncepty agregace událostí. Na druhé straně MVVMCross nabízí konkrétní implementaci agregace událostí pro vývoj softwaru.

Citace:
[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-handle-multriple-event-soudce
[6] https://securosis.com/blog/unstanding-and-selecting-siem-lm-ggregation-normalization-and- enrichmen/
[7] https://www.youtube.com/watch?v=mfsrsqza1uq
[8] https://prislibrary.github.io/docs/event-aggregator.html
[9] https://learn.microsoft.com/en-us/analysis-services/multidimensional-models-olap-logical-pube-Objects/aggregations-and-aggregation-designs?view=ASallProducts-allversions
[10] https://www.chess.com/forum/view/tournaments/why-delay-next-nound-for--mathematically-Rerelevant-Games
[11] https://blog.magnusmontin.net/2014/02/28/using-the-event-aggregator-Pattern-to-communicate-between-modells/