혹시 mvvm 패턴에 대해 쉽게 알려주실 분 계시나요

이번에 WPF를 공부하면서 자료를 찾아보는데 MVVM패턴을 이용해 개발하라는 사람들이 있더라고요…
혹시 MVVM에 대해서 쉽게 알려주실 수 있나요?

좋아요 1

먼저 MVVM의 정의부터 이해하면 좋습니다. 모든 정보의 취합은 구글링을 통해 할 수 있습니다.

키워드 “MVVM”

  1. 소프트웨어 아키텍처 패턴의 일종이다. (유사 패턴 MVC)
  2. 목적: GUI 코드를 비즈니스 로직 또는 백-앤드 로직 으로부터 분리시켜 뷰가 어느 특정 모델 플랫폼에 종속되지 않도록 한다.
    ※ 즉, 화면구현과 로직을 분리 한다는 것입니다. 화면구현을 View라고 하고 로직을 ViewModel-Model이라고 합니다.
  3. 여기서 Model은 데이터 구조, 그리고 데이터의 로직입니다.
    ※ 즉, 화면구현(View)와 로직구현(Model)간 상호 결합도(코드가 서로 섞이는 것)을 막기 위해 증간계층인 ViewModel이 있는 것이고요,

image

ViewModel은 Model의 질의 및 그 결과를 View에 연결해주는 바인딩 개체를 보유하게 됩니다. 그리고 ViewModel은 화면의 수명과 동일한 수명을 갖는 것이 일반적입니다.

MVVM에서 사용하는 기술은 다음과 같습니다. 왜 이런 기술이 필요한지는 이해를 통해 쉽게 납득할 수 있습니다.

  1. 데이터 바인딩
  2. DI(Dependency injection) 와 IOC(Inversion Of Control)
  3. 데이터 쿼리 (LINQ)

  4. 위의 기술은 구글링을 통해 정의와 개념을 알 수 있습니다.

그러나 MVVM의 목표와 핵심 정의는 간단한 편입니다.

  1. View와 Model간 상호 직접 참조를 없앤다.
  2. 이를 달성하기 위해 중간 계층인 ViewModel이 필요한 것
  3. View에서는 화면 구성(XAML) 및 화면동작(XAML의 Trigger), 화면 동작코드(XAML.cs)로 구성됨
  4. Model에는 모델 엔티티 및 모델 로직만 구성됨
  5. ViewModel은 실제 화면에서 모델이 사용될 때 모델 인스턴스 할당 및 모델 쿼리 그리고 그 결과를 뷰에다가 노출 (※ 중요 포인트는 ViewModel이 View를 참조하는게 아니라, View가 ViewModel을 참조하는 것)

그리고 이러한 MVVM 구조를 좀 더 편하고 잘 쓰기 위해 DI및 IoC라는 개념 및 기술이 사용됩니다.

좋아요 5

그런데 저는 단계적으로 익숙해지는 것을 추천 해요. WPF를 처음 접한 경우, WPF 컨트롤의 특성을 먼저 파악하는게 어떨까 합니다. 윈폼이랑은 좀 많이 다르거든요. XAML 자체에 대한 이해는 잠시 뒤로 미루고, XAML에 컨트롤 하나씩 배치한 후 코드에서 접근할 수 있도록 x:Name으로 이름을 부여한 뒤, 해당 컨트롤의 속성과 기능을 숙지해 나가는거죠. 심지어 MVVM라던가 또는 아키텍처 패턴을 이용하지 않더라도 윈폼처럼 WPF도 활용할 수 있습니다.

이것이 숙달되면 그 다음 XAML에 집중해서 익숙해지는 거죠. XAML은 우리가 생각하는 것 이상으로 파워풀 합니다.

XAML이 익숙해 지면 그다음에 비로서 MVVM을 접근 하는게 좋지 않나 생각해봅니다.

좋아요 3

그렇군요! 감사합니다 이해가 잘되었습니다!!

좋아요 1