Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon MVVMCross'a kıyasla satranç olay birikmesini nasıl ele alıyor?


MVVMCross'a kıyasla satranç olay birikmesini nasıl ele alıyor?


Satrançın olay toplamasını nasıl ele alabileceğini karşılaştırırken, MVVMCross'un bunu nasıl ele aldığı ile karşılaştırılırken, her iki senaryoda da olay toplama bağlamını ve amacını dikkate almamız gerekir.

satrançta olay toplama

Satranç bağlamında, olay toplama, bir oyun sırasında meydana gelen hareketlerin veya olayların sırasını yönetmeye ve işlenmeye atıfta bulunabilir. Bu, her hareketi izlemeyi, yakalamayı, kontrol etmeyi veya checkmate'i içerebilir. Etki alanına dayalı bir tasarım (DDD) yaklaşımında, satranç hareketleri, diğer olay kaynaklı sistemlerde nasıl ele alındıklarına benzer şekilde etki alanı olayları olarak modellenebilir. Her etkinlik, hareketli veya yakalanan bir parça gibi oyunda belirli bir eylem veya durum değişikliğini temsil eder. Bu olaylar bir dergide veya günlükte saklanacak ve oyunun mevcut durumunun bu olayların tekrarlanmasıyla yeniden yapılandırılmasına izin verecektir.

Örneğin, bir satranç oyunu "Pimal -Emoteed", "PiecesCapted" veya "CheckMateOccurred" gibi etkinlikleri kullanabilir. Bu olaylar devam edecek ve oyunu analiz etmek veya farklı oyun durumlarında tutarlılığı sağlamak için kullanılabilir. Bununla birlikte, satranç kendisi, yazılım çerçevelerinin yaptığı gibi olay toplamasını doğası gereği "ele almaz"; Bunun yerine, olay toplamasının uygulanabileceği bir alan sağlar.

MVVMCross'ta Olay Toplama

MVVMCross, messenger eklentisi aracılığıyla bir olay toplama deseni kullanır. Bu eklenti, bileşenlerin sıkı bir şekilde bağlanmadan birbirleriyle iletişim kurması için merkezi bir mekanizma sağlar. Birden fazla yayıncının, habercinin kendisi olan bir arabulucu aracılığıyla birden fazla aboneye mesaj (etkinlik) göndermesine izin verir.

MVVMCross Messenger, yayınlama etkinlikleri, etkinliklere abone olma ve abonelikleri yönetme gibi özellikleri destekler. Bellek sızıntılarını önlemek için zayıf referanslar kullanır, bu da bileşenlerin olaylara abone olsalar bile çöp toplanmasını sağlar. Bu yaklaşım özellikle View modellerinin doğrudan referanslar olmadan birbirleriyle iletişim kurması gereken MVVM (Model-View-ViewModel) mimarilerinde yararlıdır.

MVVMCross'un olay toplamasının temel yönleri şunları içerir:

- Yayınlama Yöntemleri: Bileşenler, "yayın" gibi yöntemleri kullanarak etkinlikleri yayınlayabilir.
- Abonelik Yöntemleri: Bileşenler, `` abone '', `` aboneonMainThread 'veya `` aboneonThreadPoolthread' gibi yöntemleri kullanarak olaylara abone olabilir.
- Abonelik Yönetimi: Messenger, belirli olaylar veya etiketler için abonelik olup olmadığını kontrol etmek ve olay işlemenin daha iyi yönetilmesini sağlayan yöntemler sağlar.

Karşılaştırmak

Satranç, yazılım sistemlerindakilere benzer olay toplama prensipleri kullanılarak modellenebilirken, MVVMCross, MVVM mimarileri için tasarlanmış olay toplama uygulamasını sunar. Temel fark bağlamda ve amaçta yatmaktadır:

- Satranç: Etkinlik toplama, olay kaynağı ilkelerinin kavramsal bir uygulaması olan Domain etkinlikleri aracılığıyla oyun durumlarını izlemek ve yönetmekle ilgilidir.
- MVVMCross: Olay Toplama, merkezi bir haberci kullanarak bir uygulamadaki gevşek birleştirilmiş bileşenler arasındaki iletişimi kolaylaştırmak için teknik bir uygulamadır.

Özetle, satranç MVVMcross'un yaptığı gibi olay toplama "işlenmez"; Bunun yerine, satranç, olay toplama kavramlarının uygulanabileceği bir alan sağlar. MVVMCross ise, yazılım geliştirme için etkinlik toplama somut bir uygulamasını sunar.

Alıntılar:
[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-ouo-handle-multiple-event-sources
[6] https://securosis.com/blog/understansting-and-secting-siem-lm-agregation-normaalization-and-enrichmen/
[7] https://www.youtube.com/watch?v=mfsrsqza1uq
[8] https://prismlibrary.github.io/docs/event-aggreator.html
[9] https://learn.microsoft.com/en-us/analysis-services/multidimensional-models-olap-logical-cube-orgjects/aggregations-and--gregation-ingns?view=asallpructs-allersersions
[10] https://www.chess.com/forum/view/tournents/why-delay-nextround-for-fathematical-irelevant-games
[11] https://blog.magnusmontin.net/2014/02/28/using-the-the-event-aggreator-ptersn-to-communate-beticatween-view-models/