Salīdzinot, kā šahs varētu rīkoties ar notikumu agregāciju ar to, kā MVVMCROSS rīkojas ar to, mums jāapsver notikumu apkopošanas konteksts un mērķis abos scenārijos.
notikumu agregācija šahā
Šaha kontekstā notikumu agregācija varētu attiekties uz kustību vai notikumu secības pārvaldību un apstrādi, kas notiek spēles laikā. Tas varētu ietvert katra gājiena, uztveršanas, pārbaudes vai kontroles izsekošanu. Domēna virzītā dizaina (DDD) pieejā šaha kustības varētu modelēt kā domēna notikumus, līdzīgi tam, kā tās tiek apstrādātas citās notikumu iegūšanas sistēmās. Katrs notikums atspoguļotu īpašu darbības vai stāvokļa maiņu spēlē, piemēram, gabals, kas pārvietojas vai tiek notverts. Šie notikumi tiktu saglabāti žurnālā vai žurnālā, ļaujot atjaunot šos notikumus pašreizējo spēles stāvokli.
Piemēram, šaha spēle var izmantot tādus notikumus kā "gabals", "gabaliņapstrādāts" vai "CheckMateCurred". Šie notikumi būtu pastāvīgi, un tos varētu izmantot, lai analizētu spēli vai nodrošinātu konsekvenci dažādos spēles stāvokļos. Tomēr pati šaha pēc būtības "netiek rīkota" notikumu agregācija programmatūras ietvaros; Tā vietā tas nodrošina domēnu, kurā var izmantot notikumu apkopošanu.
Notikumu agregācija MVVMCROSS
MVVMCROSS izmanto notikumu agregācijas modeli, izmantojot savu Messenger spraudni. Šis spraudnis nodrošina centralizētu komponentu mehānismu, lai sazinātos savā starpā, un nav cieši savienots. Tas ļauj vairākiem izdevējiem nosūtīt ziņojumus (notikumus) vairākiem abonentiem, izmantojot starpnieku, kas ir pats kurjers.
MVVMCROSS Messenger atbalsta tādas funkcijas kā pasākumu publicēšana, notikumu abonēšana un abonēšanas pārvaldīšana. Tas izmanto vājas atsauces, lai novērstu atmiņas noplūdes, nodrošinot, ka komponenti var savākt atkritumus pat tad, ja tie ir abonēti notikumiem. Šī pieeja ir īpaši noderīga MVVM (modeļa-View-ViewModel) arhitektūrā, kur skatu modeļiem ir jāsazinās savā starpā bez tiešām atsaucēm.
MVVMCROSS notikumu apkopošanas galvenie aspekti ir:
- Publicēšanas metodes: Komponenti var publicēt pasākumus, izmantojot tādas metodes kā `Publicēt`.
- Abonēšanas metodes: Komponenti var abonēt notikumus, izmantojot tādas metodes kā `abonēt`,` abronesonmainthread` vai `abrontonthreadpoolthread`.
- Abonēšanas pārvaldība: Messenger nodrošina metodes, lai pārbaudītu, vai ir abonementi konkrētiem notikumiem vai tagiem, ļaujot labāk pārvaldīt notikumu apstrādi.
salīdzinājums
Kaut arī šahu var modelēt, izmantojot notikumu agregācijas principus, kas līdzīgi programmatūras sistēmās, MVVMCROSS nodrošina īpašu notikumu agregācijas ieviešanu, kas paredzēta MVVM arhitektūrām. Galvenā atšķirība slēpjas kontekstā un mērķī:
- Šahs: Pasākumu agregācija vairāk attiecas uz spēles stāvokļu izsekošanu un pārvaldību, izmantojot domēna notikumus, kas ir notikumu iegūšanas principu konceptuāls pielietojums.
- MVVMCROSS: notikumu agregācija ir tehniska ieviešana, lai atvieglotu komunikāciju starp brīvi savienotajiem komponentiem lietojumprogrammā, izmantojot centralizētu kurjeru.
Rezumējot, šahs "netiek" apstrādāts "notikumu agregācijā tādā pašā veidā, kā to dara MVVMCROSS; Tā vietā šahs nodrošina domēnu, kurā var izmantot notikumu apkopošanas koncepcijas. No otras puses, MVVMCross piedāvā konkrētu notikumu apkopošanas ieviešanu programmatūras izstrādei.
Atsauces:[1] https://ep2024.europython.eu/session/event-sourcing-from-the-ground-c
[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.]
[7] https://www.youtube.com/watch?v=mfsrsqza1uq
[8] https://prismlibrary.github.io/docs/event-aggregator.html
.
[10] https://www.chess.com/forum/view/tournaments/why-denay-next-stround-for-mathematic-irelevant-games
[11] https://blog.magnusmontin.net/2014/02/28/using-the-event-aggregator-pattern-to-communicate-between-view-models/