Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Πώς χειρίζεται η συσσώρευση συμβάντων σκακιού σε σύγκριση με το MVVMCROSS


Πώς χειρίζεται η συσσώρευση συμβάντων σκακιού σε σύγκριση με το MVVMCROSS


Κατά τη σύγκριση του τρόπου με τον οποίο το σκάκι μπορεί να χειριστεί τη συσσώρευση συμβάντων με τον τρόπο με τον οποίο το χειρίζεται το MVVMCROSS, πρέπει να εξετάσουμε το πλαίσιο και τον σκοπό της συσσωμάτωσης των εκδηλώσεων και στα δύο σενάρια.

Συνέντευξη συμβάντων στο σκάκι

Στο πλαίσιο του σκακιού, η συσσωμάτωση των γεγονότων θα μπορούσε να αναφέρεται στη διαχείριση και επεξεργασία της ακολουθίας κινήσεων ή γεγονότων που συμβαίνουν κατά τη διάρκεια ενός παιχνιδιού. Αυτό θα μπορούσε να περιλαμβάνει την παρακολούθηση κάθε κίνησης, καταγραφής, ελέγχου ή ματς. Σε μια προσέγγιση σχεδιασμού τομέα (DDD), οι κινήσεις σκακιού θα μπορούσαν να διαμορφωθούν ως συμβάντα τομέα, παρόμοια με τον τρόπο με τον οποίο αντιμετωπίζονται σε άλλα συστήματα που προέρχονται από συμβάν. Κάθε εκδήλωση θα αντιπροσωπεύει μια συγκεκριμένη ενέργεια ή μια αλλαγή κατάστασης στο παιχνίδι, όπως ένα κομμάτι που κινείται ή συλλαμβάνεται. Αυτά τα γεγονότα θα αποθηκεύονται σε ένα περιοδικό ή ένα αρχείο καταγραφής, επιτρέποντας την ανακατασκευή της τρέχουσας κατάστασης του παιχνιδιού με την επανάληψη αυτών των γεγονότων.

Για παράδειγμα, ένα παιχνίδι σκακιού μπορεί να χρησιμοποιεί γεγονότα όπως "αποσπασμένα", "αποσπασμένα" ή "checkMateCvurred". Αυτά τα γεγονότα θα επιμείνουν και θα μπορούσαν να χρησιμοποιηθούν για την ανάλυση του παιχνιδιού ή για να εξασφαλιστεί η συνέπεια σε διαφορετικές καταστάσεις παιχνιδιών. Ωστόσο, το ίδιο το σκάκι δεν είναι εγγενώς "χειρίζεται" συσσωμάτωση συμβάντων με τον τρόπο που κάνουν τα πλαίσια λογισμικού. Αντ 'αυτού, παρέχει έναν τομέα όπου μπορεί να εφαρμοστεί συσσωμάτωση συμβάντων.

Συνέντευξη συμβάντων στο MVVMCROSS

Το MVVMCROSS χρησιμοποιεί ένα πρότυπο συσσωμάτωσης συμβάντων μέσω του plugin Messenger. Αυτό το plugin παρέχει έναν κεντρικό μηχανισμό για τα εξαρτήματα να επικοινωνούν μεταξύ τους χωρίς να είναι στενά συνδεδεμένοι. Επιτρέπει σε πολλούς εκδότες να στέλνουν μηνύματα (συμβάντα) σε πολλούς συνδρομητές μέσω ενός διαμεσολαβητή, ο οποίος είναι ο ίδιος ο αγγελιοφόρος.

Το MVVMCROSS Messenger υποστηρίζει χαρακτηριστικά όπως εκδόσεις, εγγραφή σε γεγονότα και διαχείριση συνδρομών. Χρησιμοποιεί αδύναμες αναφορές για να αποτρέψει τις διαρροές μνήμης, εξασφαλίζοντας ότι τα εξαρτήματα μπορούν να συλλεχθούν σκουπίδια ακόμη και αν έχουν εγγραφεί σε συμβάντα. Αυτή η προσέγγιση είναι ιδιαίτερα χρήσιμη στις αρχιτεκτονικές MVVM (Model-View-ViewModel), όπου τα μοντέλα προβολής πρέπει να επικοινωνούν μεταξύ τους χωρίς άμεσες αναφορές.

Βασικές πτυχές της συσσωμάτωσης των εκδηλώσεων του MVVMCROSS περιλαμβάνουν:

- Μέθοδοι δημοσίευσης: Τα στοιχεία μπορούν να δημοσιεύσουν συμβάντα χρησιμοποιώντας μεθόδους όπως το `publish '.
- Μέθοδοι συνδρομής: Τα συστατικά μπορούν να εγγραφούν σε συμβάντα χρησιμοποιώντας μεθόδους όπως `Subscribe`,` uscribeonMainThread` ή `subscribeonthreadpoolthread`.
- Διαχείριση συνδρομών: Ο Messenger παρέχει μεθόδους για να ελέγξετε εάν υπάρχουν συνδρομές για συγκεκριμένα συμβάντα ή ετικέτες, επιτρέποντας την καλύτερη διαχείριση του χειρισμού των συμβάντων.

σύγκριση

Ενώ το σκάκι μπορεί να διαμορφωθεί χρησιμοποιώντας αρχές συσσωμάτωσης συμβάντων παρόμοιες με εκείνες των συστημάτων λογισμικού, το MVVMCross παρέχει μια συγκεκριμένη εφαρμογή της συσσωμάτωσης συμβάντων που έχει σχεδιαστεί για αρχιτεκτονικές MVVM. Η κύρια διαφορά έγκειται στο πλαίσιο και τον σκοπό:

- Σκάκι: Η συσσωμάτωση των εκδηλώσεων αφορά περισσότερο την παρακολούθηση και τη διαχείριση των καταστάσεων παιχνιδιών μέσω συμβάντων τομέα, τα οποία αποτελούν εννοιολογική εφαρμογή των αρχών προμήθειας συμβάντων.
- MVVMCROSS: Η συσσώρευση συμβάντων είναι μια τεχνική εφαρμογή για τη διευκόλυνση της επικοινωνίας μεταξύ χαλαρά συζευγμένων εξαρτημάτων σε μια εφαρμογή, χρησιμοποιώντας ένα κεντρικό αγγελιοφόρο.

Συνοπτικά, το σκάκι δεν "χειρίζεται" τη συσσωμάτωση των εκδηλώσεων με τον ίδιο τρόπο που κάνει το MVVMCROSS. Αντ 'αυτού, το σκάκι παρέχει έναν τομέα όπου μπορούν να εφαρμοστούν έννοιες συσσωμάτωσης συμβάντων. Το MVVMCROSS, από την άλλη πλευρά, προσφέρει μια συγκεκριμένη εφαρμογή της συσσωμάτωσης εκδηλώσεων για την ανάπτυξη λογισμικού.

Αναφορές:
[1] https://ep2024.europython.eu/session/event-sourcing-from-theround-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/dd.eventsourcing.portsandadapters.typescript.nestjs.chess
[5] https://www.linkedin.com/advice/0/how-do-you-handle-multiple-event-ources
[6] https://securosis.com/blog/understanding-and-selecting-siem-lm-gregation-cremalization-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-logic-cube-bjects/aggregations-and-gregation-designs ?view=AsAllProducts-Allversions
[10] https://www.chess.com/forum/view/tournaments/why-delay-next-round-for-mathematical- irrrelevant-games
[11] https://blog.magnusmontin.net/2014/02/28/using-the-event-aggregator-pattern-to-communicate-between-view-models/