ViewModel과 모델의 변환 로직은 C# 웹 애플리케이션에서 데이터 관리를 효율적으로 하는 데 매우 중요합니다. ViewModel은 UI와 밀접하게 연결되어 사용자와 상호작용하는 데이터를 담고, 모델은 비즈니스 로직과 DB 처리에 집중합니다.
1. ViewModel과 모델 분리의 중요성
ViewModel을 따로 설계하면 UI 변경에도 비즈니스 로직이 영향을 받지 않아 유지보수가 용이합니다. 또한 보안 측면에서 민감 정보를 숨길 수 있어 안전합니다.
2. 변환 로직 설계 방법
변환은 일반적으로 다음 두 가지 방법으로 설계합니다.
- 1) 생성자 또는 팩토리 메서드 사용
- 2) AutoMapper 같은 매핑 라이브러리 활용
3. 간단한 변환 예제
public class UserModel
{
public int Id { get; set; }
public string Username { get; set; }
public string PasswordHash { get; set; }
}
public class UserViewModel
{
public int Id { get; set; }
public string Username { get; set; }
public UserViewModel() { }
// 모델에서 뷰모델로 변환
public UserViewModel(UserModel model)
{
Id = model.Id;
Username = model.Username;
}
// 뷰모델에서 모델로 변환
public UserModel ToModel()
{
return new UserModel {
Id = this.Id,
Username = this.Username
// PasswordHash는 ViewModel에서 다루지 않음
};
}
}
위 예제처럼 중요한 데이터는 모델에만 두고, UI에 필요한 속성만 ViewModel에 둡니다. 변환 메서드를 통해 각 타입 간 안전하게 변환할 수 있습니다.
4. 정리
뷰모델과 모델간 변환 로직을 명확히 구분하고, 필요한 데이터를 최소한으로 옮기는 설계가 유지보수와 보안에 도움이 됩니다. AutoMapper 같은 라이브러리를 활용하면 코드가 더 간결해집니다.
'C#' 카테고리의 다른 글
| C# 동적 프로퍼티 생성 및 바인딩 (0) | 2026.06.23 |
|---|---|
| C# 코드 분석 도구(Roslyn Analyzer) 제작하기 (0) | 2026.06.22 |
| C# 이벤트 기반 비동기 패턴(EAP) 사용법 (0) | 2026.06.22 |
| C# Thread.Join과 Thread.Sleep 차이와 활용 (0) | 2026.06.19 |
| C# 대리자 체인 관리와 예외 처리 (0) | 2026.06.19 |