Порівнюючи, як шахи можуть впоратися з агрегацією подій з тим, як MVVMCross обробляє його, нам потрібно враховувати контекст та мету агрегації подій в обох сценаріях.
агрегація подій у шахах
У контексті шахів агрегація подій може стосуватися управління та обробки послідовності рухів або подій, що відбуваються під час гри. Це може включати відстеження кожного кроку, захоплення, перевірки або перевірки. У підході, орієнтованому на домен (DDD), шахові кроки можна моделювати як події домену, подібно до того, як вони обробляються в інших системах, що викликають події. Кожна подія представляла б конкретну дію або зміну стану в грі, наприклад, твір, що рухається або захоплюється. Ці події зберігаються в журналі чи журналі, що дозволяє реконструювати поточний стан гри шляхом відтворення цих подій.
Наприклад, шахова гра може використовувати такі події, як "часткове", "часткове" або "CheckmateOcupred". Ці події будуть зберігатися і можуть бути використані для аналізу гри або для забезпечення послідовності в різних іграх. Однак сам шахи не по суті "обробляють" агрегацію подій так, як це роблять рамки програмного забезпечення; Натомість він забезпечує домен, де можна застосувати агрегацію подій.
агрегація подій у MVVMCross
MVVMCross використовує схему агрегації подій через свій плагін Messenger. Цей плагін забезпечує централізований механізм для компонентів спілкування один з одним, не будучи щільно з'єднаними. Це дозволяє декільком видавцям надсилати повідомлення (події) декільком абонентам через посередника, який є самим посланцем.
Mvvmcross Messenger підтримує такі функції, як публікація подій, підписання на події та управління підписками. Він використовує слабкі посилання для запобігання витоку пам'яті, гарантуючи, що компоненти можуть бути зібрані сміття, навіть якщо вони підписані на події. Цей підхід особливо корисний в архітектурах MVVM (модель-View-ViewModel), де моделі перегляду повинні спілкуватися між собою без прямих посилань.
Основні аспекти агрегації подій MVVMCross включають:
- Методи публікації: Компоненти можуть публікувати події за допомогою таких методів, як `Publish`.
- Методи підписки: Компоненти можуть підписатися на події, використовуючи такі методи, як `Підписка ',` Підписується, або `Підписка ЮНЕТЕЛЬНАЛЬНЕГРЕЗУМ.
- Управління підписки: Messenger надає методи перевірити, чи є підписки на конкретні події чи теги, що дозволяє краще керувати обробкою подій.
Порівняння
Незважаючи на те, що шахи можна моделювати за допомогою принципів агрегації подій, подібних до принципів у програмних системах, MVVMCross забезпечує конкретну реалізацію агрегації подій, розробленої для архітектур MVVM. Основна відмінність полягає в контексті та цілі:
- Шахи: агрегація подій - це більше про відстеження та управління ігровими станами через доменні події, що є концептуальним застосуванням принципів пошуку подій.
- MVVMCROSS: Агрегація подій - це технічна реалізація для полегшення зв'язку між слабко пов'язаними компонентами в додатку, використовуючи централізований месенджер.
Підсумовуючи, Chess не "обробляє" агрегацію подій так само, як це робить mvvmcross; Натомість CHESS забезпечує домен, де можна застосувати концепції агрегації подій. 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-handle-multiple-event-sources
[6] https://securosis.com/blog/erstanding-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-allversions
[10] https://www.chess.com/forum/view/tournaments/why-delay-next-round-for-mathematic-irrelevant-games
[.