DI (Dependency Injection)는 IoC (Inversion of Control), Hollywodd Principle과 거의 동의어로 사용되기도 하지만, 엄밀히 말하면 IoC 기능 가운데 Dependency를 해소시켜주는 기법을 일컫는 패턴이다. 닷넷에서 ASP.NET MVC 프레임웍을 올 상반기 중에 정식 출시할 예정인데, 이로써 기존 ASP.NET Page 방식이나 이를 기반으로한 Web Client Software Factory (WCSF) 이외에, 개발자가 사용할 수 있는 또 다른 개발 방식을 제공하게 된다. DI 컨테이너라고 칭해지는 것들은 이와 같은 프리젠테이션 구현 기법과 연동하여 비지니스 로직을 구현하는 과정에서 생성되는 객체들의 라이프사이클을 관리해주고 이들 사이의 Dependency를 IoC 방식으로 해결해주는 프레임웍을 의미한다. 이러한 DI 컨테이너들은 프리젠테이션 티어의 구현 방식과 상관없이 선택적으로 적용할 수 있으며 반드시 비지니스 티어에서만 사용되는 것이 아니고 애플리케이션의 전 티어에서 필요시 객체 라이프 사이클 관리를 맡길 수 있다.
DI 컨테이너로는 이전 포스트에서 밝혔듯이, Windsor Container, StructureMap, Spring.NET, Object Builder가 있으며 오늘 소개할 Unity Container가 있다. Object Builder는 마이크로소프트의 P&P (Patterns & Practices) 팀에서 만든 것으로 현재 Enterprise Library, CAB (Composite Application Block), WCSF 등 마이크로소프트의 각종 Application Block 에 쓰이고 있다. 하지만, 애초 일반 개발자를 위해 만든 것이 아니고 이처럼 각종 Application Block 내부에서 사용하기 위해 만든 것이기 때문에 개발자를 위한 API가 정리되지 않았고 이를 이용하기 위해서는 너무 많은 클래스들을 알아야 하는 어려움이 있었다. 하여 P&P 팀에서는 Enterprise Library v4 개발 계획을 발표하면서 Object Builder 후속으로 새로운 DI Container를 제공하겠다고 밝힌 바 있으며, 이것에 대한 약속으로 약 열흘 전에 Unity Application Block 2월 CTP를 공개하였다. Unity에 대한 자세한 정보는 CodePlex (http://codeplex.com/unity) 에서 찾을 수 있다.
Unity는 기본적으로 Object Builder를 기반으로 작성된 Lightweight한 DI 컨테이너로써, 사용 편의성 증대를 위해 DI 기능을 쉽게 익힐 수 있는 Attribute 기반으로 제공하고 있다. Injection 기법으로는 일반적으로 사용되는 Contructor Injection, Property Injection, Method call Injection을 모두 제공한다. 또한 복잡한 계층 구조로 된 객체들의 생성도 아주 간편하게 처리할 수 있고, dependency를 런타임시에 제공할 수도 있고 XML 파일을 통해 제공할 수 도 있다. 아울러 Unity 컨테이너 자체를 필요에 따라서는 클라이언트 모듈이 ASP.NET의 Session이나 Application 에 저장하여 재사용할 수도 있다. 자세한 설명이나 샘플 등은 CodePlex를 참고하기 바란다.
DI 컨테이너로는 이전 포스트에서 밝혔듯이, Windsor Container, StructureMap, Spring.NET, Object Builder가 있으며 오늘 소개할 Unity Container가 있다. Object Builder는 마이크로소프트의 P&P (Patterns & Practices) 팀에서 만든 것으로 현재 Enterprise Library, CAB (Composite Application Block), WCSF 등 마이크로소프트의 각종 Application Block 에 쓰이고 있다. 하지만, 애초 일반 개발자를 위해 만든 것이 아니고 이처럼 각종 Application Block 내부에서 사용하기 위해 만든 것이기 때문에 개발자를 위한 API가 정리되지 않았고 이를 이용하기 위해서는 너무 많은 클래스들을 알아야 하는 어려움이 있었다. 하여 P&P 팀에서는 Enterprise Library v4 개발 계획을 발표하면서 Object Builder 후속으로 새로운 DI Container를 제공하겠다고 밝힌 바 있으며, 이것에 대한 약속으로 약 열흘 전에 Unity Application Block 2월 CTP를 공개하였다. Unity에 대한 자세한 정보는 CodePlex (http://codeplex.com/unity) 에서 찾을 수 있다.
Unity는 기본적으로 Object Builder를 기반으로 작성된 Lightweight한 DI 컨테이너로써, 사용 편의성 증대를 위해 DI 기능을 쉽게 익힐 수 있는 Attribute 기반으로 제공하고 있다. Injection 기법으로는 일반적으로 사용되는 Contructor Injection, Property Injection, Method call Injection을 모두 제공한다. 또한 복잡한 계층 구조로 된 객체들의 생성도 아주 간편하게 처리할 수 있고, dependency를 런타임시에 제공할 수도 있고 XML 파일을 통해 제공할 수 도 있다. 아울러 Unity 컨테이너 자체를 필요에 따라서는 클라이언트 모듈이 ASP.NET의 Session이나 Application 에 저장하여 재사용할 수도 있다. 자세한 설명이나 샘플 등은 CodePlex를 참고하기 바란다.
Patterns & Practices

