Inflearn コミュニティ Q&A
ERP/MES 데스크톱 시스템 개발 시 WinForms vs WPF 선택 문의
解決済みの質問
作成
·
14
0
안녕하세요.
질문을 드리고 싶은 부분이 있는데, 마땅히 올릴 곳을 찾지 못해 강좌 게시판에 글을 남깁니다.
먼저, 올려주신 강의들을 잘 듣고 있으며 프로젝트에 많은 도움을 받고 있습니다. 좋은 강의 제공해 주셔서 감사합니다.
다름이 아니라, 기존에 레거시 시스템(VB6.0)으로 개발되어 운영 중인 시스템을 새롭게 개발하려고 합니다.
개발 범위는 ERP 및 MES 시스템이며, 운영 환경은 Windows 데스크톱 기반입니다.
UI 라이브러리는 DevExpress 컴포넌트 사용을 고려하고 있습니다.
그래서 WinForms와 WPF 중 어떤 기술을 선택하는 것이 좋을지 고민이 되고 있습니다.
현재는 제가 익숙한 .NET 8 기반 WinForms + DevExpress 조합으로 마음이 조금 기울어 있는 상태이지만,
장기적인 관점에서 WPF + DevExpress로 전환하는 것이 더 나은 선택인지 판단이 서지 않아 조언을 구하고 싶습니다.
ERP/MES와 같은 업무 시스템을 개발하는 관점에서
WinForms와 WPF 중 어떤 선택이 더 적절할지
DevExpress를 사용하는 환경에서 고려해야 할 요소가 있는지
실무 경험에서의 장단점이 있다면
조언을 주시면 큰 도움이 될 것 같습니다.
읽어주셔서 감사합니다.
回答 3
0
0
안녕하세요 ! 먼저 강의를 수강해주셔서 감사드립니다 ^^
첫 시작의 개발 환경을 선택하는 것은 매우 고민되는 일 중 하나죠. 너무나도 공감이 갑니다.
WinForms, WPF 둘 다 실무에서 개발을 해왔었기에 경험을 기반으로 답변해드릴게요.
Winforms
장점
개발 속도
사실 두말이 필요 없습니다. 개발 속도가 중요하다면 고민도 하지말고 Winforms를 선택하시면 됩니다.디자인 패턴
DevExpress도 호환이 잘되고 심지어 MVVM 패턴또한 DevExpress에서 지원하므로 디자인 패턴의 고민도 해결이 됩니다. (단 MVVM은 WinForms에서 오히려 복잡도를 향상 시키는 경우도 많고 개인적으로는 MVP 디자인 패턴을 추천합니다.)
스프레드 시트 디자인 용이
저는 DevExpress의 스프레드 시트를 사용하진 않았고 메시어스(구 GrapeCity)의
Spread.Net을 이용했는데요. 사용하는데 너무나도 직관적이고 사용자가 원하는 화면 구현하기가 수월했습니다.
단점
컨트롤 로딩 속도
DevExpress가 생각보다 무겁습니다. 몇개 안되는 컨트롤 올리는건 아무런 문제가 안되나, 한 폼에 많은 컨트롤들과 사용자 정의 컨트롤들이 올라가게되면 폼 로드하는 속도에서 약간의 지연이 발생할 수 있습니다.
GPU 활용이 어려움.
1번과 관련이 있는데 GPU에 전혀 최적화 되어있지 않아서 반응형, 애니메이션 컴포넌트를 만들다보면 자연스럽지 못하게 보여지는 경우가 종종 있습니다. 별것도 아닌데 힘이 들어갈 때가 있어요.
하지만 장점이 단점을 모두 이길 정도로 생산성이 뛰어나므로 디자인 보단 생산성 이 우선이라면 WinForms를 추천드립니다.
WPF
장점
GPU 활용성 뛰어남
컴포넌트가 많아지더라 해도 버벅거림이 덜하고 애니메이션 활용이 WinForms에 비해 훨씬 편리합니다. 애니메이션도 자연스러운 편이에요.자연스러운 디자인
윈폼에선 웹사이트에서 볼만한 디자인을 구현하려면 외부 상용컴포넌트 쓰지않고서는 구현이 매우 어렵습니다.
하지만 WPF는 Xaml이라는 막강한 디자인코드를 사용할 수 있어서 웹과 유사한 디자인을 만들 수 있습니다.
단점
개발속도
요놈이 문제입니다. WPF가 익숙해졌다 한들 사용자 정의 컨트롤 하나 만드는데 보일러플레이트 코드가 너무 많습니다. 또한 MVVM 디자인 패턴을 권장하고 있는데, 이 디자인 패턴을 고집하신다면 SpreadSheet를 온전히 활용하는데 꽤 애먹으실 수 있습니다. 또한 바인딩 규칙이라던지 이벤트를 ViewModel상에서 호출하기 위해 일부 라이브러리 참조하여 라이브러리 사용법 등 공부해야할 학습곡선이 꽤 높습니다.
디자인하는데 시간이 다갈 가능성이 있어요.하지만, 요즘 시대가 무슨 시대입니까. AI를 적극 활용하신다면 학습 곡선따위 모두 씹어먹을 수 있습니다. ㅋㅋ;
스프레드 시트
위에서 말씀드렸다시피 스프레드 시트를 MVVM형태로 활용하려면 꽤 복잡스럽습니다. 바인딩하여 객체 구조를 만들고 그거에 따른 Xaml 을 구현해야하는데 난이도가 꽤 있습니다.
간단한 목록 보여주거나 하는 것은 바인딩이 쉬우나, 특정 셀 이후에 그래프를 보여주고, 특정 셀의 버튼을 누르면 몇번째 Rows가 Visible, Hide 되게끔 작업한다거나, 스프레드 Node를 직접 구현한다거나 등등, 스프레드 시트를 최대한 활용하려면 난이도가 급상승하게 됩니다.
물론 MVVM을 고집하지않고 스프레드 시트에 한해서 다른 디자인 패턴을 사용하시면 되긴합니다.참고로제가 사용했던 메시어스의 스프레드 시트 버전에서는 WPF 지원이 조금 미약했습니다. 최신 버전에선 많이 개선이 됐을지 확인은 못해봤어요 ㅎㅎ
만약 생산성 보단 디자인이시라면 WPF를 추천드립니다.
참고로 WinForms, WPF 모두 윈도우 레벨에 접근하는 것은 동일하므로 그것으로 차이를 보기는 어렵습니다.
제 마지막 종합 의견을 말씀 드리겠습니다.
진짜 개발을 빨리하고 유지보수 편하게 하고 싶다
-> 고민하지말고 WinForms 선택하세요.
아냐 이 기회에 조금 힘들더라해도 나의 기술 역량의 폭을 한단계 높여서 나중에 더 좋은 기회도 잡고 싶다! 그리고 AI를 최대한 활용해서 개발하겠다
-> WPF 추천드립니다.
이 모든 내용은 제 주관적인 의견이므로 절대적으로 참고만 하시길 바랍니다 ^^ 플랫폼 선택에 도움 되셨기를 바랍니다.
0
안녕하세요, 인프런 AI 인턴입니다. 박정식님.
ERP/MES 데스크톱 시스템 개발에 관한 WinForms와 WPF의 선택에 대한 문의를 주셨군요. 이러한 시스템은 성능, 유지보수, 확장성 등이 중요한 요소가 되기에 신중한 선택이 필요합니다. 다음은 각각의 기술에 대한 주요 특징과 고려사항입니다.
WinForms:
- 장점: 빠른 개발 및 쉽고 직관적인 UI 디자인, .NET 8과의 호환성으로 인해 기존 WinForms 시스템의 유지보수와 신규 기능 추가가 용이합니다.
- 단점: 현대적인 UI 설계에는 제한이 있으며, 특히 고해상도 모니터나 다양한 DPI 설정을 지원하는 데 제약이 있을 수 있습니다.
- 실무 경험: 기존 레거시 시스템과의 통합이 용이하다는 점이 가장 큰 장점입니다.
- 장점: 빠른 개발 및 쉽고 직관적인 UI 디자인, .NET 8과의 호환성으로 인해 기존 WinForms 시스템의 유지보수와 신규 기능 추가가 용이합니다.
WPF:
- 장점: 최신 UI 기술을 활용하여 현대적이고 풍부한 사용자 경험을 제공할 수 있습니다. 특히 데이터 바인딩, 스타일링, 애니메이션 등에서 더욱 유리합니다.
- 단점: 학습 곡선이 가파르며, 복잡한 구조의 응용 프로그램을 처음 접하는 개발자에게는 심도 있는 학습이 필요할 수 있습니다.
- 실무 경험: 복잡한 UI와 다양한 비주얼 디자인을 요구하는 프로젝트에서 장점을 발휘합니다.
- 장점: 최신 UI 기술을 활용하여 현대적이고 풍부한 사용자 경험을 제공할 수 있습니다. 특히 데이터 바인딩, 스타일링, 애니메이션 등에서 더욱 유리합니다.
DevExpress 고려사항:
- 두 기술 모두 지원: DevExpress는 WinForms와 WPF 모두에 대해 강력한 컴포넌트를 제공합니다.
- 상업적 지원 및 커뮤니티: DevExpress의 경우 두 플랫폼에서 모두 잘 지원되기 때문에, 선택 시 큰 제약은 없을 것입니다.
- 두 기술 모두 지원: DevExpress는 WinForms와 WPF 모두에 대해 강력한 컴포넌트를 제공합니다.
다양한 사용자 인터페이스를 지원하거나 새로운 기능 통합이 필요한 경우 WPF가 더 나은 선택이 될 수 있습니다. 하지만 기존 시스템과의 호환성 및 개발팀의 숙련도를 고려했을 때, WinForms도 여전히 유효한 선택입니다.
제가 제공하는 답변은 기존 지식 기반과 경험을 바탕으로 한 것이며, 실제 프로젝트의 문맥과 필요 조건에 따라 다를 수 있음을 염두에 두시기 바랍니다. 아래는 관련된 토론 및 경험을 다루는 질문들입니다. 도움이 되길 바랍니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.




