Používání dětských kontejnerů v MVVMCross nabízí několik výhod, zejména při řízení závislostí v komplexních aplikacích. Zde jsou některé z klíčových výhod:
Flexibilita při správě závislosti
Kontejnery pro děti vám umožňují zaregistrovat instance nebo typy pro konkrétní účel, aniž by to ovlivnilo kontejner na celé aplikaci. To znamená, že můžete mít různé implementace služeb nebo rozhraní pro různé části vaší aplikace, což je zvláště užitečné ve scénářích, kde musíte izolovat závislosti pro konkrétní funkci nebo relaci [1] [4].
Izolace závislostí
Používáním dětských kontejnerů můžete izolovat závislosti, které mají omezený život nebo jsou specifické pro určitý kontext. To pomáhá při udržování čisté a organizované struktury závislosti, což usnadňuje správu a ladění aplikace [1] [4].
Dědičnost závislostí
Každý dětský kontejner zdědí všechny závislosti registrované na jeho nadřazeném kontejneru. Tím je zajištěno, že nemusíte duplikovat registrace pro běžné služby v různých částech vaší aplikace. Místo toho se můžete zaměřit na registraci pouze specifických závislostí potřebných pro rozsah kontejneru dítěte [1] [4].
Hluboké hnízdění
MVVMCross vám umožňuje vytvářet tolik a hluboce vnořených dětských kontejnerů podle potřeby. Tato flexibilita je prospěšná ve složitých aplikacích, kde různé moduly nebo funkce vyžadují svou vlastní sadu závislostí, aniž by zasahovaly do závislostí hlavní aplikace [1] [4].
Zjednodušené testování
Používání dětských kontejnerů může také zjednodušit testování tím, že vám umožní snadno se zesměšňovat nebo nahradit závislosti pro konkrétní testovací scénáře. Tato izolace pomáhá při psaní testů více zaměřených jednotek bez ovlivnění celkové struktury závislosti na aplikaci [5].
Vylepšená modularita
Kontejnery pro děti podporují modularitu tím, že vám umožňují řídit závislosti při jemnější granularitě. Tato modularita je zásadní ve vývoji napříč platformami, kde různé platformy mohou vyžadovat různé implementace služeb nebo rozhraní [5] [7].
Celkově dětské kontejnery v MVVMCrossu poskytují výkonný nástroj pro řízení závislostí ve složitých aplikacích, zvyšování flexibility, modularity a udržovatelnosti.
Citace:[1] https://www.mvvmcross.com/documentation/fundamentals/inversion-of-control-ioc
[2] https://canbilgin.wordpress.com/2017/02/26/develosing-universalcross-platform-apps-with-mvvm-vii/
[3] https://www.palmmedia.de/blog/2011/8/30/ioc-container-Benchmark-Performance-Comparison
[4] https://www.mvvmcross.com/mvvmcross-6.0.0-release/
[5] https://dev.to/christian1006/creating-cross-platform-xamarin-Applications-using-the-mvvmcross-framework-2920
[6] https://github.com/aalice072/mvvmcross/blob/master/changelog.md
[7] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview
[8] https://livebook.manning.com/book/xamarin-in-action/chapter-4/
[9] https://stackoverflow.com/questions/16514691/child-containers-in-mvvmcross-ioc