TOC

This article has been localized into Korean by the community.

WPF에 대해서:

WPF과 WinForms

이전 챕터에서 WPF가 무엇인지 그리고 WinForms에 대해 아주 약간 살펴보았습니다. 이 챕터에서는 WPF와 WinForms이 같은 기능을 함에도 많은 차이점이 있기 때문에 WPF와 WinForms을 비교해볼것입니다. 전에 WinForms을 써보지 않았다면, 즉 WPF가 당신의 첫번째 GUI 프레임워크라면, 당신은 이 챕터를 스킵하겠지만 차이점에 대해 흥미가 있으면 읽어보세요.

WinForms와 WPF의 한가지 가장 큰 차이점은 WinForms는 단순히 Standard Windows Control(e.g a TextBox)의 최상단 레이어인 반면에 WPF는 맨처음부터 거의 모든 경우에 Standard Windows Control에 의존하지 않도록 만들어졌다. 이것은 미묘한 차이점이라고 여겨질지 몰라도, 실제로는 그렇지 않기 때문에 Win32/WinAPI에 의존적인 프레임워크로 일 해본적이 있다면 당신은 명백히 차이점에 대해 알아차렸을 것이다.

한가지 훌륭한 WPF와 WinForms의 차이점에대한 예는 이미지와 텍스트가 있는 버튼이다. 이것은 Standard Windows Control이 아니다, 그래서 WinForms는 box 바깥에서 이미지와 텍스트가 있는 버튼 기능을 제공하지 않는다. 대신에 이미지가 있는 버튼 혹은 써드파티 컨트롤을 사용하려면 이미지를 스스로 그려야만 할 것이다. WPF를 사용하면, Content와의 경계와 다양한 States (e.g. untouched, hovered, pressed) 가 기본적으로 있기 때문에 버튼은 무엇이든 담을 수 있다. WPF 버튼은 대다수의 WPF 컨트롤 처럼 "look-less" 이다. "look-less"란 WPF Control이 그 안에 다양한 control들을 포함할 수 있음을 의미한다. 이미지와 텍스트가 포함된 버튼을 원하나요? button 안에 Image와 TextBlock Control을 넣으세요 그럼 끝입니다. Standard WinForms Controls에서는 이 같은 유연함을 가질수 없다. 이 같은점은 이미지가 포함된 버튼등의 control의 단순한 구현을 하기보다는 빅 마켓이 있는 이유이다.

이런 유연함에 대한 단점은 WinForms에서 쉽게 했던 거를 더욱 어렵게 할 수 도 있다는 점이다. 왜냐하면 당신이 필요로하는 시나리오 대로 만들어지기 때문이다. 처음에는 적어도 WinForms ListViewItem으로 한번에 만드는것이 이미지와 정렬된 텍스트로 ListView를 만드는 템플릿을 만드는 것을 찾는것보다 쉽게 느껴질것이다.

WPF로 개발하다 보면, 이 하나의 차이점으로 인해 또 다른 차이점들이 발생합니다. WPF는 개발자가 어떻게 활용하냐에 따라서 업무를 개선시킬 수도, 악화시킬 수도 있습니다. 개발자는 Windows 기본 방식에 제약받지 않고 유연성을 가질 수 있습니다. 하지만 Windows 기본 방식을 사용하는 것보다 더 번거로운 작업을 해야할 수도 있습니다.

다음은 주관적으로 작성한 WPF와 WinForms의 주요 장점입니다. 무엇을 개발하는 지에 따라서 더 나은 방법을 떠올리는데 도움을 줄 것입니다.

WPF의 장점

  • 비교적 최신이기 때문에 최근의 기준들에 부합합니다.
  • Microsoft에서 출시하는 새로운 응용프로그램은 WPF를 사용하고 있으며 그 예로 Visual Studio가 있습니다.
  • 더 유연하기 때문에 새로운 컨트롤들을 직접 제작하거나 구매하지 않아도 많은 작업이 가능합니다.
  • 외부의 컨트롤들을 사용해야할 때 유용할 수 있습니다. 컨트롤들을 제작한 개발자들이 새로운 방식인 WPF에 중점을 두었을 수 있습니다.
  • XAML은 GUI를 제작하고 편집하기에 용이하기 때문에, 디자이너의 업무(XAML)와 프로그래머의 업무(C#, VB.NET 등)를 분리할 수 있습니다.
  • 더욱 깔끔하게 데이터와 레이아웃을 구분하고 바인딩할 수 있습니다.
  • 하드웨어 가속장치로 GUI를 그리기 때문에 더 나은 성능을 제공합니다.
  • Windows 기반 프로그램과 Web 기반 프로그램 모두 사용자 인터페이스를 제작할 수 있습니다(Silverlight/XBAP).

WinForms의 장점

  • 오래되었다. 그래서 더 많이 사용되고 테스트가 되었다.
  • 사거나 공짜로 얻을 수 잇는 써드 파티 컨트롤이 이미 많이 존재한다.
  • Visual Studio 디자이너는 혼자서 WPF로 많은 작업을 해야만 할 때, WPF보다 WinForms이 더 좋다고 여전히 기술하고 있다.