3

나는 책과 기사에서 SO의 DTO에 관해 많이 읽었지 만 제대로 이해할 수 있는지 확실하지 않습니다.복잡한 DTO 구조

우리는 프로젝트에서 DTO를 사용하여 대부분 Domain Objects의 속성에 불과합니다. 이러한 이유로 복잡한 DTO 구조가 필요합니다. 서로를 확장하는 몇 가지 수업, 작곡, 집계 등이 있습니다.

질문이 더 일반적입니다.

다른 사람의 권한을 상속하거나 다른 사람의 권한을 참조하는 것이 옳습니까?

답변

3

은 공통 속성을 공유하는 경우가 바로 왜 안 다음, 다른 하나

에서 DTO를 상속 수 있나요? 그들은 즉

public class UserDto 
{ 
    public string Id { get; set; } 
    public string Username { get; set; } 
    public string Email { get; set; } 
    public AddressDto Address { get; set; } 
} 

public class AddressDto 
{ 
    public string AddressLine1 { get; set; } 
    public string AddressLine2 { get; set; } 
    public string City { get; set; } 
} 

기억 DTO의 바보 객체가 단순히 :

은 DTO는

이 잘못된 것은 확실히 없다

은 다음을 고려해야 다른에 DTO에 대한 참조가 (자신의 데이터를 가져오고/설정하는 것 외에는) 아무런 행동이 없습니다. 동일한 규칙이 아키텍처 관점에서 표준 클래스/객체와 마찬가지로 DTO에도 적용되므로 가능한 경우 언제든지 동일한 원칙을 따르지 않아도됩니다.

+0

나는 가능한 한 간단하게 dto를 유지해야한다고 생각했기 때문에 다른 dto에 대한 참조를 저장하는 대신에 예를 들어 속성을 저장해야한다. UserDto에서 나는 addressline1, addressline2 및 city를 가질 것이고, WCF와 함께 dto를 사용할 것이라고 생각할 것입니다. – hgulyan

+0

WCF 서비스에 사용되는 복잡한 DTO에 몇 가지 문제가 있음을 읽었습니다. 예 : 원형 참조. – hgulyan

+1

@hgulyan 물론 원한다면 저와 잘 어울리지 않을 것입니다. DTO 객체 자체 인 속성을 갖는 것은 충분히 수용 가능합니다 (선호한다고 말합니다). WCF는 직렬화를 잘 처리해야합니다. "* 복잡한 DTO의 ... 순환 참조와 관련된 문제가 있다는 것을 읽었습니다."누군가가 elses를 구현하고 의심 할 여지없이 다른 복잡성을 가진 모델을 발행했습니다. 당신은 그것이 작동하지 않을 것이라고 결정하기 전에 적어도 * 시도해야합니다. – James