목차
C#언어 또는 Visual Basic을 기반으로 한 HMI개발 시 Winform이나 WPF 중 하나를 선택 하여야 한다. 이 둘은 크게 보면 유사한 점이 많지만 면밀하게 보면 차이점이 존재한다. 둘은 어떠한 유사점과 차이점이 있는지 알아보자.
Winform과 WPF란?
Winform과 WPF 모두 응용 프로그램 개발을 위한 UI Framework이다. 두 기술의 공통점은 C#언어 또는 Visual Basic언어를 기반으로 하여 프로그램을 만드는 것이다. 구현 상 다른 부분도 존재하지만 거의 유사하다 볼 수 있다.
하지만 두 기술 사이에 차이점도 있다. 큰 차이점은 그래픽 처리 방식이다. Winform은 Raster-based로써, 간단한 디자인을 할 수 있지만 이미지를 확대하면 이미지가 손상 된다. 하지만 Winform이후에 나온 WPF는 Vector-based 의 그래픽을 지원하여 고해상도에서도 깨지지 않는 그래픽을 지원한다. 또한 DirectX기반의 그래픽 엔진을 사용하여 애니메이션, 3D등 뛰어난 Interface를 제공한다.
Winform과 WPF 등장 배경
Winform은 2002년 .Net Framework 1.0과 함께 소개되었다. .NetFramework에는 User32와 GDI+등 API가 내장되어 있어, Windows개발자는 기존보다 어플리케이션을 쉽게 제작할 수 있었다. 하지만 점차 그래픽 환경이 발전해가면서 더 화려한 Interface를 요구하였다. 그리하여 .Net Framework 3.0에서 처음으로 WPF가 소개되었다.
Winform vs WPF 속도 및 성능
Winform과 WPF 속도 및 성능을 비교하면 어느 기술이 더 빠르다고 정의 내릴 수 없다. 어떤 경우는 Winform이 빠를 수 있고, 어떠한 경우는 WPF가 빠를 수 있다. 보통 Winform이 WPF보다 단순한 디자인을 사용하기 때문에 속도면에서 빠르다고 생각할 수도 있다. 하지만 애니메이션, 3D, 비디오, 오디오등 DirectX에 영향을 받는 그래픽 기능을 사용했다면 WPF가 속도가 더 빠를 수 있다. 하지만 너무 많은 기능을 사용한다면 리소스를 많이 사용하게 되므로 적절하게 사용하는 것이 좋다.
Winform vs WPF 디자인과 유연성
Winform과 WPF는 다른 언어와 비교하면 쉽게 디자인 할 수 있지만 각각의 다른 디자인 방법과 유연성을 가지고 있다.
Winform은 툴바에서 원하는 컨트롤(버튼, 리스트, 텍스트박스등)을 선택하여 디자이너 화면에 배치한다. 보통 기본으로 제공된 컨트롤에서 배경색등 기본적인 속성만 변경하여 사용한다.
하지만 WPF는 XAML을 사용하여 유연한 컨트롤을 디자인할 수 있다. 예를 들어 버튼에 이미지와 글자를 함께 넣고자 할 때 Winform은 비교적 까다로운 작업을 거쳐야 하지만 WPF는 컨트롤안에 컨트롤을 쉽게 넣을 수 있어 유연하게 디자인할 수 있다. 또한 기본 컨트롤을 상속 받아 나만의 새로운 컨트롤로 재정의하여 사용하고 스타일 및 템플릿을 쉽게 적용할 수 있다. 그리고 코드 구현 부와 디자인 구현 부가 분리되어 있기 때문에 개발자와 디자이너간에 협업을 통해 개발 하기도 용이하다.
Winform vs WPF 사용하기 쉬운 언어는?
Winform과 WPF는 모두 C#언어 또는 Visual Basic을 기본으로 하기 때문에 두 언어 중 하나의 언어에 대한 지식이 있어야 한다. Winform과 WPF의 큰 차이점은 디자인 방식이다. Winform과 WPF 모두 마우스를 이용하여 컨트롤을 배치할 수 있지만, WPF는 XAML언어로 디자인되어 있기 때문에 XAML언어를 추가적으로 공부해야 한다. XAML언어는 WPF에서만 사용하지 않고 Xamarin, Uno, Maui등 다양한 언어에서 사용되기 때문에 활용도가 높다. 언어의 어려움은 상대적이기 때문에 모두 쉽다고 할 수는 없지만 XAML언어를 배워두면 여러모로 도움이 되기 때문에 필자는 XAML를 활용하여 WPF로 만들기 권하고 싶다.
Winform vs WPF 적합한 언어는?
Winform과 WPF중 적합한 언어를 선택하기 위해서는 여러 가지 상황을 고려해서 선택하는 것이 좋다. 아래의 요소들을 검토하여 적절한 기술로 개발하면 된다. 정답은 없다.
- 개발자의 개발 경험 및 선호도
- UI 설계 요구 조건
- 어플리케이션 성능 조건
- 라이브러리 지원 여부
- 플랫폼 호환성
- 어플리케이션의 복합성