Når vi sammenligner hvordan sjakk kan håndtere hendelsesaggregering med hvordan MVVMCROSS håndterer det, må vi vurdere konteksten og formålet med hendelsesaggregering i begge scenariene.
Eventsaggregering i sjakk
I sammenheng med sjakk kan hendelsesaggregering referere til å håndtere og behandle sekvensen av trekk eller hendelser som oppstår under et spill. Dette kan innebære å spore hvert trekk, fange, sjekke eller sjekke kamerat. I en domenedrevet design (DDD) -tilnærming kan sjakkbevegelser modelleres som domenehendelser, på samme måte som de håndteres i andre hendelseshemmede systemer. Hver hendelse vil representere en spesifikk handling eller statsendring i spillet, for eksempel et stykke som beveger seg eller blir tatt til fange. Disse hendelsene vil bli lagret i en journal eller logg, slik at den nåværende tilstanden i spillet kan rekonstrueres ved å spille av disse hendelsene på nytt.
For eksempel kan et sjakkspill bruke hendelser som "Piecemoved", "Pieccaptured" eller "checkmateoccurred." Disse hendelsene vil være vedvarende og kan brukes til å analysere spillet eller for å sikre konsistens på tvers av forskjellige spilltilstander. Imidlertid "håndterer sjakk i seg selv" hendelsesaggregering i måten programvarerammer gjør; I stedet gir det et domene der hendelsesaggregering kan brukes.
Eventsaggregering i MVVMCROSS
MVVMCROSS bruker et hendelsesaggregasjonsmønster gjennom sin messenger -plugin. Denne pluginen gir en sentralisert mekanisme for komponenter for å kommunisere med hverandre uten å være tett koblet. Det lar flere utgivere sende meldinger (hendelser) til flere abonnenter gjennom en mekler, som er selve sendebudet.
MVVMCROSS MESSENGER støtter funksjoner som å publisere hendelser, abonnere på hendelser og håndtere abonnement. Den bruker svake referanser for å forhindre minnelekkasjer, og sikrer at komponenter kan samles søppel selv om de er abonnert på hendelser. Denne tilnærmingen er spesielt nyttig i MVVM (Model-View-ViewModel) arkitekturer, der visningsmodeller trenger å kommunisere med hverandre uten direkte referanser.
Viktige aspekter ved MVVMCROSSs hendelsesaggregering inkluderer:
- Publiseringsmetoder: Komponenter kan publisere hendelser ved hjelp av metoder som `publiser '.
- Abonnementsmetoder: Komponenter kan abonnere på hendelser ved å bruke metoder som `Abonner,` AbonseonMainThread`, eller `AbonseLontThreadPooltThread`.
- Abonnementsstyring: Messenger gir metoder for å sjekke om det er abonnement for spesifikke hendelser eller tagger, noe som gir bedre styring av hendelseshåndtering.
Sammenligning
Mens sjakk kan modelleres ved hjelp av hendelsesaggregasjonsprinsipper som ligner på programvaresystemer, gir MVVMCROSS en spesifikk implementering av hendelsesaggregering designet for MVVM -arkitekturer. Hovedforskjellen ligger i sammenheng og formål:
- Sjakk: Arrangementsaggregering handler mer om sporing og administrasjon av spilltilstander gjennom domenehendelser, som er en konseptuell anvendelse av hendelseshemmingsprinsipper.
- MVVMCROSS: Hendelsesaggregering er en teknisk implementering for å lette kommunikasjonen mellom løst koblede komponenter i en applikasjon, ved hjelp av en sentralisert messenger.
Oppsummert "takler ikke sjakk" hendelsesaggregering på samme måte som MVVMCROSS gjør; I stedet gir sjakk et domene der hendelsesaggregasjonskonsepter kan brukes. MVVMCROSS tilbyr derimot en konkret implementering av hendelsesaggregering for programvareutvikling.
Sitasjoner:[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-cources
[6] https://securosis.com/blog/understanding-and-selecting-siem-lm-aggregation-normalization-andrichmen/
[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-odels-olap-logical-cube-objects/aggregation-and-aggregation-designs?view=asallproducts-andersions
[10] https://www.chess.com/forum/view/tournaments/why-delay-next-round-for-matematisk-irrelevant-games
[11] https://blog.magnusmontin.net/2014/02/28/using-the-event-aggregator-pattern-to-communicate-between-visemodels/