Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kokie yra silpnų nuorodų naudojimo MVVMCross įvykių prenumeratos pranašumai


Kokie yra silpnų nuorodų naudojimo MVVMCross įvykių prenumeratos pranašumai


Naudojant silpnas nuorodas „MVVMCross“ įvykių prenumeratos, siūlo keletą pranašumų, visų pirma sutelktą į atminties valdymą ir išvengiant atminties nutekėjimo. Čia yra pagrindiniai pranašumai:

1. Atminties nuotėkio prevencija **

Vienas iš pagrindinių silpnų nuorodų naudojimo pranašumų yra tas, kad jos padeda išvengti atminties nutekėjimo. Tradiciniuose renginių prenumeratos modeliuose, jei abonentas (pvz., Vaizdas) netinkamai atsisako įvykio (pvz., Peržiūros modelio) prenumeratos, jis gali likti atmintyje, net jei jo nebereikia. Taip yra todėl, kad įvykio šaltinis palaiko tvirtą nuorodą į abonentą, neleidžiant jam surinkti šiukšlių. Silpnos nuorodos išsprendžia šią problemą, leisdama šiukšlių rinkėjui susigrąžinti atmintį, jei abonentas nebebus nurodomas kitoje programos vietose [3] [6].

2. Supaprastinta prenumeratos valdymas **

Silpnos nuorodos supaprastina įvykių prenumeratų valdymą. Sudėtingose ​​programose, turinčiose daugybę įvykių šaltinių ir abonentų, rankiniu būdu stebėjimas ir atsisakymas nuo įvykių gali tapti sudėtinga. Silpnas įvykių modelis automatizuoja šį procesą pašalindamas abonentus, kai jų nebereikia, sumažinant prenumeratų valdymo sudėtingumą [3].

3. „ViewModels“ ir „Views“ atsiejimas **

MVVMCROSS, silpnos nuorodos padeda palaikyti švarią peržiūros modelių ir vaizdų atskyrimą. Užtikrindami, kad „View Models“ neturi tvirtų nuorodų į peržiūras, neleidžiate nuomonėms būti be reikalo išlaikyti gyvas. Šis atsiejimas yra labai svarbus palaikant tvirtą ir keičiamą architektūrą, nes tai leidžia vaizdams surinkti šiukšles, kai jie nebenaudojami [2] [4].

4. Renginių tvarkymo lankstumas **

Silpnos nuorodos suteikia lankstumo renginių tvarkymo scenarijuose. Jie leidžia naudoti pranešimų sistemas, tokias kaip „MVVMCross Messenger“ papildinys, kuris priklauso nuo silpnų nuorodų į įvykių prenumeratą. Šis lankstumas yra naudingas scenarijuose, kai įvykio šaltinio tapatumas nėra žinomas arba kai pirmenybė teikiama labiau į žinią orientuotą metodą [5].

Vis dėlto svarbu pažymėti, kad nors silpnos nuorodos suteikia šiuos pranašumus, jos taip pat pateikia tam tikrus sudėtingumą ir galimas problemas, tokias kaip „zombių“ problema, paminėta kai kuriose diskusijose. Tai įvyksta tada, kai abonentas dar nėra surinktas šiukšlėmis, tačiau vis tiek yra silpnai nurodytas, o tai gali sukelti netikėtą elgesį, jei jo renginių tvarkytojas bus naudojamas [1]. Nepaisant šių iššūkių, silpnos nuorodos išlieka vertinga priemonė, kaip efektyviai valdyti renginių prenumeratas MVVMCross programose.

Citatos:
[1] https://ladimolnar.com/2015/09/14/the-weak-event-pattern-is-dangerous/
[2] https://stackoverflow.com/questions/19378470/weak-referencing-in-mvvmcross-with-actiont
[3] https://mustafacanyucel.com/blog/blog-22.html
[4] https://greghackles.com/weak-subscription-gotcha-in-mvvmcross/
[5] https://www.mvvmcross.com/documentation/plugins/messenger
[6] https://learn.microsoft.com/en-us/dotnet/desktop/wpf/events/weak-event-patterns?view=netdesktop-9.0
[7] https://stackoverflow.com/questions/310685/weak-reference-benefits
[8] https://github.com/mvvmcross/mvvmcross/issues/1480