WPF 애플리케이션과 Silverlight 애플리케이션에서 UI 개발은 상당히 중요한 부분이면서도 많은 루틴한 잡 (노가다?)이 발생하고, 때로는 고객의 요청에 의해 프로젝트 내내 수정이 이루어지는 것이기도 하다. 따라서 많은 개발자들이 개발 혹은 운영중의 이러한 고객의 요구에 따른 전체 UI 설계 차원의 수정을 줄이고, 변경을 최소화할 수 있으며, 고객의 기능 추가 요구에도 유연하게 대처할 수 있는 UI 프레임웍을 고민하고 있다. 현재 시장에는 Windows Forms 기반의 Composite Application 개발에 사용할 수 있는 프레임웍으로 마이크로소프트가 제공하는 Composite UI Application Block (CAB)과, CAB에 Visual Studio를 통한 툴지원 (GAT - Guidance Automation Toolkit), 아키텍처 가이드 문서, Reference Implementation, 적용된 패턴 설명서 등을 묶어 Smart Client Software Factory라는 이름으로 제공되는 수퍼 프레임웍(?)이 제공되어 사용되고 있다. (사실 국내에서는 Software Factory 4종 세트가 많이 사용되고 있지는 않다...)
이처럼 시장에서 검증된 CAB을 WPF에 사용하고 싶은 많은 개발자들의 요구에 부응하여 WPF판 CAB인 CompositeWPF (이전 Prism 1.0) 가 제공되고 있다. CompositeWPF에 대한 소개는 이전 포스트를 참조하면 좋을 듯 하다. CAB과 CompositeWPF는 기본 구조가 동일하며 모듈화를 통한 유연성을 제공하고, 필요 모듈의 동적 로딩, 공통 모듈의 서비스화 등을 제공하고 있다.
Silverlight 2 가 닷넷 기반으로 변모를 하면서 자연스럽게 CompositeWPF와 같은 구조화된 UI 프레임웍을 요구하게 되었고 이에 대한 응답으로 Prism 2.0 프로젝트가 시작되었다. Prism 2.0은 WPF와 Silverlight 애플리케이션 구축에 공통적으로 사용할 수 있는 UI 프레임웍으로 내년 1월 정식 출시를 목표로 현재 개발 중이다.
기능면에서나 라이브러리면에서나 Silverlight가 WPF의 부분집합이긴 하지만, Silverlight와 WPF는 라이브러리를 공유하지 못한다. 하여 Prisme 2.0 설계에서도 이러한 부분을 고려하여 GAT (Guidance Automation Toolkit)의 도움을 받아 위저드 형식으로 필요한 라이브러리를 링크하는 방식을 도입할 것으로 보인다. 설계 차원에서 공유할 것은 공유하여 'core'를 구성하고, Silverlight/WPF 별로 확장할 수 있는 기능을 제공하는 방식으로 제공될 예정이다. 구현면에서 향후 Silverlight와 WPF가 같은 코드 베이스를 공유하는 방식으로 바뀌면 영향을 받을 것으로 보인다.
Prism 2.0에 대한 개괄적인 설명은 아래 링크에서... (야 시작이다...가 전부임)
http://blogs.msdn.com/dphill/archive/2008/08/31/hello-prism-2-0.aspx
Prism 2.0에 대한 코드는 Codeplex의 CompositeWPF 싸이트에 올라갈 예정이다. (아직 안 올라왔음)
http://codeplex.com/CompositeWPF

