Desktop Application 개발환경

guru chun (haechul chun)·2025년 1월 24일

WPF 개발

목록 보기
1/10

WinForm으로 업무에 필요한 여러가지 도구를 만들어 사용하고 있다. 최근에 이 프로그램이 단순화된 형태로 고객에게도 필요하다는 요구사항을 받았다.
하지만 WinForm으로 만들어진 프로그램을 고객에게 배포한다는 것은 나의 자존심이 허락하지 않는다. 이것은 애초에 개발자들이나 일부 사내 직원들이 쓰는 것을 목표로 했기 때문이다. (좀 안이뻐도 되는 대신 사용하기 편리하고, 개선 요청이 있으면 즉시 반영해 주는 것이다. 설치도 필요없고 그냥 압축 풀어서 실행하면 된다.)
그래 좋다. 이번에 배포할 프로그램은 WPF를 이용해서 멋지게 만들어 보자.

대안 검토

WinForm 개발경험이 있다고 해서 무조건 WPF를 선택해야하는 것은 아니다. Desktop Application 개발에 적합한 후보에는 다음과 같은 것들이 있다.
1. Electron
2. Node.js/Express(또는 유사한 Framework)
3. WPF, MAUI
4. Flutter
상업용으로 사용할 것이므로 무조건 성숙한 기술과 이슈해결이 쉬운(사용자가 많은) 기술 중에서 선택하는 것이 좋다. Node.js는 처음에 고려대상이 아니었으나 고객 입장에서는 웹이 더 친숙할 수도 있겠다는 생각에 추가했다. (솔직한 이유는 웹이 대세니까... 대세를 따르는 것이 좋겠다는 것?)

Web은 어때?

최근 약 10년간 웹개발을 안했기 때문에 개인적으로는 내 자신을 업그레이드하는 좋은 기회가 될 것 같아서 가장 먼저 검토했고 이미 이것을 선택하기로 마음을 정해두고 시작한 것이나 다름 없다.
하지만 아쉽게도 Electron과 Node.js를 가장 먼저 배제하는 결과가 되었다. 백엔드/프론트엔드 프레임워크를 먼저 선택하기 위해 사전학습을 했다. 세상이 많이 변했다. 정말 개발하기 좋아졌다. 그럼에도 불구하고 선택의 폭이 너무 넓어졌다는 것이 오히려 리스크로 다가왔다. 굉장히 멋있고 매력적인 솔루션(프레임워크와 도구들까지)이 많아 단순히 현재 시점에 가장 보편적인 것으로 선택하기에는 아쉬움이 있다. 성숙한 또는 인기있는 기술들을 제대로 이해한 후에 적용해야겠다는 생각이 들었다.
결정적으로 새로 배워야할 것이 너무 많다. 어디 회사일이 내 맘대로 되는가? 내가 해야할 Main Project는 그대로 있는데, Side Project로 많은 시간을 할애할 수 없는 상황이다. Main은 앞으로 더 바빠질 예정이다.
그래서 눈물을 머금고 이 쪽 방향은 다음을 기약하기로 했다.
내게 주어진 시간이 이렇게 빠듯하지만 않았다면 Electron을 선택했을 것이다.

그렇다면 Flutter는?

다음으로 Flutter를 배제했다. Flutter는 간단한 APP도 이미 만들어 보았고, 개발 생산성도 나쁘지 않다는 생각이 들었다. 그러나 Flutter는 오히려 Web 개발 경험이 있는 사람들이 더 쉽게 접근할 수 있는 것 같다. 꽤 진지하게 고민했으나 나중에 함께 유지보수해야할 다른 사람들(C 코딩만 해오다가 최근에 C++과 C#을 배우고 있는)의 학습곡선을 고려했을 때 Web이나 Flutter는 너무 부담이 될 것 같다.
멀티플랫폼을 지원해야한다면 Flutter는 훌륭한 선택이 될 것 같다. 다만 훌륭한 현대언어(Python, Go, Java/Javascript)가 있는데DART라는 언어를 새로 도입한 것은 좀 불편하다.

WPF vs MAUI?

Windows Desktop Application을 만드는 방법은 MS에서 제시하는 로드맵을 따라가면 되는데도 상당히 혼란스럽다. WinForm APP에 대해서는 이견이 없는데, 차세대 APP에 대해서는 말이 많다. (그동안 너무 자주 바뀌었고, 어느것도 성공하지 못했다.) MS의 로드맵을 따라가기 보다는 Avalonia를 추천하는 사람들도 있다.
중간에 우여곡절이 있었지만 WPF의 다음은 MAUI가 맞는 것 같다. MAUI는 멀티 플랫폼을 지원하는 것이 특징이고, WPF의 연장선에 있다고 본다.
구글링을 해보니 Windows Desktop Application이 목적이라면 아직까지는 WPF가 최선이라고 말한다. 굳이 MAUI를 선택할 필요가 없다는 것이다. WPF를 거쳐서 MAUI로 넘어가는 것이 학습하기에도 더 좋을것이라고 제안하고 있다. 개인적으로는 약 5년전에 WPF로 미니 프로젝트를 수행한 경험이 있어서 큰 부담은 없다.

결과물의 목표 수준

이 과제의 목표는 WinForm으로는 만들 수 없는 멋진 UI를 고객에게 제공하는 것인다.
날것의 WPF 프로젝트가 아닌 멋진 Framework 혹은 라이브러리와 예제를 기반으로 만드는 날먹의 프로젝트로 진행하는 것이 목적이다.
WPF UI Example

profile
오늘도, 내일도 코딩을 즐기자

0개의 댓글