2011-03-03 8 views
3

ASP.Net MVC 2.0의 문맥에서, 이미 모델이있을 수 있다면 DTO (데이터 전송 객체)를 사용해야하는 이유는 무엇입니까? 웹 서비스가 asp.net에 DTO를 반환하고 일부 팩토리 클래스를 사용하여 모델로 변환되는 예제를 보았습니다. 이 웹 서비스는 데이터베이스와 대화하고 데이터를 DTO 형식으로 반환합니다.ASP.NET MVC에서 DTO 사용

이전 프로젝트에서 모델 객체를 내 컨트롤러로 반환하는 데 사용되는 데이터 컨텍스트 및 리포지토리를 사용하여 DB와 통신하는 데 사용되었습니다. 그런 다음이 모델을 해당 뷰로 전달했습니다. 이게 더 간단하지 않니? DTO 패턴의 정확한 사용법을 알 수 없습니다.

답변

5

모델은보기가 코딩되는 논리적 데이터 모델을 나타냅니다. 이것은 1 : 1을 데이터 소스와 매핑 할 수도 있고하지 않을 수도 있습니다. Model == DTO 인 상황에서는 DTO가 다소 중복되는 것에 동의합니다.

MVC를 사용한 대부분의 상황에서 단일 소스를 갖는 경우는 거의 없었으며 논리적 뷰를 물리적 소스와 분리하려는 욕구가 부족했습니다. 예를 들어 나는 종종 하나의 논리적 모델을 만들기 위해 여러 서비스와 데이터베이스 호출을한다.

+0

설명해 주셔서 감사합니다! 그런 경우 여러 소스에서 DTO를 만들 때이 dto 자체를 사용하여 뷰를 바인딩 할 수 있습니까? 또는이 목적으로 1 : 1 데이터를 모델에 복사하면됩니다. –

+0

우리는 DTO 인스턴스를 가리키는 필드를 가진 복합 모델 구조, DTO 주위의 래퍼를 가리키는 복합 모델 등 몇 가지 명확한 패턴이 나타났습니다. 배열을 사전으로 변환하는 작업, 다중 DTO를 사용하여 모델에 넣을 객체를 생성하는 복잡한 팩토리 등이 있습니다. 우리는 모델을 뷰 개발자에게 공개하고 문서화하고자하는 풍부한 프로그래밍 API로 생각했습니다. – stephbu

관련 문제