플러그인 구조라 함은 결국 기능을 동적으로 적재하고 해제함으로써, 소프트웨어의 기능 확장성을 확보하겠다는 뜻이다. 닷넷에선 어셈블리 단위의 동적 적재는 허용하지만, 동적 해제는 지원하지 않는다. 이 문제는 응용프로그램 도메인을 통해 해결해야 하는데, 실제로 해보면 골치아픈 일이 많다. 응용프로그램 도메인(AppDomain)을 이용해 플러그인 구조를 만드는 예제가 웹에 널려 있지만, 실제로 아무런 문제 없이 동적 해제와 동적 적재를 반복할 수 있는 제대로 된 예제는 거의 없다고 보면 된다. 다시 말해, 대부분의 개발자들이 응용프로그램 도메인을 제대로 소화하지 못 했다는 뜻이다. 심지어 MSDN 사이트에 올라온 기사조차 틀린 내용을 전달한다.
만약 플러그인 기능을 개발하고 싶다면 다음 문서를 꼭 읽어보라고 권하겠다. 드물게 올바른 내용을 소개하는 문서들인데, 특히 첫 번째 글인 Plug-in Manager를 주의 깊게 읽어야 한다.
-
Plug-in Manager
응용프로그램 도메인을 비교적 상세하게 다루고, 실제로 파일 시스템에 어떤 변화가 생겼을 때 플러그인을 자동으로 해제했다 다시 적재하는 예제를 보여준다. 가장 도움을 많이 준 문서이다.
-
How to increase application scalability using Plugins
인터페이스가 아닌 애트리뷰트를 사용해 플러그인을 개발하는 방법을 다룬다. 응용프로그램 도메인에 대해선 거의 언급이 없고, 애트리뷰트를 사용하는 부분도 Attributes in C#보다 못하므로 이런 사례를 제시했다는 점에 의의를 둬야 한다.
-
Attributes in C#
인터페이스가 아닌 애트리뷰트(특성)를 이용해 플러그인을 개발하고자 할 때 유용하다. 애트리뷰트 프로그래밍을 쉽게, 그리고 한눈에 알아보게끔 글을 잘 썼다.