4.3.4 DTO와 도메인 모델
코드를 보고 놀랐나요? 완벽하게 정상적인 C# DTO입니다. 이 코드는 들어오는 JSON 문서의 구조를 확인하고 값을 가져옵니다.
예제 4-11 예약을 위한 DTO. 프로덕션 코드의 일부분입니다.
(Restaurant/bc1079a/Restaurant.RestApi/ReservationDto.cs)
public class ReservationDto
{
public string? At { get; set; }
public string? Email { get; set; }
public string? Name { get; set; }
public int Quantity { get; set; }
}
Reservation 클래스의 모습을 어떻게 예상했나요? 왜 코드에 이름이 비슷한 클래스가 2개나 포함되었을까요? 둘 다 예약을 나타내지만 역할이 다르기 때문입니다.
DTO의 역할은 입력되는 데이터를 데이터 구조 형식으로 가져오거나, 데이터 구조를 출력 형태로 변환해주는 것입니다. DTO는 캡슐화를 제공하지 않으므로 다른 용도로는 사용할 수 없습니다. 마틴 파울러는 다음과 같이 이야기했습니다.