https://www.reactiveui.net/docs/handbook/dependency-inversion/#why-splat
“나는 일반적으로 IoC/DI에 대한 많은 조언이 ‘크로스 플랫폼 모바일 애플리케이션’ 영역에서 꽤 나쁘다고 생각합니다. 많은 아이디어가 모바일 또는 데스크톱 앱이 아닌 웹 앱용으로 작성되었다는 점을 기억해야 하기 때문입니다…
예를 들어, 대중적인 IoC 컨테이너의 대다수는 기본적으로 메모리 사용량이나 시작 시간을 완전히 무시하면서 웜 캐시의 해결 속도에만 관심을 갖습니다. 이것은 중요하지 않기 때문에 서버 애플리케이션에 100% 문제가 없습니다. 하지만 모바일 앱의 경우? 시작 시간이 엄청납니다.
Splat의 서비스 위치는 RxUI에 대한 여러 문제를 해결합니다.
서비스 위치는 빠르며 설정에 대한 오버헤드가 거의 없습니다. Func를 다르게 작성하는 것만으로 여러 가지 일반적인 객체 수명 모델(즉, ‘매번 새로 생성’, ‘싱글톤’, ‘게으른’)을 캡슐화합니다. 코드이지만 PCL 코드에서 사용하십시오.”
아나이스 베츠 @ Stackoverflow
기계 번역이라 내용이 조금 이상하긴 하지만, IoC 컨테이너를 사용하면서 한번도 생각해보지 않았던 부분인데요.
정말 서버 프로그래밍이나 콘솔앱 같은 네이티브앱의 특성을 타지 않는 프로세스에서만 IoC컨테이너가 적합하고, 네이티브 특성을 타는 어플리케이션에서는 IoC 컨테이너가 좋지 못한 것일까요?
물론 네이티브 언어로 작성된 곳에서의 네이티브 IoC 컨테이너라면 해당 플랫폼의 것을 사용할테니 괜찮겠지만, 자마린이나 MAUI에서의 Generic Host 사용을 한다거나, 아니면 다른 크로스 플랫폼 플랫폼에서도 좋지 않을지 궁금하네요.