Wpf mvvm 설계 관련 질문 드립니다

WPF를 공부하면서 MVVM을 이해하고 있는데, 궁금한 점이 있습니다.

  1. 처음부터 MVVM을 적용해 설계하는게 일반적인가요? 아니면 Model-View로 설계하다가 필요할 때 리팩토링하나요?
  2. Model-View 구조를 MVVM으로 리팩토링하면 시간이 많이 소모되나요?
  3. 다른 UI, 플랫폼에도 MVVM을 흔히 적용하나요?
  4. 개인적으로 생각했을 때, 어느 정도 규모 이상일 때 MVVM을 적용해야 한다고 보시나요?

감사합니다!

3개의 좋아요

먼저 경험에 근거한 개인적인 의견이므로 참고만 했으면 좋겠습니다.

  1. 필요할 때 리펙토링 하기에는 경험상 Model-View간의 결합도 때문에 힘들었던 경험입니다. 처음부터 적용하기를 추천합니다.
  2. 네. 물론 규모에 따라 다르겠지만, 제 경험상 오래 소요되었습니다.
  3. 네 WPF 뿐만 아니라 다른 UI, 플랫폼에도 적용할 수 있고 추천합니다.
  4. 규모로 결정한다기 보다는 페러다임을 받아드리고 그 장점을 경험했느냐의 문제인 것 같습니다. View - ViewModel간 바인딩은 익숙해지면 편합니다. 그리고 Model에 대한 명확한 규정은 반드시 필요한 것이죠. 간단히 내용증명(샘플코딩)이 아니라면 규모와 상관없이 MVVM을 적용해도 된다고 생각합니다.
3개의 좋아요

반대로 이런 생각을 해봅니다.

애초에 중간계충인 ViewModel이 필요한 이유에 대해 생각해봅시다. 논리를 화면에서 분리해서 가령, 화면만 바꾸고자 할 때 논리 로직을 아무것도 안건드리게 하기 위함인데 (역도 물론 해당됩니다) 그럴일이 만약에 없다면? View-Model로 개발해도 문제가 없지 않을까요?

4개의 좋아요

조금더 부연 설멍을 하자면, MVVM을 적용하기 위해 학습할 내용은 IoC와 바인딩, 그리고 모델을 어떨게 효과적으로 질의 할것인가에 대한 기술 또는 고민 정도인데,
만약 혼자서 개발하는게 아닌 단체가 MVVM을 학습하며 개발하는것이라면 약간의 학습곡선이 필요합니다. MVVM 자체의 개념은 어렵지는 않아요.

MVVM에 대한 경험은 모듈화에 대한 좋은 학습이기도 합니다. 잘 디자인 됐다면, ViewModel은 View와 의존도가 0%이어야 하고, Model은 ViewModel과 의존도가 0%가 되어야 합니다. 이것을 강제하는 좋은 방법은 개별 별도의 프로젝트로 생성하고 View가 ViewModel 프로젝틑 참조라고 그 역참조를 하지 않고요 ViewModel이 Model을 참조라고 그 역참조를 하지 않게 프로젝트 참조설정을 하고 시작 하는 것입니다.

5개의 좋아요

@dimohy 님의 의견에 공감하고 여기에 어줍잖은 개발자의 의견을 보탭니다.

WPF 는 처음부터 MVVM 을 메인 아키텍처 패턴으로 지정하고 개발된 개발 플랫폼이죠.
따라서 플랫폼 차원의 MVVM 패턴 지원이 현존하는 여느 개발 플랫폼 중 가장 잘 되어 있다고 생각합니다.
그렇기 때문에 아주 간단한 프로그램이 아니라면 MVVM 을 적용해 솔루션을 만들어 나가는 것이 가장 효율적이라고 생각합니다.
(패턴을 적용하면서 얻는 이점이 다른 트레이드 오프를 훨씬 상회하고도 남습니다.)

물론 MVVM 에 대한 개념이 확실하지 않거나 WPF 에서 어떻게 MVVM 을 사용해야 하는지에 대한 러닝 커브는 존재하지요. 이런 학습부분이 그나마 큰 허들라고 생각합니다.
그런데 보통은 다른 허들보다 이런 러닝 커브를 감당하지 못해 MVVM 적용을 못하는 사례가 많더군요.(개인적인 경험에서 나온 생각입니다. ㅇㅅㅇ…)

하지만 WPF 쓰면서 그런 허들 때문에 MVVM 을 사용하지 않을거라면… 그냥 하던대로 윈폼을 쓰면 되지 않을까요? 익숙한 게 최고 아니겠습니까 ~ㅁ~
(개발자에겐 생산성이 중요하니까요… 속닥속닥)

6개의 좋아요

답변 감사합니다. 영상 보고 틱택토 코드 보면서 하나하나 이해하기 힘들어서 꼭 해야 하나… 했지만, 역시 배워야겠네요 ㅠㅠ

1개의 좋아요

요즘 MVVM 게시글만 보면 너무 반가워요.
처음이라면 간단하게 MVVM 샘플 만들어서 테스트해보시는 것을 추천드립니다.
그 샘플을 이용하여 다른 프로젝트에 적용해 보고 판단해도 좋을 것 같아요.
간단한 MVVM 샘플은 금방 만드니까요.

3개의 좋아요
  1. 처음부터 해요.
  2. 규모와 상관없이
    Mvvm에 욕심있으실때 하는게 좋은듯요.
    다른 놈들도 비슷한 컨셉들이 많아서…

저도 gui 클라이언트단에서 mvvm 했었는데요. 요즘에는 mvvm보다 커맨드에 중점을 두는것을 선호합니다.

약간 요련 느낌입니다.
Plastic/sample

3개의 좋아요