안녕하세요.
회사에서 WPF 를 기반으로 한 프로젝트를 개발하였고,
이제 그 프로젝트에서 추가 기능을 넣어 버전 2 같은 느낌으로 만드려고 합니다.
확실히 WPF로 개발을 하니 단점이 명확하게 눈에 보이는 것 같고
XAML에서 유지보수가 힘든 느낌이 들어서 프레임워크를 바꿔야 하나 고민중입니다.
현재 제가 생각하고 있는 조건과 후보는 이렇습니다.
조건
러닝 커브를 위해 최대한 사용 가능한 언어, 기술을 사용한다. (C#)
크로스 플랫폼 지원을 한다.
오프라인 서비스를 지원해야 한다. (필수)
성능 좋고 기능 많은 차트 라이브러리 존재 (필수)
후보
Blazor Asp .net
Blazor + Electron
Avalonia
React native + Electron (React 공부 필요)
Flutter
혹시나 후보에 있는 프레임워크들의 단점이나, 추천 해 주실만한 다른 프레임 워크 등이 있다면
말씀해주시면 감사하겠습니다.
XAML이 처음에는 복잡하고 장황하게 느껴져서 어렵거나 힘드실 수 있는데요,
XAML은 WPF뿐만 아니라 UWP라던가 WinUI 3, 서드파티인 Avalonia나 Uno에서 사용하는 마크업 언어입니다. 그 사용 방법도 유사하고요, XAML의 어느 부분이 유지보수에 어려움을 느끼셨는지 궁금합니다.
WPF에서 불편했던 점을 좀 더 구체적으로 말씀해주시면 답변 드리는데 도움이 될 것 같아요.
덧.
후보 목록은 무엇을 어느 환경에서 만드느냐에 따라 장/단점이 나뉘는 것 같습니다.
Blazor Server/Webassembly는 웹 앱을 만들고요,
Blazor + Electron (또는 Blazor Desktop)은 웹 앱 기반으로 모바일 앱이나 데스크톱 앱을 만들 수 있고,
Avalonia는 현재로서는 크로스플랫폼 데스크톱 앱을 만드는데 유용하고, 역시 XAML기반이므로 비슷한 불편함을 느끼실 수 있습니다.
React native + Electron 및 Flutter는 다른 스킬을 숙련해야 해서… ^^;
브레이저가 웹어셈블리로 모바일 또는 데스크톱에 동작하는 느낌은 나쁘지 않습니다. 다만 방식으로 인해 데스크톱의 경우 서비스 중심 프로그램에 적합합니다. 즉, 웹 앱 서비스를 상상하시면 되고요 UI요소는 당연히 CSS+HTML 입니다.
Avalonia는 그냥 WPF랑 같다고 보시고 크로스플랫폼 용이다라고 이해하시면 좋습니다. 크로스플랫폼을 지원하기 위해 다양한 UI 렌더러를 구현하고 있고요, Avalonia에서 그 기반으로 컴포넌트 등을 사용하기 때문에 정말 WPF랑 비슷한 느낌으로 개발할 수 있어요. 물론 컴포넌트의 사용방법이 조금은 다르기 때문에 약간의 학습 시간을 필요합니다.
Avalonia의 경우는 서비스 앱보다는 데스크톱의 기능을 활용하는 응용 서비스 기능을 제공하는데 적합합니다. 뭐 윈도 그림판을 예로 들 수 있겠네요.
둘 다 성숙한 기술이고 다른 서비스 유형이므로 관점에 따라 성능과 확장성, 개발 용이성이 달라지므로 이 기준으로는 판단할 수 없습니다.