2014-09-08 3 views
2

2 diff로 모델링 될 Order 엔티티가 있다고 가정 해 보겠습니다. 전자 상거래 응용 프로그램의 BC하나의 엔티티, 다른 데이터베이스가있는 다양한 바운드 컨텍스트의 여러 모델

첫 번째 BC는 Order Placement입니다. 이 BC는 고객이 다른 웹 사이트에서 접수 한 모든 주문을 수집하고 유효성을 검증하며 상태가 Placed 또는 Rejected 인 주문으로 해당 데이터베이스를 채 웁니다.

제 2 기 BC는 Shipment입니다. 이렇게하면웨어 하우스에있는 직원이웨어 하우스를 떠나 데이터베이스에 Shipped이라는 주문을 표시 할 수 있습니다. 즉, 스캐너는 ShipOrder이가 거기에있을 것이다하고자 할 때 이제 모두 수익 증권 처음에 비어있는 다른 데이터베이스를 사용하기 때문에

Placed 있었다 주문 Shipment BC 통보 할 필요가있을 것이다 Shipment BC.

내 초기 접근 방식은 OrderOrder placement BC에 배치하고 Shipment BC 해당 이벤트에 등록하고 배치 모든 주문에 대한 데이터베이스에서 해당 Order 엔티티를 생성이되면 도메인 이벤트를 만드는 것이 었습니다.

그러나 다른 데이터베이스에서 데이터를 복제한다는 느낌을 멈출 수는 없습니다.

내 두 번째 방법은 Order Placement에게 주문이 Order 엔티티 Shipped되는 때마다 요청하는 것입니다,하지만, 난 여전히 경우 선적의 실패의 실패를 주문의 상태를 유지해야합니다.

DDD POV에서 더 좋은 방법이 있습니까?

답변

3

귀하의 첫 번째 접근 방식은 제 생각에 완벽하게 훌륭합니다. 데이터를 복제하지는 않습니다. 이미 알았 듯이 다른 컨텍스트의 데이터이기 때문입니다. 서로 다른 맥락에서 같은 데이터는 다른 것을 의미합니다.

+0

+1 더 나은 정보를 말하지 못했습니다. 나쁜 것. 하나의 죄책감이있는 한. 정보와 다른 문맥을 소유 한 텍스트는 단지 그것을 복제합니다. –

2

Vernon Vaughn은 자신의 저서«도메인 기반 디자인 구현»에서 다음과 같이 지적했습니다. "종속 시스템이 이미 로컬 시스템에 설치되어있을 때 더 큰 자율성을 얻을 수 있습니다. 일부는 이것을 전체 캐시 DDD를 사용할 때 일반적으로 그렇지는 않지만 대신 로컬 모델에서 필요로하는 최소한의 상태 만 유지하면서 외부 모델에서 변환 된 로컬 도메인 객체를 만듭니다. " 데이터를 복사하는 동안 괜찮습니다. 다른 BC가 필요로하는 유일한 데이터입니다. 그러나 정확한 사본을 사용하면 모델링 문제의 징후 일 수 있다고 언급합니다.