관리 메뉴

안까먹을라고 쓰는 블로그

[C#] MVP, MVM, MVVM 비교 본문

Language/C#

[C#] MVP, MVM, MVVM 비교

YawnsDuzin 2025. 2. 8. 11:01

 

반응형

https://t1.daumcdn.net/cfile/tistory/271AC241558582EF0E

MVC, MVP, MVVM은 소프트웨어 아키텍처 패턴으로 역할 분리와 테스트 용이성을 목표로 하지만 C# 환경에서의 구현 방식과 활용 영역에서 차이를 보입니다. 각 패턴의 핵심 구조와 C# 프레임워크별 적용 사례를 중심으로 차이점을 비교해 보겠습니다.


1. 패턴별 기본 구조

MVC (Model-View-Controller)

  • Model: 데이터와 비즈니스 로직 처리 (예: Entity Framework를 통한 데이터 관리)
  • View: UI 표현 (ASP.NET의 Razor 뷰)
  • Controller: 사용자 입력 처리 및 Model/View 간 중재 (ASP.NET MVC의 컨트롤러 클래스)
  • 동작 흐름: 사용자 입력 → Controller → Model 업데이트 → View 갱신

MVP (Model-View-Presenter)

  • Presenter: View의 로직을 직접 제어하며, WinForms에서 주로 사용
  • View: UI 이벤트를 Presenter에 전달하는 수동적 역할
  • 특징: View-Presenter가 1:1 강한 의존성을 가짐
  • C# 적용 예시: Windows Forms 애플리케이션에서 Presenter가 데이터 바인딩 없이 수동으로 View 업데이트

MVVM (Model-View-ViewModel)

  • ViewModel: WPF/Xamarin의 데이터 바인딩을 활용해 View와 자동 동기화
  • 데이터 바인딩: INotifyPropertyChanged 인터페이스와 XAML 바인딩으로 코드 감소
  • 특징: View-ViewModel 간 1:N 관계 가능 (유연한 구조)
  • C# 적용 예시: WPF 애플리케이션에서 Binding 구문으로 UI 자동 갱신

 

2. 주요 차이점 비교

구분 MVP MVC MVVM
핵심 기술 Presenter의 명시적 인터페이스  Controller의 수동 제어 데이터 바인딩 (WPF/Silverlight)
View 의존성 Presenter에 완전 의존  Model 직접 참조 가능 ViewModel과 완전 분리
테스트 용이성 Presenter 단위 테스트 가능  View-Model 결합으로 낮음 ViewModel 독립 테스트 용이
C# 프레임워크 WinForms  ASP.NET MVC WPF, Xamarin, MAUI
코드 양 많음 (수동 이벤트 처리)  중간 적음 (자동 바인딩)

 

3. C# 환경에서의 선택 기준

  • MVP: 레거시 Windows Forms 유지보수 시 Presenter를 통한 로직 분리
  • MVC: 간단한 웹 애플리케이션(ASP.NET)에 적합하며 신속한 개발이 필요할 때
  • MVVM: 복잡한 데스크톱/모바일 앱(WPF/Xamarin)에서 데이터 바인딩과 유지보수성 강조

    예를 들어, WPF에서 MVVM을 사용할 경우 사용자 입력 처리 코드가 60% 감소한다는 사례가 있으며, ASP.NET Core MVC에서는 컨트롤러 단위 테스트가 어렵지만 MVP/MVVM은 Presenter/ViewModel을 독립적으로 검증할 수 있습니다

[참고사이트]
https://hackersstudy.tistory.com/71


끝~

 

반응형
Comments