Managed Extensibility Framework CTP 공개

Krzysztof Cwalina  MEF CTP 1 Released (소식)

Managed Extensibility Framework – Home (메인페이지)

Managed Extensibility Framework - Release MEF CTP June 4, 2008 (다운로드)

MEF(Managed Extensibility Framework)은 .NET Framework에서 제공할 수 있는 좀 더 상위 레벨에서 사용될 프레임웍 구상을 구체화한 제품입니다.

.NET Framework은 사용자들이 기본적으로 사용할 수 있는 다양한 라이브러리(BCL, Base Class Libraries)를 제공하는 과정에서 여러가지 패턴들을 만들고 준 프레임웍을 제공하고 있습니다. 이는 .NET Framework을 사용하는 거의 대부분의 사용자들이 사용하게 되는 라이브러리이기 때문에, 이런 사용을 더 일반적이게 만들 수 있는 가이드라인이 있어야 하는 것은 당연할 것이고 이런 가정하에서 설계된 패턴들을 제공합니다. 이 패턴과 라이브러리들은 재사용되기 위해 설계되는 것 또한 당연한 사명이었겠구요.

.NET Framework의 사용은 시간이 지날수록 점차 BCL 윗 레벨의 재사용 프레임웍을 요구하게 되었습니다. Windows Forms의 컨테이너 모델, WPF의 Dependency 시스템, WF 내부의 DI Framework, Unity Framework 그리고 여타 다른 팀들의 비슷한 프레임웍들이 매번 새로운 기술이 나올때마다 또다시 만들어지고 같은 고민을 하게 되었다는 것이죠. 이런 프레임웍이 이미 만들어지고 필요에 따라 커스터마이즈될 수 있었다면, 많은 시간을 아끼고 그 다음 단계를 생각할 수 있었을 것입니다. 한마디로 이런 고민을 해결하고자 만들고 있는 것이 MEF입니다.

이는 이미 오랫동안 진행된 하나의 (예를 들어 컴포넌트 지향 프로그래밍의) 방향이기도 합니다. 어떤 런타임을 기본(base)으로 컴포넌트나 런타임 객체등의 단위로 만들어 설계하고 생각하는 것은 이 복잡한 프로그래밍 시대에서 스파게티 코드를 극복할 수 있는 훌륭한 대안일겁니다. 이 다음 단계로의 추상화(Abstraction) 또한 진행되고 있지만, 이 다음 단계를 견고히 하기 위해서는 지금 단계의 완착이 필요할 것이고, 여기서 MEF는 중요한 역할을 하고자 하고 있습니다.

그 예로, 이전 시대의 유명한 “Hello World” 예제는 정확하게 이야기하면, 지금 시대의 예제가 아닙니다. 정확하게 “Hello World”를 출력하기 위해서는 어디다 어떻게 출력을 해야하는가하는 복잡성이 존재합니다. DOS 시대였다면 그냥 80행짜리 텍스트 창에 ASCII 문자로 11개의 문자를 찍으면 되는 것이었습니다. 지금은 내가 “Hello World”라는 것을 찍을 수 있는 방법은 다양해졌습니다. 화면의 좌측 상단에, 혹은 따로 뜬 도스 창에, 혹은 디버깅 콘솔창에, 아니면 WPF 윈도우에, 혹은 Direct X 서피스에, 그리고 얼마나 큰 사이트로 어떤 폰트를 사용해서 어떻게 출력을 해야할런지…단순히 printf(“Hello World”)에는 그다지 큰 의미가 담겨져 있지 않습니다. 이런 것들을 어떻게 해결해가야할 것인가를 고민하는 방향이라고 할 수 있겠습니다.

물론 이를 마이크로소프트 내부에서만 사용하는 것이 아니라 사용자들의 피드백과 함께 설계하여 범용으로 만들기 위해서 CTP를 일찍 공개한 것입니다. 이미 위에 언급한것처럼 .NET Framework에서 돌아가는 다양한 프레임웍과 컨테이너들은 많이 존재합니다. Scott Hanselman이 잘 정리한 것처럼 다양한 DI(Dependency Injection) 컨테이너들이 있습니다. 프로그래머 DNA를 가진(혹은 갖고 싶은) 입장에서 아무쪼록 좋은 결과가 나오기를 고대/기대합니다.^^