WPF MVVM Framework 많이들 쓰시나요?

안녕하세요.
Winform + DevExpress 개발하다가,
신규 개발건이 있어 WPF로 해볼까 검토 하다 조언을 좀 구해봅니다.
개발은 회사/개인에 따라 다르기 때문에 지극히 개인적인 경험과 생각을 말씀해 주셔도 감사합니다. ^^

  1. 현업에서 WPF로 개발시 MVVM Framework(종류 상관없음)를 많이들 사용하시나요?
    혹시, Framework 사용하지 않으면 많이 번거롭고 불편할까요?

  2. DevExpress가 다소 무겁다고 생각이 됩니다.
    WPF UI 관련 라이브러리가(ex : Handy, MaterialDesignInXamlToolkit) 있던데요~
    현업에서 UI 관련해서 어떤 라이브러리를 많이 사용하시나요?

  3. 여러 조건이 있겠지만,
    구글링을 해보니 Winform 보다 WPF가 속도 면에서도 좋다고 하는데요.
    어떻게 생각하시나요?

감사합니다.

2개의 좋아요

지극히 개인적인 경험과 생각입니다… :sweat_smile:

저는 Windows Forms 이해도가 많이 부족해서 WPF 위주로만 말씀드려요!

1. 꼭 사용하지 않으셔도 됩니다.

개발단계에서는 Windows Forms처럼 개발하시고 추후에 MVVM으로 대체해주셔도 괜찮습니다. 지극히 개인적인 생각이지만 처음 WPF를 시작하신다면 MVVM 까지 신경 쓰기에는 다소 심적인 부담이 있지 않을까 생각합니다.

특히 MVVM으로 개발할 경우 불편할 수 있는 상황이 자주 나올 수 있는데 대부분 해결할 수 있지만 MVVM을 함께 사용하시려면 아래 키워드 정도의 세부 기술들이 함께 동반되어야 MVVM 사용에 대한 리스크를 줄일 수 있을 것 같습니다!

  • ICommand (Command, CommandParameter, RelayCommand, Execute, Can Execute)
  • DependencyProperty (PropertyChanged)
  • Binding (Relative, Static, Element, Converter)

오히려 MVVM을 사용함으로 인해 불편함이 더 많이 생길 수도 있을 것 같습니다. 처음에는 가볍게 시작하시는 것 도 좋을 것 같습니다. (개인적인 생각으로는 전혀 불편하지 않습니다.)

2. 상황에 따라 다릅니다.

상황에 맞춰 DevExpress 같은 유료 컴포넌트가 필요하거나 아닐 수도 있을 것 같습니다. 이번에도 개인적인 생각이지만 DataGrid, Excel, 확장 Marked TextBox, DatePicker 등의 클래식하고 데이터성 기능이 많이 있을 경우에는 유료 컴포넌트를 사용하는 것이 좋고 그외에는 순수 WPF를 사용합니다.

그리고 전체적인 공통 영역은 최대한 순수 WPF로 만들고 세부적인 화면에서는 각각의 비지니스에 맞는 컴포넌트를 독립적으로 자유롭게 사용하면 되지 않을까 생각합니다.

3. 속도보다는 잘하는 분야.

많은 데이터를 보여주고 보고서를 작성하는 기능은 Windows Forms이 훨씬 잘 맞고 유료 컴포넌트의 완성도에 있어서도 Windows Forms 컴포넌트가 훨씬 우수합니다.

WPF는 결이 맞지 않는 UI 구현이 매우 어렵습니다. 눈에 보이는 선 하나하나 UI가 객체이고 이 객체들을 화면에서 사용하기 위해서는 부모/자식 관계를 무조건 유지해야 합니다. 때문에 이 원칙이 조금만 벗어나는 표현을 하려 한다면 기술적으로도 매우 어렵고 한계를 느낄 수 있습니다. (가령 부모영역을 벗어나는 표현을 해야한다거나, 특히 DataGrid에서의 Cell Merge 같은…)

개인적으로 두 프로그램의 UI 비유를 한다면 이렇게 생각합니다.

WPF → Photoshop
Windows Forms → Illustrator

감사합니다!

8개의 좋아요
  1. MVVM에 복잡한 시나리오를 대입하려고 할 경우 MVVM 프레임워크를 이용하면 쉽게 해결할 수 있습니다. 특히 기본 MVVM으로는 처리하기 쉽지 않고 번잡한 뷰 모델 커맨드 시스템 같은 것을 Prism을 이용해서 쉽게 소화하실 수 있을 겁니다.
  1. “현업에서 어떤 라이브러리를 많이 사용하는가” 보다는 "지금 진행하는 프로젝트의 예산, 방향성에 알맞는 솔루션이 무엇인가"가 좀 더 정확한 고민이 되지 않을까 생각합니다.

  2. “단순히 속도가 빠르다” 보다는 "복잡한 렌더링과 High DPI 지원에 강하다"가 정확한 표현이 될 것 같습니다. 체감 속도의 향상은 Windows Forms가 Win32, COM, ActiveX 컨트롤을 닷넷에서 사용하기 편리하도록 래핑한 GUI 시스템인 반면, WPF의 경우 레거시 코드를 모두 걷어내고 오로지 WPF만을 위한 전용 렌더링 엔진을 사용하도록 재설계했기 때문에 느껴지는 속도 상의 이점이 있을 수 있겠습니다.

7개의 좋아요

자세한 설명 감사합니다.

2개의 좋아요

혹시,
2번에서 상황에 따라서 라고 말씀 해주셨는데요.
혹시 자주 사용하시는 무료 & 유료 컴포넌트는 어떤게 있으실까요?

2개의 좋아요

@oroi1991 앗 저는 도움 드릴만큼 컴포넌트 경험이 많지 않아서요ㅠ

제가 경험한 유료 컴포넌트중에서는 컴포넌트원(C1), 데브익스프레스, 인프라지스틱스, 텔레릭 정도가 있습니다.

ComponentOne
DevExpress
Infragistics
Telerik

각 사들의 WPF 데모를 다운받아 보시고 선택하시는 것을 추천드립니다. :smile:

그리고 무료 오픈소스중에서는 Infragistics에서 제공하는 Infragistics.Themes.MetroDark.Wpf (NugetPackage)를 추천드립니다.

도움이 되셨으면 좋겠네요! 감사합니다.

2개의 좋아요

감사합니다.
많은 도움 되고 있습니다. ^^

2개의 좋아요