Kun verrataan sitä, kuinka shakki voi käsitellä tapahtumien yhdistämistä siihen, kuinka MVVMCross käsittelee sitä, meidän on harkittava tapahtumien yhdistämisen kontekstia ja tarkoitusta molemmissa skenaarioissa.
Tapahtuman yhdistäminen shakissa
Shakkin yhteydessä tapahtumien yhdistäminen voisi viitata pelin aikana tapahtuvien liikkeiden tai tapahtumien hallintaan ja käsittelyyn. Tähän voi sisältyä jokaisen liikkeen seuraaminen, sieppaaminen, tarkistaminen tai tarkistusmatka. Verkkotunnusvetoisessa suunnittelussa (DDD) -lähestymistavassa shakkiliikkeet voitaisiin mallintaa verkkotunnus-tapahtumiksi, samanlaisia kuin miten niitä hoidetaan muissa tapahtumalähteissä. Jokainen tapahtuma edustaa tiettyä toimintaa tai valtion muutosta pelissä, kuten kappale, joka liikkuu tai vangitaan. Nämä tapahtumat tallennettaisiin päiväkirjaan tai lokiin, mikä mahdollistaa pelin nykytilan rekonstruoida toistamalla nämä tapahtumat.
Esimerkiksi shakkipeli voi käyttää tapahtumia, kuten "Piirleved", "Piceccaced" tai "CheckMateOcRred". Näitä tapahtumia jatketaan, ja niitä voidaan käyttää pelin analysointiin tai johdonmukaisuuden varmistamiseen eri pelivaltioissa. Shakki ei kuitenkaan "käsittele" tapahtumien yhdistämistä ohjelmistokehyksien tapaan; Sen sijaan se tarjoaa verkkotunnuksen, jossa tapahtumien yhdistämistä voidaan soveltaa.
Tapahtuman yhdistäminen MVVMCrossissa
MVVMCross käyttää tapahtumien yhdistämiskuviota Messenger -laajennuksensa kautta. Tämä laajennus tarjoaa keskitetyn mekanismin komponenteille kommunikoida keskenään ilman tiukasti kytkemistä. Sen avulla useat kustantajat voivat lähettää viestejä (tapahtumia) useille tilaajille välittäjän kautta, joka on itse Messenger.
MVVMCross Messenger tukee ominaisuuksia, kuten julkaisutapahtumia, tapahtumien tilaamista ja tilausten hallintaa. Se käyttää heikkoja viitteitä muistivuotojen estämiseen varmistaen, että komponentit voidaan kerätä roskia, vaikka ne olisivat tilanneet tapahtumia. Tämä lähestymistapa on erityisen hyödyllinen MVVM-arkkitehtuureissa MVVM (malli-näkymä-viwodel), jossa näkymämallien on kommunikoitava keskenään ilman suoria viitteitä.
MVVMCrossin tapahtumien yhdistämisen keskeisiä näkökohtia ovat:
- Kustantamenetelmät: Komponentit voivat julkaista tapahtumia käyttämällä menetelmiä, kuten `` julkaisu`.
- Tilausmenetelmät: Komponentit voivat tilata tapahtumia käyttämällä menetelmiä, kuten `tilaa`,` tilaaja, tai `Tilata
- Tilauksen hallinta: Messenger tarjoaa menetelmiä tarkistaakseen, onko tiettyjen tapahtumien tai tunnisteiden tilauksia, mikä mahdollistaa tapahtumien käsittelyn paremman hallinnan.
Vertailu
Vaikka shakki voidaan mallintaa käyttämällä ohjelmistojärjestelmissä samanlaisia tapahtumien yhdistämisperiaatteita, MVVMCross tarjoaa MVVM -arkkitehtuureille suunniteltujen tapahtumien yhdistämisen erityisen toteutuksen. Tärkein ero on kontekstissa ja tarkoituksessa:
- Shakki: Tapahtumien yhdistäminen on enemmän pelien seurannasta ja hallinnasta verkkotunnuksen tapahtumien kautta, mikä on tapahtumien hankintaperiaatteiden käsitteellinen soveltaminen.
- MVVMCross: Tapahtuman yhdistäminen on tekninen toteutus sovelluksen löysästi kytkettyjen komponenttien välisen viestinnän helpottamiseksi keskitettyä lähettiläällä.
Yhteenvetona voidaan todeta, että shakki ei "käsittele" tapahtumien yhdistämistä samalla tavalla kuin MVVMCross tekee; Sen sijaan shakki tarjoaa verkkotunnuksen, jossa tapahtumien yhdistämiskonsepteja voidaan soveltaa. Toisaalta MVVMCross tarjoaa konkreettisen toteutuksen tapahtumien aggregaatiosta ohjelmistokehitykseen.
Viittaukset:[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-ourcing-vs-cdc/
[4] https://github.com/mateusznakodach/dd.eventsourcing.portsandadapters.typescript.nestjs.chess
.
.
[7] https://www.youtube.com/watch?v=mfsrsqza1uq
[8] https://prismlibrary.github.io/docs/event-aggregrator.html
.
[10.
.