Porównując, w jaki sposób szachy mogą obsługiwać agregację zdarzeń z tym, jak obsługuje ją MVVMCROSS, musimy rozważyć kontekst i cel agregacji zdarzeń w obu scenariuszach.
agregacja zdarzeń w szachach
W kontekście szachów agregacja zdarzeń może odnosić się do zarządzania i przetwarzania sekwencji ruchów lub zdarzeń, które występują podczas gry. Może to obejmować śledzenie każdego ruchu, przechwytywania, czeku lub checkmate. W podejściu projektowym opartym na domenach (DDD) ruchy szachowe mogą być modelowane jako zdarzenia domeny, podobnie jak w przypadku ich obsługi w innych systemach pozyskiwania zdarzeń. Każde wydarzenie reprezentuje konkretną zmianę akcji lub stanu w grze, taka jak poruszający się kawałek lub uchwycenie. Wydarzenia te byłyby przechowywane w czasopiśmie lub dzienniku, umożliwiając odbudowę obecnego stanu gry poprzez odtwarzanie tych wydarzeń.
Na przykład gra w szachy może korzystać z wydarzeń, takich jak „fragmentaryczna”, „PiecoCapted” lub „CheckMateCcurred”. Wydarzenia te byłyby utrzymywane i mogą być wykorzystane do analizy gry lub do zapewnienia spójności w różnych stanach gry. Jednak sama szacha nie z natury „obsługuje” agregację zdarzeń w sposób, w jaki ramy oprogramowania; Zamiast tego zapewnia domenę, w której można zastosować agregację zdarzeń.
Agregacja zdarzeń w Mvvmcross
MVVMCROSS wykorzystuje wzór agregacji zdarzeń za pośrednictwem swojej wtyczki Messenger. Ta wtyczka zapewnia scentralizowany mechanizm komponentów do komunikowania się ze sobą bez szczelnego sprzężenia. Umożliwia wielu wydawcom wysyłanie wiadomości (zdarzeń) do wielu subskrybentów za pośrednictwem mediatora, który jest samym posłańcem.
Messenger MVVMCROSS obsługuje takie funkcje, jak publikowanie wydarzeń, subskrybowanie wydarzeń i zarządzanie subskrypcjami. Wykorzystuje słabe odniesienia, aby zapobiec wyciekom pamięci, zapewniając, że komponenty mogą być zbierane śmieci, nawet jeśli są one subskrybowane z zdarzeniami. Takie podejście jest szczególnie przydatne w architekturach MVVM (Model-View-ViewModel), w których modele widoku muszą się ze sobą komunikować bez bezpośrednich odniesień.
Kluczowe aspekty agregacji zdarzeń MVVMCross obejmują:
- Metody publikowania: Komponenty mogą publikować wydarzenia przy użyciu metod takich jak „Publish”.
- Metody subskrypcji: Komponenty mogą subskrybować zdarzenia przy użyciu metod takich jak `` Subcribrise`, `SubcribriteonMainThread` lub` `SubcribriteThreadPoolThread`.
- Zarządzanie subskrypcją: Wysłannik zapewnia metody sprawdzania, czy istnieją subskrypcje określonych zdarzeń lub tagów, umożliwiając lepsze zarządzanie obsługą zdarzeń.
Porównanie
Podczas gdy szachy można modelować przy użyciu zasad agregacji zdarzeń podobnych do tych w systemach oprogramowania, MVVMCross zapewnia specyficzną implementację agregacji zdarzeń zaprojektowanej dla architektur MVVM. Główna różnica polega na kontekście i celu:
- Szachy: Agregacja zdarzeń polega bardziej na śledzeniu i zarządzaniu stanami gier poprzez wydarzenia domeny, które jest koncepcyjnym zastosowaniem zasad pozyskiwania zdarzeń.
- MVVMCROSS: Agregacja zdarzeń jest techniczną implementacją ułatwiania komunikacji między luźno sprzężonymi komponentami w aplikacji za pomocą scentralizowanego posłańca.
Podsumowując, szachy nie „obsługują” agregacji zdarzeń w taki sam sposób, jak MVVMCROSS; Zamiast tego szachy zapewnia domenę, w której można zastosować pojęcia agregacji zdarzeń. Z drugiej strony MVVMCross oferuje konkretną wdrożenie agregacji zdarzeń w zakresie tworzenia oprogramowania.
Cytaty:[1] https://ep2024.europython.eu/session/event-sourcing-from-the-ground-p
[2] https://www.mvvmcross.com/documentation/plugins/messenger
[3] https://debezium.io/blog/2020/02/10/event-sourcing-vs-cdc/
[4] https://github.com/mateszakodach/ddd.eventsourcing.portsandadapters.typescript.nestjs.chess
[5] https://www.linkedin.com/advice/0/how-do-you uchwyt-multiple-event-sources
[6] https://securosis.com/blog/understanding-and-selecting-siem-lm-aggregaation-rormalizacja-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/agregations-and-agregation-designs?view=ASALLProducts-allversions
[10] https://www.chess.com/forum/view/tournaments/why-delay-next-round-for-mathematycznie-ivrelevant-games
[11] https://blog.magnusmontin.net/2014/02/28/using-the-event-aggregator-to-communiate-between-view-models/