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책 두권 먼저 학습 하고 있는데 시작점이 잘 잡히지 않습니다.

1개의 좋아요

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 적용에도 유리하다고 봅니다.

7개의 좋아요

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

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