윈도우 어플리케이션 라이브러리 변천사

2025. 12. 12. 20:01Application/.NET(WPF, ASP)

Ref : Microsoft Learn

Win32 API (1990s)

바야흐로 상남자들이 코딩하던 시대. 그냥 C언어로 Win32의 API를 가져다 써서 맨땅에 헤딩하는 불가사의한 시대였다. 대충 지금으로 따지면 - 슈퍼마리오 16KB에 박아 넣으려고 별 짓거리를 다하던 그 때다.

 

Microsoft Foundation Classes (1992~)

Win32를 CPP 클래스로 감싸서, Visual Studio와의 조합을 통해 "어떻게든 생산성 있게 만들어 본" 버전. 매크로 지옥이 흠이긴 하나, 당시에 수많은 개발자들이 환호를 질렀고 놀랍게도 현재까지도 절찬리에 사용되고 있다. 물론 신규 프로젝트가 아니라 유지보수에 관해서 수요가 있다지만, 뭐 어쨋든 잘 돌아가는 레거시는 건드리는게 아니라고 하던가.

 

참고로 만악의 근원인 ActiveX를 절찬리에 지원한다.

 

Ref : 필자가 만들다 때려친 프로젝트 중

.NET + Winforms (2002~)

CPP -> C#으로 언어를 갈아 탄 건 둘째 치고, 저 망할놈의 MFC에 비해서 생산성이 비약적으로 증가하였다. 직관적으로 UI 요소를 배치해서 열심히 디자인 할 수 있었고, 프로그래밍도 솔직히 말해서 그다지 어렵지 않은(??) 편이다. 다만 문제라면 애니메이션을 구현하기가 눈물이 나고, 디자인에 있어서는 그닥 별로라는 것.

 

WPF (2006~)

대충 WF가 괘씸했던 개발자들이 뭔가 엄청난 사상의 발전을 도모하기 위해서 나온 프로젝트였다. 기존과는 달리 DirectX를 기반으로 렌더링을 했고, XAML이라는 HTML과 상당히 흡사한 마크업 언어를 도입했다. MVVM 패턴을 사용해서 지지고 볶고 뭐 하여튼 HTML+CSS+JS의 앱판을 한 거였다. 문제는 당대에 하드웨어가 받쳐주지 못한 이슈가 있었고(...) 나중에 가서야 절찬리에 사용되는 좀 눈물 겨운 점이 있다.

 

UWP (2012~)

대충 윈도우 폰즈 시절, 마소가 모바일에 집착하면서 나온 끔찍한 결과물이다. 그냥 잊어버리는 것을 추천한다.

 

Xaramin

리엑트 비슷한 크로스 플랫폼을 만들어 보려 시도했던 흔적. 지금은 .NET에 흡수되어 영면하셨다.

 

WinUI3 + WinRT(SDK) (2020~)

멘땅에 해딩부터 끔찍한 혼종까지 별의별 역사를 겪어온 마소가, 여튼 뭔가 만들어 내야 했기에 나온 결과물. 최신 디자인에 유리하며, WPF와 마찬가지로 XAML을 유지한다. CPP/C# 등 여러가지 언어가 지원된다! 다만 좀 복잡하고, 커뮤니티에서는 이게 맞나 하는 반응이 대다수다.. 실제로도 국내에 WinUI 관련 서적은 단 1권밖에 검색되지 않는 끔찍한 상황이 나온다.

 

렌더링도 괜찮고, Win32도 다시 가져다 쓰고 여튼 참 좋은 친구인데.... NuGet이 어째 텅텅 비어있다.

결론

Electron과 Qt를 적극적으로 이용합시다. 어차피 GPT 한번 딸깍 하면 코드 잘 뱉어주는 참 좋은 세상이니...