2011-02-01 5 views
6

도메인 이벤트를 사용할시기와 이중 발송을 사용하는시기와 혼동 스럽습니다. Udi는 도메인 이벤트를 사용하여 모델의 캡슐화를 유지하고 빈혈없는 디자인으로부터 벗어나도록 권장하지만, 도메인 이벤트는 작업이 수행 된 후가 아니면 갑자기 종료 된 후에 만 ​​사용할 수 있습니다.도메인 이벤트 대 이중 디스패치를 ​​사용하는 경우

예 : 일부 비즈니스 논리를 해결하면서 저장소에 액세스해야하며 그 값을 기반으로 도메인 이벤트를 발생시킬 수 있습니다. 하지만 문제는 비즈니스 로직을 해결할 때 모델이 저장소에 액세스 할 수있는 방법입니다. 여기 내 의견으로는 double dispatch을 사용할 수 있습니다.

위의 진술이 유효한지 알려주십시오.

답변

5

talking about this되었습니다.

나는 개인적으로 Szymon Pobiega와 aggree : 엄지 손가락의

내 자신의 규칙은 상호 작용 한 방법으로 할 수 IOC의의 바람직한 방법으로 (우디에 의해 desscribed로) 도메인 이벤트를 사용합니다. 그렇지 않으면 더블 디스패치를 ​​사용합니다. 예를 들어


- : 값을 기준으로 다음 내가 저장소에 액세스해야하는 일부 비즈니스 논리를 해결하는 동안, 나는 도메인 이벤트를 발생시킬 수 있습니다.

귀하의 집계 루트에는 작업을 수행하는 데 필요한 모든 것이 포함되어 있어야합니다. 뭔가를하는 동안 저장소가 필요하지 않아야합니다. 집계 루트는 트랜잭션 경계를 그립니다.

+0

엔티티 내에서 가치를 얻기 위해 외부 웹 서비스를 호출해야하는 경우가 있습니다. 어떻게 수행할까요? 이중 파견? 엔터티 내부, 공공 무효 DoSomething (IApplicationService 서비스) {... var rate = service.GetCurrentRate(); ....} – sawe

+0

@sawe와 동의 외부 웹 서비스를 사용할 때 다른 해결책이 없다고 생각합니까? 더블 디스패치는 유일한 옵션처럼 보입니다. –

관련 문제