2008. 12. 18. 16:59

WPF, Silverlight 에 대해서...

WPF 를 간단히 말하자면, 기존의 Windows Forms  을 넘어선 차세대 윈도우 개발 플랫폼을 지향하는 프레임워크로서, 사운드, 동영상, 애니메이션, 그래픽, 2-D, 3-D, 데이터 출력 등등 를 모두 통합한 가히 혁명적인 사용자 인터페이스를 만들 수 있다. 

기술적으로 말하자면...
WPF 에 와서는 기반 되는 기술이 변했다는 거다. 
기존의 WinForms 응용프로그램은 GDI/GDI++ 라는 그래픽 기술을 이용했서 느리다. 하드웨어 가속 기능을 사용할 수 없기 때문에.실제 그래픽 카드와는 별도로 추상화 된 개념이므로 한계가 있었다.
하지만,  WPF는 DirectX 를 기반 기술로 사용한다. 그러므로, 하드웨어 가속 기능을 이용할 수 있다. 앞으로 소프트웨어는, 사용자들에게 멋진 경험(UX)을 제공하려는 추세이므로 마이크로소프트도 이에 뒤질새라 멋진 프레임워크를 만든다.
 
WinForms 으로 응용프로그램을  개발할 때는 동영상 기능을 구현하려면, DirectShow 같은 기술을 이용해야 하며, 사운드 기능을 구현하려면, 이에 대한 별도의 라이브러리를 사용해야 하며, 등등의 통합되지 않은 프레임워크 였다. 각 기능 별로 따로따로 기능을 얻어써야 한다. 
이에 비해, WPF는 모든 것이 프레임워크 자체에서 제공한다는 말이다. 그리고, XAML 기술의 도입으로, 디자인과 코드의 완벽한 분리를 제공한다는 점이 특징이다. 물론, 윈폼에서도 디자인과 코드를 나름 분리하려고 시도는 했으나 완벽한 분리는 아니다. 원폼에서 디자인 뷰에서 컨트롤 집어넣고 하는 등의 작업을 쉽게 할 수는 있다. 그러면, 이에 대한 코드는 숨겨진다. 하지만, 이게 문제다. 모든 디자인 관련 내용은 윈폼에서 c# 코드로 작성된다는 거다. 따라서, 디자이너들과의 협업이 상당히 제한적일 수 밖에 없다. 디자이너들도 c# 코드를 조금은 알고 있어야 하니깐. 
반면에, WPF = XAML + C# 이라고 보면 되는데 XAML 을 사용자 인터페이스 외형을 정의하는 마크업이라고 보면 된다. XAML 은 XML 과 유사한 문법을 갖고 있으므로, 널리 통용될 수 있다. Expression Blend 같은 프로그램을 보면, 결과물을 XAML 파일로 내보낸다. 즉, 디자이너는 Expression Blend 같은 프로그램을 사용해서, XAML 파일을 만들고, 프로그래머는 이 XAML 을 받아서, 코드를 작성해서 기능만 추가하면 된다. 이론상으로는... 하지만, 거의 디자인과 코드가 분리된다는 크나큰 장점은 새로운 협업의 세계 [[ 디자이너+프로그래머 ]] 를 열어준다. 그 외, 기술적으로 라우티트 이벤트, 의존 프로퍼티 등등의 새로운 개념도 도입되었다.


Silverlight 는 일종의 WPF 의 경량화된 버전이라고 보면 된다. 인터넷에서 RIA (Rich Internel Application) 을 목표로 구현된 프레임워크다. 특히, 기존의 웹을 점령한 어도비 사의 Flash 의 아성을 무너뜨리고자 나온 마이크로소프트의 무기라고 보면 된다. 이제 정식 2.0 버전이 나오는데.. 1.0 보다 좋은 점은 .NET 언어(C# 이나 VB.NET) 을 이용해서 실버라이트 응용프로그램을 개발할 수 있다는 거다. 아직 실버라이트로는 WPF의 3-D 같은 미디어 기능이 제한되어 있는데, 조만간 버전에서는 해결 되리라 본다.