의존성 주입을 사용하기 위해 기존 시스템을 리팩토링했으며 그 작업이 순조롭게 진행되었습니다.
얼마 후 많은 사내 라이브러리가 내가 사용한 DI 프레임 워크에 의존한다는 것을 알았습니다. 결과적으로 전체 프로젝트는 이제이 타사 프레임 워크에 의존합니다.
나는 모든 의존성을 공유 라이브러리에 의존 시켜서 모든 의존성을 분리하는 데 아이러니를 보았습니다.
첫 번째 반응은 종속성 프레임 워크를 중심으로 래퍼 라이브러리를 만드는 것이 었습니다. 따라서 필요한 경우이 프레임 워크를 교체 할 수 있습니다. 관련된 작업을 추정 한 후 결과 API가 기존 프레임 워크와 유사하므로 교체가 더 어려워 짐을 깨달았습니다. 그래서 나는 그 생각을 버렸다.
내 관심사는 내가 사용하는 DI 프레임 워크가 더 이상 사용되지 않거나 교체해야한다는 것입니다.
DI로 작업 할 때 프로젝트와 DI 프레임 워크 간의 연결을 줄이는 개발 패턴이 있습니까?
DIFramework.Get<IService>()
는 실제로 의존성 주입이 아닙니다. Service Locator라는 관련 패턴입니다. 많은 사람들이 Service Locator를 프레임 워크에 연결하고 너무 쉽게 남용하기 때문에 (Singleton처럼) Service Locator를 싫어합니다. : 마틴 파울러는이 패턴에 대한 훌륭한 기사가 martinfowler.com/articles/injection.html