[DI] 의존성과 계층화
모든 소프트웨어는 의존성(dependency) 를 가지고 있다. 1. 같은 기반코드를 이용하는 코드에 대한 First-Party 의존성. 2. 외부 어셈블리에 대한 Third-Party 의존성. 3. 닷넷 프레임워크에 대한 보편적인 의존성 일 수 있으며, 웬만한 프로젝트라면 이 세가지 의존성을 모두 찾아볼수 있다. 의존성은 호출자 코드로부터 기능을 추상화 한다. 모든 의존성에 대한 관리만큼은 정확히 해야 한다. 의존성 체인을 제대로 관리하지 못하면, 개발자들은 존재할 필요가 없는 의존성 때문에 불필요한 어셈블리 참조로 복잡하게 꼬인 코드를 관리해야 한다. 계층화 (Layering)는 가장 일반적인 아키텍처 패턴 중 하나이다. 의존성의 정의 의존성( Dependency )은 별개의 두 엔티티(entity)..