약간은 formal한 글을 포스팅하고 싶었지만, 차분히 앉아 이런 저런 형식을 갖춰가며 한편의 논문 쓰듯 글을 올린다는 것이 점점 불가능해짐을 느낀다. 블로그의 어원이 의미하듯 그냥 로그 남기듯 그때 그때 쓰고 싶을 글을 끄적임이 더 어울리는 것인지도 모른다.
미팅을 준비하다가 지루하여 잠시 twitter에 올라온 글들을 보다 Channel9의 트윗 중 MEF에 관한 글을 보고나니, 한번쯤은 정리하고자 했지만 큰맘 먹고 다가서야할 것 같은 느낌에 미루던 것인지라 그냥 편한 마음으로 들어보았다.
MEF가 무엇인지 알고 싶지만 많은 시간을 투자할 수 없는 분이라면 20여분 짜리 영문이지만, 아주 천천히 또박 또박 강의하는 아래 동영상을 추천한다.
http://channel9.msdn.com/shows/10-4/10-4-Episode-26-Creating-Extensible-Applications-with-the-Managed-Extensibility-Framework/
소개와 더불어 MEF를 통해 어떻게 코드가 만들어지는지를 보고싶은 분이라면 아래 Codeplex의 짤막한 글들을 참고하면 좋을 듯 하다.
http://mef.codeplex.com/wikipage?title=Guide&referringTitle=Home
영어라면 질색인 분이라면 Visual Studio 2010 공식 팀 블로그에 엄준일씨가 올린 글을 보면 좋을 듯 하다.
http://vsts2010.net/category/.NET%20Framework%204.0/Managed%20Extensibility%20Framework
MEF가 처리하고 싶은 세상의 문제는 애플리케이션을 개발함에 있어서 수많은 모듈로 인한 복잡성을 관리하고, 개발에 필요한 모듈을 찾아 적절한 시점에 생성하는 수고를 개발자가 아닌 MEF가 처리할 수 있게 해주는 것이 아닐까한다.
마이크로소프트가 Unity라는 DI 컨테이너를 내놓기 이전부터 닷넷 오픈 소스 개발자 생태계내에서는 이미 dependency를 줄여주어 유지보수를 용이하게 하는 많은 프레임웍이 생겨나 번성해왔다. 대표적인 것으로는 StructureMap, Windsor, Spring.net, NInject, Autofac 등.. 이런 즈음에 마이크로소프트가 닷넷 프레임웍 4.0에 기본으로 포함될 DI 컨테이러라고 할 수 있는 MEF 라이브러리를 내놓고 있는 것이다. 어찌 보면 개발자 입장에서 또 하나의 선택의 가짓수가 늘어났다고 할 수 있지만, 시장의 반응은 어떨지...
1. 시장에서 오픈 소스 프레임웍인 NHibernate, iBatis.NET이 세를 불리고 있을 즈음 LINQ, Entity Framework 등을 마이크로소프트가 내놓았을 때, 그다지 인정을 받지 못하다가 조만간 정식 출시될 새 버전의 Entity Framework에 대해서는 개발자 사이에 기대가 점차 높아지는 것을 느낄 수가 있었는데...
2. 아울러 시장에서 StructureMap, Windsor를 거쳐, Spring.net이 DI 컨테이너로 급부상하던 즈음에 마이크로소프트가 ObjectBuilder에 Wrapper 씌여 Unity를 내놓았다. 버전이 올라갈수록, Enterprise Library를 선호하는 사람일 수록 점차 Unity에 빠져드는데.... 한술 더떠 아예 닷넷 프레임웍에 기본 탑재되는 DI 기능의 라이브러리를 출시한다는데...
얼마전 모회사의 아키텍트가 했던 섬뜩했던 말이 떠오른다.
"마이크로소프트가 이것 저것 다 내놓는데, 굳이 시장에 있는 오픈 소스 프레임웍들이 필요할까요 ?"
아직까지 공고하지 못해 개발자 생태계인지라 마이크로소프트라는 일개(?) 회사에 의해 휘둘리는 것이 아닌지... 그렇지 않으리라 기대해본다.


