새로운 프레임 워크에 대해 고민 중 입니다.

안녕하세요.
회사에서 WPF 를 기반으로 한 프로젝트를 개발하였고,
이제 그 프로젝트에서 추가 기능을 넣어 버전 2 같은 느낌으로 만드려고 합니다.
확실히 WPF로 개발을 하니 단점이 명확하게 눈에 보이는 것 같고
XAML에서 유지보수가 힘든 느낌이 들어서 프레임워크를 바꿔야 하나 고민중입니다.

현재 제가 생각하고 있는 조건과 후보는 이렇습니다.

조건

  1. 러닝 커브를 위해 최대한 사용 가능한 언어, 기술을 사용한다. (C#)
  2. 크로스 플랫폼 지원을 한다.
  3. 오프라인 서비스를 지원해야 한다. (필수)
  4. 성능 좋고 기능 많은 차트 라이브러리 존재 (필수)

후보

  1. Blazor Asp .net
  2. Blazor + Electron
  3. Avalonia
  4. React native + Electron (React 공부 필요)
  5. Flutter

혹시나 후보에 있는 프레임워크들의 단점이나, 추천 해 주실만한 다른 프레임 워크 등이 있다면
말씀해주시면 감사하겠습니다.
:grinning:

2개의 좋아요

XAML이 처음에는 복잡하고 장황하게 느껴져서 어렵거나 힘드실 수 있는데요,
XAML은 WPF뿐만 아니라 UWP라던가 WinUI 3, 서드파티인 Avalonia나 Uno에서 사용하는 마크업 언어입니다. 그 사용 방법도 유사하고요, XAML의 어느 부분이 유지보수에 어려움을 느끼셨는지 궁금합니다.

WPF에서 불편했던 점을 좀 더 구체적으로 말씀해주시면 답변 드리는데 도움이 될 것 같아요.

덧.
후보 목록은 무엇을 어느 환경에서 만드느냐에 따라 장/단점이 나뉘는 것 같습니다.
Blazor Server/Webassembly는 웹 앱을 만들고요,
Blazor + Electron (또는 Blazor Desktop)은 웹 앱 기반으로 모바일 앱이나 데스크톱 앱을 만들 수 있고,
Avalonia는 현재로서는 크로스플랫폼 데스크톱 앱을 만드는데 유용하고, 역시 XAML기반이므로 비슷한 불편함을 느끼실 수 있습니다.
React native + Electron 및 Flutter는 다른 스킬을 숙련해야 해서… ^^;

2개의 좋아요

좋은 말씀 감사합니다.

생각해보니 XAML 코드는 핑계였고 그냥 크로스 플랫폼을 지원하는
최신 프레임 워크가 쓰고 싶었던 느낌이였네요…

진심의 이유로는

  1. .net 개발자 부족으로 인해서 인기있는 프레임 워크해야 인원이 잘 들어올거 같음
  2. 디자인 코드 보기 싫어서 그냥 HTML, CSS 같은 웹 기반을 외주 맡겨버리고 싶음
  3. 새로운 프레임 워크 공부해서 본인의 가치를 높이고 싶다.

의 이유였던 것 같습니다 ㅋㅋㅋㅋㅋ

혹시 Blazor + Electron 과 Avalonia 두 후보만 놓고 비교한다면
둘의 성능 및 확장성, 개발 용이성 등의 장 단점은 어떨까요?

1개의 좋아요

이라면… Blazor 와 Avalonia 는 탈락! ㅋㅅㅋ

그리고…

요게 더 중요하다면 앞서 언급하신

React native + Electron (React 공부 필요)
Flutter

이정도 일거 같아요.
(어차피 WPF 에서 넘어가는 것일 테니 당연히 desktop 을 지원해야하고…)

2개의 좋아요

일단… Blazor + Electron을 Blazor 하이브리드라로 표현할께요.

브레이저가 웹어셈블리로 모바일 또는 데스크톱에 동작하는 느낌은 나쁘지 않습니다. 다만 방식으로 인해 데스크톱의 경우 서비스 중심 프로그램에 적합합니다. 즉, 웹 앱 서비스를 상상하시면 되고요 UI요소는 당연히 CSS+HTML 입니다.

Avalonia는 그냥 WPF랑 같다고 보시고 크로스플랫폼 용이다라고 이해하시면 좋습니다. 크로스플랫폼을 지원하기 위해 다양한 UI 렌더러를 구현하고 있고요, Avalonia에서 그 기반으로 컴포넌트 등을 사용하기 때문에 정말 WPF랑 비슷한 느낌으로 개발할 수 있어요. 물론 컴포넌트의 사용방법이 조금은 다르기 때문에 약간의 학습 시간을 필요합니다.
Avalonia의 경우는 서비스 앱보다는 데스크톱의 기능을 활용하는 응용 서비스 기능을 제공하는데 적합합니다. 뭐 윈도 그림판을 예로 들 수 있겠네요.

둘 다 성숙한 기술이고 다른 서비스 유형이므로 관점에 따라 성능과 확장성, 개발 용이성이 달라지므로 이 기준으로는 판단할 수 없습니다.

5개의 좋아요

감사합니다.

확실히 미래를 위해서를 중점적으로 생각한다면
React가 좋겠지요…

다음에 기회가 되면 개인적으로든 언제든 개발해 봐야겠습니다!

1개의 좋아요

감사합니다.
덕분에 판단을 내리고 결정 할 수 있었습니다.

데스크톱의 기능을 활용하지 않는 서비스 앱을 만들거라 Avalonia보단
Blazor가 좀 더 나을 것 같다는 생각입니다.

그리고 Electron이 Blazor WebAssembly에서는 지원이 안되는 듯 하여
Blazor WebAssembly의 PWA, MAUI 를 이용하여 만들 듯 합니다.

다시 한번 감사드립니다!
:smile:

2개의 좋아요