0

이 이름 지정 문제에 대한 해결책을 찾으려고했지만 웹에서 비슷한 사용법을 찾을 수 없었습니다. 도메인 모델에 디자인 플로우가 있거나 단순히 "ValueObjects"라는 적절한 이름을 사용하지 않을 수도 있습니다.DDD에서 도메인 모델 내에서 사용 된 이러한 유형의 객체는 무엇이라고합니까?

아래를 참조하시기 바랍니다 ..

우리는 CQRS 패턴 도메인 기반 설계를 사용합니다. 아래는 도메인 모델이 설계된 방법입니다.

enter image description here

P.S는 관련이 있지만 정보를하지, 우리의 응용 프로그램은 ASP.NET MVC 사용하고 컨트롤러 comminicate는 서비스 계층을가는 가지. DTO (데이터 전송 객체)는 위의 다이어그램에없는 MVC 컨트롤러에 전달/전달됩니다.

"ValueObject"를 올바르게 사용하지 않는 것이 문제입니다. Martin Fowler의 정의에 따르면 ValueObject는 ValueObject의 진정한 표현이 아닙니다. http://martinfowler.com/bliki/ValueObject.html

예를 들어 ValueObject에는 ID가 있습니다.

public class NoteValue 
{ 
    public int Id { get; set; } 
    public string NoteName { get; set; } 
    public string NoteNumber { get; set; } 
    public DateTime NotExpiry { get; set; } 
} 

이러한 ValueObject는 단순히 명령, AggregateRoots 및 도메인 엔터티간에 데이터를 전달합니다. 예를 들어, AggregateRoot는 도메인 엔티티를 기반으로 ValueObjects를 생성하고 해당 ValueObject를 명령 계층에 반환합니다.

다음은 완전한 구현이 아닙니다. 그냥 간단한 예는 상호 작용을

AggregateRoot 확장 방법을 표시합니다 :

private static IList<NoteValue> ToValueObject(this ICollection<Note> source) 
{ 
    var values = new List<NoteValue>(); 
    if (source != null) 
     source.ForEach(i => values.Add(i.ToValueObject())); 

    return values; 
} 

AggregateRoot :

Public IList<NoteValue> GetNotesValues() 
{ 
    return this._notes.ToValueObject();   
} 

명령 : 우리는 적절한 이름을 찾기 위해 고심하고있다

var motesValues = notesAggregate.GetNotesValues(); 

이러한 소위 말하는 "ValueObjets". 그들은 DTO 인 것처럼 보이지 않으며 우리는 서비스 계층에서 사용되는 DTO와 구별 할 수 있기를 원합니다. 특히 우리는 이러한 유형의 객체 (ValueObjects)를 호출 할 수있는 적절한 이름을 알고 자합니다. 어떤 생각을 크게 감사드립니다.

+1

Note와 NoteValue 사이를 변환하는 이유는 무엇입니까? Notes 객체를 캡슐화 된 응용 프로그램 서비스에 직접 노출하는 것만으로는되지 않습니다. – eulerfx

+0

왜 총 루트 및 저장소가 있습니까? 일반적으로 Aggregate Roots의 라인을 따라 사고를 시작하면 저장소는 AR과 함께 사라지거나 병합되는 경향이 있습니다. –

+1

DDD와 관련이 있다고 말하면서 인프라 아키텍처에 대한 내용 만 볼 수 있습니다. 도메인 모델은 어디에 있습니까? DDD는 도메인의 모델링에 관한 것이지 아키텍처의 특정 풍미에 관한 것이 아닙니다. 청서의 패턴은 단지 좋은 (좋은) 제안 일뿐입니다. 모두 구현할 필요는 없습니다. –

답변

3

이 질문이 귀하의 질문에 대한 답변인지는 모르겠지만 올바른 방향으로 귀하를 안내 할 수 있습니다.

댄 버그 Johnsson에 의하여 가치 개체에 대한 아주 좋은 이야기가있다 : http://www.viddler.com/v/6939b23

는 또한 효과적인 집계 디자인에 본이 버논의 논문을 살펴 있습니다 http://dddcommunity.org/library/vernon_2011

을 모두 모두 DDD에서 (특히 CQRS 적용 아키텍처 수준에서) 파악하는 데 시간이 필요합니다. DDD/Cqrs Google 그룹에 인내하고, 읽고 배우고, 가입하십시오.

+0

downvoter가 정교하게 신경 쓰는지 궁금해. 링크를 공유해 주셔서 감사합니다. –

+0

나는 또한 내가 가지고있는 질문에 대한 잠재적 인 해답을 찾을 것이다. – Spock