Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon MVVMCross olay aboneliklerinde zayıf referansları kullanmanın avantajları nelerdir?


MVVMCross olay aboneliklerinde zayıf referansları kullanmanın avantajları nelerdir?


MVVMCross olay aboneliklerinde zayıf referanslar kullanmak, öncelikle bellek yönetimi etrafında merkezlenmiş ve bellek sızıntılarından kaçınmak için çeşitli avantajlar sunar. İşte temel faydalar:

1. Bellek sızıntılarının önlenmesi **

Zayıf referansları kullanmanın temel avantajlarından biri, bellek sızıntılarını önlemeye yardımcı olmalarıdır. Geleneksel olay aboneliği modellerinde, bir abone (örneğin, bir görünüm) bir olaydan (örneğin, bir görünüm modelinde) doğru bir şekilde iptal edilmezse, artık ihtiyaç duyulmadıktan sonra bile bellekte kalabilir. Bunun nedeni, olay kaynağının aboneye güçlü bir referansını sürdürmesi ve çöp toplanmasını engellemesidir. Zayıf referanslar, abone artık uygulamanın başka bir yerinde referans verilmiyorsa, çöp toplayıcının belleği geri almasına izin vererek bu sorunu çözer [3] [6].

2. Basitleştirilmiş Abonelik Yönetimi **

Zayıf referanslar olay aboneliklerinin yönetimini basitleştirir. Birçok olay kaynağı ve abonesi ile karmaşık uygulamalarda, olaylardan manuel olarak izleme ve abone olma hantal olabilir. Zayıf olay modeli, aboneleri artık ihtiyaç duyulmadıklarında kaldırarak bu süreci otomatikleştirerek abonelikleri yönetmenin karmaşıklığını azaltır [3].

3. ViewModels ve Görünümlerin Ayrıştırılması **

MVVMCross'ta, zayıf referanslar kullanmak, görünüm modelleri ve görünümler arasında temiz bir ayrımın korunmasına yardımcı olur. Görünüm modellerinin görüşlere güçlü referanslara sahip olmamasını sağlayarak, görüşlerin gereksiz yere canlı kalmasını önlersiniz. Bu ayrışma, sağlam ve ölçeklenebilir bir mimariyi korumak için çok önemlidir, çünkü artık kullanımda olmadıklarında görünümlerin çöp toplanmasına izin verir [2] [4].

4. Olay İşleminde Esneklik **

Zayıf referanslar olay işleme senaryolarında esneklik sağlar. Etkinlik aboneliği için zayıf referanslara dayanan MVVMCross Messenger eklentisi gibi mesajlaşma sistemlerinin kullanılmasına izin verirler. Bu esneklik, olay kaynağının kimliğinin bilinmediği veya daha fazla mesaj odaklı bir yaklaşımın tercih edildiği senaryolarda faydalıdır [5].

Bununla birlikte, zayıf referanslar bu avantajları sunsa da, bazı tartışmalarda belirtilen "zombi" problemi gibi bazı karmaşıklıklar ve potansiyel sorunlar sunduklarını belirtmek önemlidir. Bu, bir abone henüz çöp toplanmadığında, ancak yine de zayıf bir şekilde atıfta bulunulduğunda, olay işleyicisi çağrılırsa potansiyel olarak beklenmedik davranışlara yol açtığında ortaya çıkar [1]. Bu zorluklara rağmen, zayıf referanslar MVVMCross uygulamalarında etkin bir şekilde olay aboneliklerini yönetmede değerli bir araç olmaya devam etmektedir.

Alıntılar:
[1] https://ladimolnar.com/2015/09/14/the-weak-event-patern-is-dangerous/
[2] https://stackoverflow.com/questions/19378470/weak-refering-in-mvmcross-with-actical
[3] https://mustafacanyucel.com/blog/blog-22.html
[4] https://gregshackles.com/weak-bscription-gotcha-in-mvvmcross/
[5] https://www.mvvmcross.com/documentation/plugins/messenger
[6] https://learn.microsoft.com/en-us/dotnet/desktop/wpf/events/weak-event-pterings?view=netdesktop-9.0
[7] https://stackoverflow.com/questions/310685/weak-referenfits
[8] https://github.com/mvvmcross/mvvmcross/issues/1480