장비 제어 WPF + MVVM 질문드립니다

안녕하세요 행님들 예전에 WPF 관련 해서 질문을 한적이 있는데 행님들 덕분에 초반의 약간 편견? 이런걸 조금 많이 제거 할수 있는 계기가 되었습니다.

하지만, 한가지더 현업에서 상황에서 느끼고 있는 제 느낌과 행님들의 생각을 공유 받고 싶어서 글을 올리게 되었습니다.

저는 윈폼으로 6년 정도 개발을 하고 대부분 C#으로 개발을 진행하고 있습니다.
업종은 장비제어쪽을 하고 있습니다 디스플레이, 반도체, 2차전지를 해봤고 지금은 2차전지 PC제어 프로그램을 개발하고 CS도 다니고 있습니다.

이제 WPF와 MVVM 개념 + DI 개념을 가지고 두달정도 작은 R&D 장비 제어를 만들고 있습니다.

여기서 문제!!

오케이 제가 회사에서 개발은 하는 것은 맨땅에 해딩하면서
어떻게는 개발을 할수있는데요

하…이게 양산 시설 현장에서 CS업무를 할려니깐 돌아 버리겠습니다.

고객사는 시간은 정해져 있지만 더 쭐이기를 원하고 계속 이것저것 더 추가 해서 하는김에 해달라고 하는데

솔직히 윈폼으로 할때는 속된말로 좁밥이지 하면서 원하는데로 간김에 편리기능을 구현해주고 했는데

와 WPF로 하니깐 너무 힘들어서도 특히 제가 아직 손에 안익어서 그런걸수도 있지만
속도가 너무 안나옵니다

행님들이 말한 유지보수 확장성 잘 알겠지만,
아 이게 어쩔수 없이 양산 장비고 시간이 곧 돈이다 보니깐 속도도 안나오고 윈폼보다 어렵고 스트레스는 많아지고… 미쳐 버릴것 같네요

저희 회사 젊은 직원들이 강력 추천으로 WPF로 넘어가지 라고 해서 패기가 좋구만 하고 넘어 왔지만(그냥 전 그때 별거 아닐꺼야 라고 솔직히 생각함)

이게…음 뭐랄까 윈폼 쓸때는 이미 개발 회의 하면서 머리에 구상하고 앉아서 몇주 뚝딱하면 구현이 됬는데 물론 로직부분이 어렵지만 UI 부분은 윈폼은 쉽잖아요

WPF로 넘어오고 나서 와 간단한 ListView, Pase 등 생각보다 음… 어떻게 하지? 이런 생각도 들고 구현 속도가 느려서 음…

미치겠어요…

  1. 양산 장비 cs 업무 중 속도가 너무 느리고 예전 만큼 퍼포먼스가 안나온다
  2. 장비 제어 쪽에서는 이게 맞나?
    이런 생각이 요즘 들고 있어요

제가 아직 익숙하지 않고 제대로 파악하지 않아서 그런 걸까요?

만약 장비 제어쪽에서 실무에서 사용하고 계시다면 사용하고 계신 행님들 조언쪽 부탁드립니다.

3개의 좋아요

저희는 디자이너 없이 한명이 디자인 부터 개발까지 다하는데 다른 곳도 그런가요?
진짜 몰라서 여줘봅니다 행님들

2개의 좋아요

개인적으로 구현속도가 느리신 것은 절대적으로 숙련도 부족이라고 생각합니다.

WPF가 익숙해지면 솔직히 DataGrid 달랑 하나 올리는 프로그램이라고 하더라도 WPF가 훨씬 구현속도가 잘 나옵니다. (저의 경우에는)

XAML을 통한 디자인의 커스터마이징은 말할 것도 없죠. Windows Forms는 디자인을 뭉개고 다시 만드는 작업을 CS 파일로 해야하지만 WPF는 Custom Control의 강력한 기능으로 구조적으로 UI를 정의할 수 있습니다.

게다가 기본적으로 하드웨어 가속 옵션을 가져가기 때문에 렌더링 시 GPU를 사용하기에 UI 상호작용에도 훨씬 빠릅니다. (물론 Windows Forms도 Control 단위마다 개별로 GPU를 쓸 수는 있습니다만 WPF와 다르게 기본적으로는 GPU를 안씁니다)

혹 XAML과의 바인딩에 Reflection이 들어가기에 성능적에서 느리다는 의견이 보이는데 이는 제가 보기엔 Reflection이라는 키워드만 보고 잘못 소문이 퍼진게 아닌가 싶습니다. Reflection이라고하더라도 최초에 IL을 런타임에서 생성할 때나 OverHead인 부분이고 이미 생성된 IL코드를 재활용하여 호출할 때는 일반적으로 stub을 호출하는 정도라 더이상의 추가 성능이슈가 없는 것으로 알고있습니다.

XAML에 대한 숙련도가 부담이라 Windows Forms로 가셔야하면 그건 그거대로 틀린 선택은 아니지만, XAML을 통해 UI가 분리되기 때문에 코드를 관심사별로 분리하여 볼 수 있기에 솔직하게 MVVM을 적용하지 않더라도 WPF를 안 쓸 이유는 없다고 생각합니다.

그리고 Reflection에 관해서는 이마저도 싫은 분들이 있어서 Windows 전용 App 이라고 하더라도 Avalonia로 가시는 분들도 있는 것으로 소문을 들었습니다.

그리고 태초에는 WPF와 VS Blend 디자이너가 함께 존재해서 분업했다고 알고 있지만 현재는 VS의 강력해짐을 통해 VS Blend가 사실상 Pen을 통한 Drawing을 직접하는 것이 아니라면 무용지물이라 다 퍼블리셔 계열로 넘어간 것으로 알고 있습니다.

그래서 NC Soft 같은데 계시는 몇몇의 극소수 WPF 산업 디자이너가 아니라면 혼자 전부 다하시는 것이 맞다고 생각합니다.

개인적인 견해이오니 참고만 해주시고, 힘내시길 바랍니다.

6개의 좋아요

윈폼 디자이너는 디자인 도구로 생산성이 뛰어 납니다.
WPF 의 Xaml 은 디자인 언어로 디테일이 뛰어 납니다.

쉽게 표현하자면, 생산성이 뛰어난 도구를 사용하다가 일일이 수작업을 하니 속도가 느려진 것이죠.

더군다나, Xaml 이나 Html 등의 디자인 언어는 일정 정도 수련이 필요합니다.
아무런 수련 없이 들이댈 수 있는 분야는 절대 아닙니다.

사용법을 익히는 것에도 시간이 많이 들고, 보기 좋은 결과물을 내놓기까지는 더 많은 수련이 필요합니다.

또한, 이는 UI 도구에 국한된 문제라서 MVVM 등 디자인 패턴이나, IoC 등 Solid 원칙의 적용 등에 익숙해지는 것은 또 다른 문제입니다.

디자인 언어, 대표적으로 Html 을 쓴 다면, 디자인만 하는 디자이너도 별도로 있고, 그 디자인을 코드로 구현하는 사람도 별도로 있는게 보통입니다.

회사의 주력 상품이 뛰어난 외관에 높은 점수를 주지 않는다면, 굳이 추가적인 자원을 투입할 필요가 없을 것입니다. 더군다나, 윈폼과 같이 적당한 UI를 쉽게 뽑아 주는 도구를 사용 중이라면, 매우 불필요한 투입으로 여겨질 수 있습니다.

그런 제한된 자원 상황에서 디자인 언어를 채택하는 것은 쉽게 결정될 문제가 아닙니다만, 열악한 직장 문화에서는 그러한 점도 쉽게 간과되기 일쑤입니다.

개인적으로 로직에 투입되는 노력이 1이라면, UI에 투입되는 노력은 3 정도 되는 것 같습니다.

이렇게 생각하는 원인은 기술 자체의 난이도 보다는 UI는 본질적으로 구현의 변동성이 매우 높기 때문인 것 같습니다.

자원이 부족하다면, 효율성에 머무르는 것이 하나의 방법입니다.

5개의 좋아요

제가 여러 회사를 다녀보진 않아서 신뢰도가 높은 답변은 아닐 것 같습니다만,
일단 현재는 WPF를 주력으로 사용하고 있고, 말씀하신대로

하고 있습니다. :cry:

그렇지만 계속 하면 할수록 재활용 할만한 리소스가 계속 쌓여서 처음에는 힘들어도 나중에는 업무 처리 속도가 단축되었습니다.

그리고 퍼포먼스에 대한 제 개인적 경험에 의한 의견은, ‘숙련도에 따라 달라진다’ 라는 것이 아닐까 싶습니다.
이제는 WinForms 보다 WPF를 사용한 기간이 더 많아져서 그런지 WPF가 더 편하네요~
모든 학습의 기본 중의 기본이 반복 아니겠습니까? :grin:

그런데 장비 제어쪽이라니 반갑네요~ 그것만 하는 것은 아니지만 저도 비슷합니다. ㅎㅎ
2D든 3D든 일단 WPF에 장비 그려 놓고, 수치값 바인딩이나 상태에 따른 색상 바인딩, Transform 파라미터 바인딩을 이용한 이동, 회전, 크기 등의 실시간 변형 처리를 해 놓으면 고객 분들이 아주 좋아하십니다.

그렇지만 업무 처리 퍼포먼스가 잘 나오지 않는다면 이런 디테일은 버리는 것이 현명한 선택일 수도 있을 것 같습니다. 디테일 하나 살린다고 여러 업무 처리를 지연시켜가며 진행하는 것은, 고객으로부터 돈을 받고 일을 하는 사람으로서는 하면 안될 것 같기도 합니다. 그럼에도 불구하고 디테일을 고집해야 한다면 개인 시간을 갈아 넣을 수밖에 없겠지요…

아니면 기본 베이스는 WinForms로 만들되 장비 디테일을 넣은 부분만 WPF로 만들어서 ElementHost 위에 얹어 놓는 것도 하나의 방법일 것 같습니다. 섞어 쓰는거죠~

음… 뭔가 명쾌한 답은 안 나오는군요… :cry:

8개의 좋아요

제가 WPF 프로젝트를 할 일이 있어, 국내 WPF관련 커뮤니티가 있으려나 검색해보다가 닷넷데브에 왔네요. 예전에도 몇 번 방문한 기억이 있는 사이트 였는데…
댓글 달려고 좀 전에 회원가입 했습니다.
제가 7~8년 전 쯤, 어느기업에서 윈폼개발자 대상으로 WPF를 강의한 적 있는데, 짧은 교육기간으로 인해 적응을 못하더라구요. 그 때 생각나서 댓글 답니다.
MVVM 디자인패턴을 적용했다면 DI와 함께 완전히 데이타바인딩으로 코드와 뷰를 분리해야 복잡도가 증가하지 않아요. 생산성은 그러한 구성이 익숙해졌을 때 나옵니다.
제가 코드 리뷰를 해드릴 수 있으니 도움 필요하면 얘기하세요. 대신 저는 장비제어쪽 분야에 관심이 있으니 그 분야에 대해 업계 분위기라던지 이런 저런 얘기 해 주세요.

4개의 좋아요

말씀만이라도 참 감사하고 힘이 납니다 감사합니다 행님ㅋㅋㅋ

장비 업계는 요즘은 조금 미국 아시잖아요… 하… 트럼…

하이튼 그양반 덕분에 국내 장비 업체들은 반도체, 2차전지 쪽은 조금 힘든 상황입니다

디스플레이 쪽은 3사를 제외한 중견,중소 쪽은 디스플레쪽은 안하시는게 좋을 듯 합니다 거의 다 중국쪽으로 넘어 가서 제가 생각하기에는 메리트가 없는 것 같습니다

전체적인 분위기는 1~10이라면 요즘은 3 또는 4? 정도로 힘든 상황입니다

사람인만 들어 가서 보셔도 장비 제어는 기본 80 ~ 100페이지 정도 있었는데 요즘은 20 ~ 30 페이지로 많이 줄어든 시점입니다

투자부분도 현저히 줄어 든 시점이고요

2개의 좋아요