wpf 개발 시작전에 궁금한 점들 질문입니다.

WinForm, Xamarin, Maui만 하다가 이번에 WPF로 개발하게 되어 시작전에 몇가지 궁금한 점을 올립니다.

개발하려는 프로그램은 물류센터에서 사용하는 것인데 운송장을 시리얼 바코드 스캐너로 연동하고 카메라도 연동해서 작업하는 것을 운송장 단위로 녹화를 합니다.

메인화면 포함해서 메뉴는 20개 이내입니다.

Q1. net framework 4.8 vs .NET 9
→ 물류센터에서 사용하는거라 .NET 10 등 최신 버전 나올때 마다 배포하기 보다
net framework 4.8로 유지하려고 하는데 이게 맞는 판단일지?
DevExpress를 구입하려고 하는데 .net 10으로 올라가면 계속 구매를 해야 되서
net framework 4.8로 하려고 하는 것도 이유중에 하나입니다.
카메라 영상녹화 개발이 (OpenCVSharp + FFmpeg ) .NET 9 쪽이 더 수월한지도 궁금합니다.

Q2. 각각의 메뉴 화면
→ Maui에서는 각 메뉴를 page로 만들어서 네비게이션으로 연결 시켰는데
WPF에서는 메인 화면에서 각 메뉴를 UserControl로 만드는거 같은데
다른 분들은 어떻게 하시나요? WPF에도 Page가 있던데

WinForm, Xamairn, Maui에서 개발하던 방식과 분명 다른 WPF만의 방식 있을거 같은데 인프런에서 wpf강의와 wpf책 두권 먼저 학습 하고 있는데 시작점이 잘 잡히지 않습니다.

3개의 좋아요

Q1. .NET Framework 4.8 vs .NET

고려할 포인트가 많기 때문에 결정에 참고만 하세요.


.NET 최신 버전이 나올 때마다 매번 재배포할 필요는 없습니다. 최초 배포 시점의 LTS(예: .NET 10) 버전을 적용하고 유지하시면 됩니다.
배포 방식으로는 Self-Contained로 런타임까지 포함할 수도 있지만, 이 경우 업데이트할 때마다 배포본이 커지므로 추천하지 않습니다.
대신 초기 설치 시 .NET Desktop Runtime을 설치하도록 절차화하는 방법이 더 나을듯 합니다.

저라면 운영 환경이 Windows 10 이상으로 특정될 수 있다면 .NET으로 개발하는 것을 권하겠습니다.

이 부분에 대해서는 DevExpress 컴포넌트의 경우 일부 컨트롤이 상위 버전 .NET을 타겟으로 개발 시 문제가 되는 것으로 보고되고 있는데요, 일반적인 개념으로는 상위 .NET 타켓에서 하위 버전으로 빌드 된 라이브러리를 참조하는데 문제는 없습니다.
최신 버전을 구입하실 예정이라면 추후 업그레이드를 하지 않더라도 (적어도 .NET 10 까지는) .NET 하위 호환성은 보장될 것으로 보입니다.

OpenCVSharp와 FFmpeg는 깊게 다뤄보지 않아서 어떤 쪽이 더 적합한지 명확히 말씀드리기는 어렵습니다.
다만, 최근까지 활발히 업데이트되고 있는 라이브러리를 사용한다면 최적화나 런타임 성능 면에서는 최신 .NET이 더 유리할 가능성이 높습니다.


Q2. WPF 개발에 Page 모델을 사용하는가?

UserControl 기반으로 가는게 맞다고 봅니다.


우선 WPF에 Page 기반의 Navigation 모델이 도입된 배경을 살펴봅시다.

2000년대 초중반의 웹 프론트 기술은 HTML의 부족한 부분을 채워주는 Adobe Flash가 리치 클라이언트(Rich Client)의 대명사로 자리 잡고 있었습니다. Microsoft는 이에 대응하기 위해 브라우저에서도 실행 가능한 .NET 애플리케이션(Smart Client)의 개발을 목표로 삼았고, 이 결과물이 바로 Silverlight(WPF/E)와 WPF의 XBAP 호스팅 모델입니다.

HTML의 페이지와 브라우저의 프레임 개념을 차용한 Page와 Frame이 WPF에 도입되었지만, 이러한 설계는 창 기반 데스크탑 애플리케이션의 요구와는 다소 어긋나는 면이 있습니다.

웹 네비게이션과 유사하게 탐색 기록을 관리하기 위해 내부적으로 View의 상태를 따로 저장하는 과정 때문에 MVVM을 적용할 경우 출동이 발생할 수 있고, 또한 Frame 내외부 간 리소스나 바인딩의 참조 모델이 일반적인 WPF와 다르고, 이로 인해 XAML Hot-Reload 기능을 제대로 사용할 수 없어 생산성 측면에서도 큰 걸림돌이 됩니다.

심지어 Page 모델의 기원인 Silverlight나 XBAP는 Chromium 계열 브라우저에서 실행 불가능하며 모던 .NET(.NET Core, .NET 5+)에서도 퇴출 된 상태입니다.

Xamarin이나 MAUI의 Page 모델은 웹보다는 모바일 환경의 실행(단일 뷰, 뒤로가기)을 고려했기 때문에 도입된 것입니다.

따라서 데스크탑에서 구동되는 창 기반, 멀티 뷰 애플리케이션이라면 UserControl 방식으로 가는 것이 바람직하고 DI나 MVVM 적용에도 유리하다고 봅니다.

8개의 좋아요

여기에서도 각 메뉴를 UserControl로 되어 있네요.

WFP의 UserControl이 WinForms에서 하나의 Form이라고 보면 되겠네요.

저도 현 시점에 같은 고민을 하는데 어떤 결정을 내리셨나요?

.NET8에 DevExpress사용해서 개발하고 있습니다. 지나고 보니 별것도 아니였는데 이때 많은 고민이 되었나 봅니다. DevExpress설치하면 WPF에서 DevExpress 프로젝트 템플릿 있습니다. 이거 사용하면 기본 프로젝트 만들어 주는데 그것을 기반으로 시작하시면 됩니다. 프로그램 메뉴는 UserControl로 개발하고 팝업만 윈도우로 하고 있습니다. WinUI3도 같이 개발하고 있는데 이건또 같으면서 다른게 있긴 합니다.

2개의 좋아요

네~ 답변 감사합니다.
.net 8로 정한 이유는 글 작성(2025년 7월) 기준 LTS버전이 8이어서일까요?
저는 10으로 진행 중이긴 합니다. 배포 전이라 이게 맞을까라는 생각이 자꾸 듭니다.

지금 한다면 저는 .net 10으로 할겁니다. .net 10으로 하세요. ..net 10도 lts라서…

3개의 좋아요

네 답변 감사합니다.