2012-05-02 3 views
0

애완 동물 프로젝트에 CQRS를 적용하려고합니다. 예를 들어 FoodCourse입니다.컴플렉스 유형 명령 내

코스는 다양한 음식으로 구성되어 있습니다.

AddFoodToCourseChangeFoodQuantityInCourse 등 ... 나는 CourseCommandHandler을 작성하는 경우

나는 과정을 수정하기 위해 의존성으로 ICourseRepository을 얻을 것이다하지만 간단한 명령을 것이다 유지 :

내 설계에서

나는 그 명령이 FoodId 대신에 CourseId 및 FoodId 속성이 있어야합니다.

처리기에서 ID 만 관리하고 저장소에서 모든 관련 데이터를 가져 오지 않겠습니까?

내가 이해 한 경우 제대로 내 응용 프로그램이 워크 플로를 따라야합니다

사용 ReadModel =>domain object 작동 및 repositories =>Domain objects 인상 이벤트와 객체를 저장 명령을 만들고>CommandHandler 명령을 소비 = 버스에 보내 버스에 게시 =>EventHandler 이벤트를 소비하고 난 단지 ID를 관리하고 저장소에서 모든 관련 데이터를 얻거나하지 가정 핸들러에서 ReadModel 객체

답변

2

을 수정?

수정. 명령 처리기는 명령을 처리하는 데 필요한 리포지토리 및 기타 종속성을 주입하는 곳입니다. 앞에서 말했듯이 명령은 엔티티 자체가 아닌 ID를 사용하여 엔티티를 참조해야합니다. 이것은 명령이 직렬화되어 응용 프로그램 경계를 넘어 전달되기 때문입니다. 워크 플로우도 정확합니다. 피험자에 대한 심층 치료를 위해 here을보십시오.

+0

내가 필요한 각 저장소를 주입해야한다고 말하면 대신 엔티티로드/저장을 허용하는 고유 저장소를 만들어야합니다. –

+0

일반적인 CQRS 저장소는 GUID로 입력 된 다양한 유형의 이벤트를 저장할 수 있지만 저장소 구현은 사용자에게 달려 있습니다. – eulerfx

관련 문제