본문 바로가기
기억을위한노트

MVC(Model-View-Controller)와 MVVM(Model-View-ViewModel) 아키텍처 차이점

by RNE21 2024. 10. 18.
반응형

MVC(Model-View-Controller)와 MVVM(Model-View-ViewModel) 아키텍처는 둘 다 소프트웨어 설계 패턴으로, 특히 사용자 인터페이스(UI)를 개발할 때 사용됩니다. 둘의 차이점은 역할의 분리 방식과 상호작용 방식에서 주로 나타납니다.

1. MVC (Model-View-Controller)

MVC는 3개의 주요 구성 요소로 나뉩니다:

  • Model: 데이터와 비즈니스 로직을 담당합니다. 데이터베이스와의 상호작용이나 데이터를 처리하는 역할을 합니다.
  • View: 사용자에게 보여지는 UI를 담당합니다. 화면에 데이터를 출력하고, 사용자의 입력을 받습니다.
  • Controller: Model과 View 사이의 중재자 역할을 합니다. 사용자의 입력을 받아 Model을 업데이트하고, 그 결과를 View에 전달하여 화면을 갱신합니다.

MVC의 동작 방식

  1. 사용자가 View에 어떤 동작을 입력합니다.
  2. Controller가 그 입력을 받아 Model을 업데이트합니다.
  3. Model이 변경된 데이터를 View에 전달하고, View는 이를 화면에 출력합니다.

특징: Controller가 View와 Model 간의 상호작용을 직접 관리하는 방식입니다.

2. MVVM (Model-View-ViewModel)

MVVM은 MVC에서 발전한 패턴으로, 특히 UI와 로직 간의 데이터 바인딩에 더 중점을 둡니다.

  • Model: 데이터와 비즈니스 로직을 담당하는 것은 MVC와 동일합니다.
  • View: 사용자에게 보여지는 UI를 담당합니다.
  • ViewModel: View와 Model 간의 중재자 역할을 하며, Controller와 달리 View와의 직접적인 데이터 바인딩을 관리합니다. ViewModel은 Model에서 데이터를 가져와서 가공한 후 View에 전달합니다. View와 ViewModel은 주로 데이터 바인딩을 통해 상호작용합니다.

MVVM의 동작 방식

  1. ViewModel은 Model에서 데이터를 가져와 View에 전달합니다.
  2. View는 ViewModel과 직접적으로 바인딩되어, 데이터가 변경되면 자동으로 UI가 갱신됩니다.
  3. 사용자의 입력도 ViewModel을 통해 처리되며, ViewModel은 Model을 업데이트합니다.

특징: View와 ViewModel 간의 양방향 데이터 바인딩을 통해 UI 갱신이 더 자동화됩니다. Controller 역할을 하는 ViewModel이 더 많은 역할을 하여, View와 Model이 느슨하게 결합됩니다.

주요 차이점 요약

  • 데이터 흐름 및 상호작용 방식:

    • MVC에서는 Controller가 모든 상호작용을 관리합니다.
    • MVVM에서는 View와 ViewModel 간의 데이터 바인딩을 통해 더 자동화된 상호작용이 이루어집니다.
  • 바인딩:

    • MVC에서는 View가 Controller를 통해 데이터를 갱신합니다.
    • MVVM에서는 View와 ViewModel이 직접 데이터 바인딩을 통해 연결됩니다.
  • 유연성:

    • MVVM은 View와 로직을 더 분리하고 자동화된 바인딩을 제공하기 때문에, UI 변경이 잦은 애플리케이션에 유리합니다.

결론

  • MVC는 간단하고 직관적이지만, View와 Controller 간의 상호작용이 직접적입니다.
  • MVVM은 더 복잡하지만 데이터 바인딩 덕분에 UI와 비즈니스 로직 간의 결합도를 낮춰 유연성을 높입니다.

따라서 UI의 복잡도와 데이터 바인딩 요구에 따라 MVC와 MVVM을 선택할 수 있습니다. MVVM은 주로 데이터 바인딩을 지원하는 프레임워크(WPF, Angular 등)에서 더 많이 사용됩니다.

반응형