업무를 하다보면 WPF와 WINFORM에 대한 이야기를 들을 수 있습니다.
영어도 아니고 분명 무언갈 의미하는 것 같긴 한데... 무엇을 의미하고 무슨 차이점이 있는 걸까요?
Q. Winform이란 무엇일까요?
우선, WINFORM이 무엇인지 한 번 알아볼까요? 이름에서도 알 수 있듯이 합성어입니다.
WIN + FORM인거죠.
여기서 WIN은 느낌이 오시는 것처럼 Window를 의미하고 FORM이란 모양, 형태를 의미하는 거죠.
즉, Window의 Form을 이야기하는 것이고, Window에서 사용하는 Form을 쉽게 만들 수 있는 것!
이게 Winform입니다.
Q. 그래서 Winform으로 뭘하는건데?
Window의 form을 만드는 것은 알겠는 데 그래서 뭘하는 걸까요?
Winform은 조금 나온지 오래 되었다는 것을 기억하셔야해요. 출시되고 시간이 많이 지난 것이죠.
그래서 기존 콘솔창에서 직접 타이핑을 하는 CUI와 다르게 GUI를 제공해주는 것이죠.
이미 오랜 시간 GUI에 익숙해진 우리에게는 조금 CUI자체가 낯설긴 합니다.
Winform은 Window 표준 컨트롤을 베이스로 한다고 합니다.
이게 무슨 소리냐 버튼에 아이콘을 넣으려고 하면 이건 Window 표준 컨트롤 베이스가 아니기 때문에 Winform으로는 안된다는 것이죠.
위의 그림은 Winform Design 입니다. 보시는 것처럼 Window XP, Window 98 느낌이 많이 나는 디자인이죠?
Q. 그렇다면 WPF란 무엇인가요?
WPF(Windows Presentation Foundation)이란 Microsoft 사에서 2006년도에 개발한 데스크톱 클라이언트 애플리케이션을 만드는 UI 프레임워크입니다.
Q. MicroSoft에서는 왜 Winform이 있음에도 불구하고 WPF를 출시한 것일까요?
사실 이 내용을 알기 위해서는 Winform과 WPF의 장단점을 비교하여 보는 것이 좋습니다.
Winform | WPF |
[장점] - 혼자서 작업할 때 용이하다. - 오래되어 검증된 기술이 많다. - 개발 시간이 짧다. [단점] - 시각적인 UI 한계 - 디자이너 영역 분리의 어려움 |
[장점] - 최신 기준에 부합 - 커스터 마이징이 가능함 - Window, Web 기반을 동시에 사용가능 - 하드웨어 가속으로 속도가 빠르다. - XAML사용으로 디자이나와 업무 분담이 가능하다. [단점] - 혼자 개발 시 개발 양이 많다. |
기존 Winform 대비 많은 부분이 개선된 것을 확인할 수 있습니다.
Q. Winform과 WPF 둘 중 뭐가 더 좋은 건가요?
둘 중에 뭐가 더 좋냐? 라고 물었을 때, 뭐가 더 좋다! 확실히 이야기할 수는 없습니다. 개발 환경과 조건이 있을 것이기 때문이죠.
하지만 사용자의 GUI디자인 수준이 많이 높아 있는 요즘 Winform은 디자인적인 요소 하나 만으로도 별로라고 이야기할 수 있겠네요.
Q. 그렇다면 WPF가 가장 좋은 것인가요?
Winform과 WPF 둘 다 Window 기반이라는 점이라는 특징이 있습니다.
2016년 기준 데스크탑 Window의 점유율은 90%에 육박했지만 2018년 이후 점유율은 80%까지 떨어졌고 조금 더 떨어지는 추세입니다. Mac을 사용하는 사람들이 많이 늘어난 것이죠.
여전히 Window는 압도적인 시장 점유율을 보여주지만 추세를 볼 때 Window 기반의 GUI 개발 APP을 사용한다는 것은 좋은 선택일지 많은 고민을 해볼 부분이 아닐까 생각됩니다.
Q. XAML이란 무엇인가요?
eXtensible Application Markup Language의 약자입니다.
MS에서 개발한 XML기반 언어로 윈도우 어플리케이션의 그래픽요소를 표현하는 언어입니다.
출처: https://www.mono-project.com/archived/winforms_designer/
https://gostart.tistory.com/147
'소년의 IT 쉽게 이해하기 > 개발 쉽게 이해하기' 카테고리의 다른 글
깃허브(Github)는 뭘까요? (0) | 2022.05.22 |
---|---|
XML과 XAML의 차이 쉽게 이야기하기 (0) | 2022.05.07 |
자료 구조(Data Structure) 쉽게 이야기하기 (0) | 2022.02.13 |
디자인 패턴 쉽게 이야기하기 (0) | 2022.02.11 |
모듈(Module) 쉽게 이야기하기 (0) | 2022.02.10 |
댓글