일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- tensorflow
- Python
- windows10
- 자본주의
- 크롤링
- M2M
- pymssql
- rs485
- 텐서플로우
- 장고
- MSSQL PYTHON
- 파이썬
- matplot
- django
- oracle
- PYTHON MSSQL
- 윈도우10
- sql developer
- Serial
- Visual Studio Code
- vscode
- MX Component
- scrapy
- MEAN Stack
- MSSQL
- 티스토리 초대장
- 오라클
- rs422
- c#
- 딥러닝
Archives
- Today
- Total
안까먹을라고 쓰는 블로그
[C#] MVP, MVM, MVVM 비교 본문
반응형
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
끝~
![](https://t1.daumcdn.net/keditor/emoticon/friends1/large/045.gif)
반응형
'Language > C#' 카테고리의 다른 글
[C#] ASP.NET 튜토리얼 (0) | 2025.02.08 |
---|---|
[c#] WPF 튜토리얼 (0) | 2025.02.08 |
[Trouble Shooting] OpenCvSharp - OpenCvSharp.OpenCvSharpException: Failed to create VideoCapture (0) | 2023.04.12 |
[C#] OpenCV - IP 카메라 연동(Feat. RTSP) (0) | 2023.04.05 |
C# DataTable에서 특정 컬럼만 Select해서 DataTable 만들기 (0) | 2022.07.06 |
Comments