본문 바로가기
프로그래밍/Desktop App

[C#] WinForm VS WPF

by YuminK 2023. 11. 13.

데스트탑 앱 개발을 해야 하는 상황에서 winform과 wpf 사이에서 하나를 골라야 했다.

Flutter나 Electron도 고려하긴 했지만 회사에서 C# 사용을 장려하는 분위기가 있어 제외했다. 

 

윈폼은 컨트롤을 배치하면 컨트롤 생성 코드가 자동으로 생성된다. WPF 는 XML 형태의 XAML 문서에 생성된다. WPF 도 XAML 없이 코드만으로 생성 가능. 윈폼은 응용프로그램으로만 실행되지만 WPF 는 응용프로그램 뿐만 아니라 웹브라우저에서도 실행 가능.

 

윈폼은 윈도우 api 를 이용하여 draw 하는것이고 WPF 는 윈도우 api 사용을 최소화하고 직접 draw 한다. 

 

윈폼은 애니메이션 구현이 어렵고 기본적으로 동기 방식으로 동작한다. WPF는 DirectX 렌더링 방식이기 때문에 연산량이 많고(백터 방식), Windows Form과 다르게 무겁다. 메모리를 많이 먹는 편이지만 애니메이션 구현이 쉬우며 기본적으로 비동기 방식이다.

 

Windows Forms는 초보자가 사용하기 좋으나 디자인 패턴이 제한적이고 바인딩에 대하여 추가적인 리소스가 있는 편이다. WPF는 모던한 디자인 패턴이 가능하고, 바인딩을 염두에 두고 설계되었지만 초보자가 사용하기에는 어렵다.

 

Windows Forms는 CPU 렌더링이 기본이며 GPU 렌더링이 가능하나 어렵고, 스레드 관리가 귀찮고 프레임 개념에 접근이 어렵다. WPF는 GPU로 렌더링이 가능하고 스레드 관리와 프레임에 대한 접근이 쉬운 편이다.

 

Windows Forms는 Windows Forms로 만든 프로그램의 크기와 부하가 일정하게 커지며 퍼포먼스 개선이 힘든 편이다. 따라서 디자이너와의 협업이 거의 불가능하다.

 

WPF는 WPF로 만든 프로그램의 크기가 커져도 부하가 크게 증가하지 않는다. 프레임 세팅이나 다른 렌더링 설정으로 퍼포먼스 개선이 어느 정도 가능하다. 그리고 디자이너와 분리된 상태에서의 협업이 가능하다.

https://m.blog.naver.com/PostView.naver?blogId=wonjinho81&logNo=222065134772&categoryNo=69&proxyReferer=

 

닷넷 현업 개발자 포스팅(내용 좋음)

https://kaki104.tistory.com/798

 

안드로이드 XML 개발 방식, 데이터 바인딩이 유사해보인다. 2D 그래픽, 3D 렌더링 가능

https://learn.microsoft.com/ko-kr/dotnet/desktop/wpf/overview/?view=netdesktop-7.0

 

Window, Web 기반 프로그램을 동시에 사용 가능하다. XAML을 사용하여 디자이너와 프로그래머의 업무를 분리할 수 있다. 하드웨어 가속으로 속도가 빠르다. WPF는 컨트롤을 제작하거나 구입하지 않고 Winforms보다 유연하게 작업할 수 있다. Windows Installer나 ClickOnce를 이용한 배포 방식 지원

https://just-my-blog.tistory.com/12

 

WPF was created to replace WinForms, which had been the primary UI framework for Windows desktop applications since 2002. While WinForms is still in use today, WPF provides a more modern, visually appealing UI framework built on top of DirectX.

 

DirectX 기반이고 더 확장성있고 디자이너와 협업이 가능하며 신규 기능들에 대한 지원이 더욱 많다.

멀티미디어에 대한 기능 지원, 벡터 그래픽, 하드웨어 가속, 더욱 현대적

https://www.bytehide.com/blog/wpf-vs-winforms


Winform 출시일: 2002년 2월 13일

WPF 출시일: 2006년 11월 21일 

 

WPF가 윈폼에 비해 디자인이 예쁘다는 이야기가 많다. 

 

이미 시중에 나온 유명한 앱 중에 일렉트론으로 나온 것들이 너무 많고... 웹 개발자들이 뛰어들기에 너무 좋아서 문제다. 그러나 네이티브 데스크탑 개발은 여전히 수요가 꽤 있다. 

 

잡플래닛 검색 기준

wpf 총 155건, winform 총 69건, MFC 총 231건

flutter, React Native 각각 196건

electron 총 25건

 

시장에서 더 필요로 하는 기술 WPF

더욱 자유로운 컨트롤, 더욱 많은 기능 지원

하드웨어 가속, 유연한 개발 방식

레퍼런스(winform: 2002, wpf: 2006)는 둘다 많음

 

XAML은 XML 개발 방식과 유사함. 

DataBinding 형태도 유사.

=> 안드로이드 개발 경험이 있다면 유리하다.

 

윈폼과 WPF 사이에서 고른다면, WPF로 개발하는 것이 낫다고 판단했다.

댓글