MVVMCross에서 기본 IOC 컨테이너를 교체하면 주로 MVVMCross가 내장 IOC 컨테이너와 통합하는 방식으로 인해 몇 가지 일반적인 문제가 발생할 수 있습니다. 다음은 여러분이 직면 할 수있는 몇 가지 과제입니다.
1. 서비스 등록 및 동기화 **
주요 문제 중 하나는 필요한 모든 서비스가 등록되고 'iserviceprovider'가 'iservicececollection'과 동기화되도록하는 것입니다. MVVMCross는 초기 설정 후 자체 서비스를 계속 등록하여 제대로 처리하지 않으면 불일치로 이어질 수 있습니다. 이를 위해서는 각 컬렉션 등록에서 제공자를 업데이트해야하며, 이는 성능에 영향을 줄 수 있습니다 [1].2. mvvmcross 서비스 누락 **
MVVMCross는`imvxLoggerProvider`,`IMVXSettings` 및`IMVXSTART`와 같은 여러 내장 서비스에 의존합니다. IOC 컨테이너를 교체 할 때 이러한 서비스가 자동으로 등록되지 않아 시작 실패로 이어질 수 있습니다. 이 서비스를 수동으로 등록하거나 MVVMCross가 사용자 정의 컨테이너 내에서 등록을 처리 할 수있는 방법을 찾아야합니다 [1].3. 평생 및 콜백 문제 **
MVVMCross는 서비스가 등록 될 때 콜백을 사용하므로 사용자 정의 IOC 어댑터에서 처리하기가 까다로울 수 있습니다. 또한 수명 (예 : 싱글 톤, 과도)을 관리하려면 MVVMCross의 기대에 맞게 맞춤 구현이 필요할 수 있습니다 [4].4. 타사 라이브러리와의 통합 **
.NET Core 's DI와 같은 다른 IOC 컨테이너를 사용하면 등록을위한 확장 방법을 제공하는 타사 라이브러리와 쉽게 통합 할 수 있습니다 (예 :`ihttpclientFactory`,`Polly`,`Automapper`). 그러나 이러한 라이브러리가 MVMCross의 사용자 정의 설정으로 원활하게 작동하도록하는 것은 어려울 수 있습니다 [1].5. 성능 고려 사항 **
서비스가 등록 될 때마다 새로운`iserviceProvider '인스턴스를 구축하면 성능 문제가 발생할 수 있습니다. 이는`buildserviceprovider ()`가 반복적으로 불리우며, 이는 자원과 시간 측면에서 비용이 많이들 수 있기 때문입니다 [1].6. 커스터마이징 및 우선 **
기본 IOC 컨테이너를 완전히 교체하려면 설정 클래스에서 'CreateioCProvider'메소드를 무시해야합니다. 이를 위해서는 사용자 정의 IOC 구현을 MVVMCross의`IMVXIOCProvider` 인터페이스에 매핑하는 어댑터를 작성해야합니다. 이 과정은 복잡 할 수 있으며 MVVMCross의 특정 요구 사항을 신중하게 처리해야합니다 [4].7. 플랫폼 별 고려 사항 **
Xamarin과 같은 플랫폼으로 작업 할 때는 이러한 환경의 특정 설정 및 초기화 프로세스로 인해 추가 고려 사항이 발생할 수 있습니다. 예를 들어, Android 특정 서비스가 올바르게 등록되고 해결되도록 보장합니다 [10].요약하면 MVVMCross에서 기본 IOC 컨테이너를 교체하려면 서비스 등록, 동기화, 누락 된 서비스, 평생 관리, 타사 라이브러리와의 통합, 성능 최적화 및 플랫폼 별 고려 사항을 해결해야합니다. 이러한 각 영역에는 애플리케이션의 원활한 전환과 적절한 기능을 보장하기 위해 신중한 처리가 필요합니다.
인용 :[1] https://stackoverflow.com/questions/64478974/replace-default-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-appclass
[3] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[4] https://www.mvvmcross.com/documentation/advanced/customizing-using-app-and-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/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-droid-specific-ioc-in-mvvmcross-constructor-issue/53761392