간단한 게임의 도메인을 모델링하고 싶었습니다.DDD 디자인 통신 집계
우리에게는 다른 건물을 살 수있는 선수가 있으며, 주식도 있고 선수는 앞으로 추가 할 다른 것들을 가질 수 있습니다. 하지만 지금은 빌딩과 주식에만 집중하고 있습니다.
나는 Player, PlayerBuildingManagment, PlayerStock의 세 가지 집계 루트로 나누기로 결정했습니다. Stock과 PlayerBuildingManagment가 Player와 매우 관련되어 있기 때문에 적절한 부분인지 확실하지 않으므로 mayby는 집계되지 않아야합니다. 반면에 나는 거대한 집계를 하나 만들고 싶지 않습니다. 모든 경우에 재고 관리가 필요하기 때문에 건물 관리가 한 명의 플레이어에 의해서만 수정 될 수 있기 때문에 병행 성은 문제가되지 않습니다. 플레이어가 이렇게 건물을 살 곳
플레이어
증권 1 AddToStock() 2 TakeFromStock()
PlayerBuildingManagment 1. AddBuilding는()
지금은 프로세스를 구현해야합니다 필요합니다
- 자원이 충분한 지 확인하고 재고가 있는지 확인하십시오. .TakeFromStock()
- 건물 PlayerBuildingManagment.AddBuilding()을 추가해야합니다.
- 데이터를 유지합니다.
나는하지만 우리가 하나의 트랜잭션 내에서 두 개의 집계의 상태를 수정해서는 안 알고에서 하나의 서비스 함수 내에서이 프로세스를 실현할 수 있습니다. 이 의사 전달이 어떻게 실현되어야한다고 생각하니? 아마도 플레이어 집계 내에 재고 및 건물 관리를 구현해야합니다. 또는이 프로세스를 위해 일부 프로세스 관리자를 생성하십시오. 좀 실마리를주세요.
경합이없는 단일 스레드 프로세스의 경우 경계가 무엇인지는 중요하지 않습니다. 단일 트랜잭션에서 여러 집계를 수정하지 않는 규칙은 여기에없는 트랜잭션 실패 수를 줄이는 것입니다. 또한 가능한 경쟁 조건이 없으므로 잠금 메커니즘이 필요하지 않습니다. – plalx