Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kokios yra bendros problemos keičiant numatytąjį IOC konteinerį MVVMCross


Kokios yra bendros problemos keičiant numatytąjį IOC konteinerį MVVMCross


Pakeitus numatytąjį IOC konteinerį „MVVMCross“, galite supažindinti su keliomis įprastomis problemomis, visų pirma dėl to, kaip „MVVMCross“ integruoja su savo įmontuotu IOC konteineriu. Štai keletas iššūkių, su kuriais galite susidurti:

1. Paslaugų registracija ir sinchronizavimas **

Viena pagrindinių problemų yra užtikrinti, kad visos būtinos paslaugos būtų įregistruotos ir kad „iserviceProvider“ išliks sinchronizuota su „iserviceCollection“. „MVVMCross“ ir toliau registruoja savo paslaugas po pirminės sąrankos, kuri gali sukelti nenuoseklumą, jei nebus tinkamai tvarkoma. Tam reikia atnaujinti teikėją kiekvienoje kolekcijos registracijoje, o tai gali paveikti našumą [1].

2. Trūksta mvvmcross paslaugos **

„Mvvmcross“ remiasi keliomis įmontuotomis paslaugomis, tokiomis kaip „IMVXLoggerProvider“, „IMVXSettings“ ir „IMVXStart“, be kita ko. Keičiant IOC konteinerį, šios paslaugos gali būti automatiškai užregistruotos, todėl atsiranda paleidimo gedimų. Turite rankiniu būdu užregistruoti šias paslaugas arba rasti būdą, kaip leisti MVVMCross tvarkyti jų registraciją jūsų pasirinktiniame konteineryje [1].

3. Gyvenimo laiko ir atgalinio ryšio problemos **

„MVVMCross“ naudoja atšaukimus, kai užregistruojamos paslaugos, kurias gali būti sudėtinga tvarkyti pasirinktiniame IOC adapteryje. Be to, norint valdyti gyvenimo trukmę (pvz., „Singleton“, „pereinamuosius“), gali reikėti pritaikyto įgyvendinimo, kad atitiktų MVVMCROSS lūkesčius [4].

4. Integracija su trečiųjų šalių bibliotekomis **

Naudojant kitokį IOC konteinerį, pavyzdžiui, .NET Core DI, galima lengviau integruoti su trečiųjų šalių bibliotekomis, kurios pateikia registracijos išplėtimo metodus (pvz., „IhttpClientFactory“, „Polly“, „Automapper“). Tačiau užtikrinti, kad šios bibliotekos būtų sklandžiai veikiančios naudojant MVVMCROSS pasirinktinę sąranką, gali būti sudėtinga [1].

5. Vykdymo aspektai **

Sukūrę naują „IserviceProvider“ egzempliorių, kiekvieną kartą, kai užregistruojamos paslaugos, gali kilti veiklos problemų. Taip yra todėl, kad „BuildServiceProvider ()“ yra vadinama pakartotinai, o tai gali būti brangu išteklių ir laiko atžvilgiu [1].

6. Tinkinimas ir viršijimas **

Norėdami išsamiai pakeisti numatytąjį IOC konteinerį, turite nepaisyti „createIocProvider“ metodo savo sąrankos klasėje. Tam reikia sukurti adapterį, kuris sujungtų jūsų pasirinktinį IOC įgyvendinimą, kad būtų „MVVMCross“ „imvxiocprovider“ sąsaja. Šis procesas gali būti sudėtingas ir reikalauja atidžiai tvarkyti specifinius MVVMCross reikalavimus [4].

7. Konkrečios platformos aspektai **

Dirbant su tokiomis platformomis kaip „Xamarin“, gali atsirasti papildomų svarstymų dėl specifinių šios aplinkos nustatymo ir inicijavimo procesų. Pavyzdžiui, užtikrinant, kad „Android“ specifinės paslaugos būtų tinkamai užregistruotos ir išspręstos [10].

Apibendrinant, pakeitimas numatytuoju IOC konteineriu MVVMCross apima paslaugų registracijos, sinchronizacijos, trūkstamų paslaugų, gyvenimo trukmės valdymo, integracijos su trečiųjų šalių bibliotekomis sprendimo, našumo optimizavimo ir platformos specifinių svarstymų sprendimą. Kiekvienai iš šių sričių reikalingas kruopštus tvarkymas, kad būtų užtikrintas sklandus perėjimas ir tinkamas programos funkcionalumas.

Citatos:
[1] https://stackoverflow.com/questions/64478974/replace-mefault-ioc-container-in-mvvmcross
[2] https://yanxiaodi.gitbook.io/xamarin-mvvmcross-handbook/using-mvvmcross-to-create-your-first-xamarin-app/creating-the-core-project/adding-an-applass
[3] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[4] https://www.mvvmcross.com/documentation/advanced/customizing-using-app ir-setup
[5] https://learn.microsoft.com/en-us/archive/msdn-magazine/2013/february/mvvm-ioc-containers-and-mvvm
[6] https://docs.spring.io/spring-framework/docs/4.3.9.release/spring-framework-reference/html/beans.html
[7] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[8] https://www.mvvmcross.com/documentation/tutorials/TIPCalc/the-core-project
[9] https://www.mvvmcross.com/documentation/fundamentals/inversion-of-control-ioc
[10] https://stackoverflow.com/questions/53752857/xamarin-android-pecific-ioc-in-mvvmcross-constructor-issue/53761392