Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Hoe gaat het schaken om met gebeurtenisaggregatie in vergelijking met MVVMCross


Hoe gaat het schaken om met gebeurtenisaggregatie in vergelijking met MVVMCross


Bij het vergelijken van hoe schaken kan omgaan met gebeurtenisaggregatie met hoe MVVMCross ermee omgaat, moeten we de context en het doel van gebeurtenisaggregatie in beide scenario's overwegen.

Evenementaggregatie in schaak

In de context van schaak kan evenementaggregatie verwijzen naar het beheren en verwerken van de volgorde van bewegingen of gebeurtenissen die plaatsvinden tijdens een spel. Dit kan inhouden dat elke beweging wordt gevolgd, vastleggen, checken of schakelaar. In een domein-gedreven ontwerp (DDD) -benadering kunnen schaakbewegingen worden gemodelleerd als domeingebeurtenissen, vergelijkbaar met hoe ze worden behandeld in andere systemen voor evenementen. Elke gebeurtenis zou een specifieke actie of staatsverandering in het spel vertegenwoordigen, zoals een stuk dat beweegt of wordt vastgelegd. Deze evenementen zouden worden opgeslagen in een dagboek of logboek, waardoor de huidige status van het spel kan worden gereconstrueerd door deze gebeurtenissen opnieuw te spelen.

Een schaakspel kan bijvoorbeeld evenementen gebruiken zoals "stukje", "piecheceptured" of "CheckMateOccured". Deze evenementen zouden blijven bestaan ​​en kunnen worden gebruikt om het spel te analyseren of om consistentie in verschillende spelstaten te waarborgen. Schaken zelf "omgaat" evenementaggregatie niet in de manier waarop softwarekaders dat doen; In plaats daarvan biedt het een domein waar evenementaggregatie kan worden toegepast.

Evenementaggregatie in MVVMCross

MVVMCross gebruikt een aggregatiepatroon van het evenement via de Messenger -plug -in. Deze plug -in biedt een gecentraliseerd mechanisme voor componenten om met elkaar te communiceren zonder strak gekoppeld te zijn. Hiermee kunnen meerdere uitgevers berichten (evenementen) naar meerdere abonnees verzenden via een bemiddelaar, de messenger zelf.

De MVVMCross Messenger ondersteunt functies zoals het publiceren van evenementen, het abonneren op evenementen en het beheren van abonnementen. Het maakt gebruik van zwakke referenties om geheugenlekken te voorkomen, zodat componenten kunnen worden verzameld, zelfs als ze worden geabonneerd op gebeurtenissen. Deze benadering is met name nuttig in MVVM (Model-View-ViewModel) architecturen, waarbij weergavemodellen met elkaar moeten communiceren zonder directe referenties.

Belangrijkste aspecten van de evenementenaggregatie van MVVMCross zijn onder meer:

- Publicatiemethoden: componenten kunnen evenementen publiceren met behulp van methoden zoals `publish`.
- Abonnementsmethoden: Componenten kunnen zich abonneren op gebeurtenissen met methoden zoals `abonneren ',` abonneeonmainthread` of `Subcureeonthreadpoolthread`.
- Abonnementsbeheer: de Messenger biedt methoden om te controleren of er abonnementen zijn voor specifieke gebeurtenissen of tags, waardoor een beter beheer van gebeurtenisbehandeling mogelijk is.

Vergelijking

Hoewel schaken kan worden gemodelleerd met behulp van gebeurtenisaggregatieprincipes die vergelijkbaar zijn met die in softwaresystemen, biedt MVVMCross een specifieke implementatie van gebeurtenisaggregatie die is ontworpen voor MVVM -architecturen. Het belangrijkste verschil ligt in de context en het doel:

- Chess: Aggregation van evenementen gaat meer over het volgen en beheren van gamestatussen via domeinevenementen, wat een conceptuele toepassing is van het sourcing van evenementen.
- MVVMCROSS: Aggregatie van evenementen is een technische implementatie voor het faciliteren van de communicatie tussen losjes gekoppelde componenten in een applicatie, met behulp van een gecentraliseerde messenger.

Samenvattend, schaken "omgaat" evenementaggregatie niet op dezelfde manier als MVVMCross; In plaats daarvan biedt schaken een domein waar evenementenaggregatieconcepten kunnen worden toegepast. MVVMCross biedt daarentegen een concrete implementatie van evenementenaggregatie voor softwareontwikkeling.

Citaten:
[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-wandle-multiple-event-sources
[6] https://securosis.com/blog/understanding-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/aggregation-and-aggregation-designs?view=asallproducts-allversions-allversions
[10] https://www.chess.com/forum/view/tournamenten/why-Delay-next-for-Mathematic- Irrelevant-Games
[11] https://blog.magnusmontin.net/2014/02/28/using-the-event-aggregator-pattern-to-communicate-bet tussen-view-models/