2011-03-01 6 views
0

누구든지 프리즘 이벤트 수집기에서 메시지를 더 이상 방송하지 않는 방법을 알고 있습니까?Prism Event Aggregator 또는 다른 인터셉트 명령 패턴을 사용하여 메시지를 취소 하시겠습니까?

좀 상당히 표준 명령/이벤트 메시징을 할 노력하고있어 - 나 시퀀스 다이어그램을 설명하자

Standard command/event messaging architecture

는 지금은 검증에 추가 할. 유효성 검증이 명령을 가로 채고, 적용 할 유효한 명령인지 판별하고, 브로드 캐스트를 취소하지 않는지 여부를 결정해야합니다. Standard command/event messaging with the possibility of command validation

사람은

public class Validator : ISubscribe<ChangePropertyCommand> 
    public void Handle(ChangePropertyCommand cmd) { 
    if(IsNotValid(cmd)) 
    _events.Cancel(cmd); 
    else 
     ... 
    } 
} 

또는 사용하는 또 다른 더 나은 패턴이의 라인을 따라 뭔가를 알고 있나요 : 본질적으로 이것은 내가 원하는 무엇인가?

+0

해당 ChangedPropertyCancelledEvent 이벤트는 StateChanger가 아닌 ChangePropertyValidator에서 오는 것입니까? –

+0

예, 명령이 취소되면 StateChanger는 절대로 명령을 보지 못합니다. –

답변

0

EventAggregator를 확장하기위한 노력 없이는 이것이 가능하지 않다고 생각됩니다. 이 작업을 수행하는 가장 쉬운 방법은 validator가 명령을 나타내는 이벤트 만 처리하도록하는 것입니다. 명령이 유효하면 유효성 검사기는 상태 체인저를 직접 실행하거나 상태 체인저가 처리하는 새로운 유형의 이벤트를 발생시킴으로써 실행합니다. 물론 명령이 유효하지 않은 경우 취소 된 이벤트가 발생합니다.

+0

실제로이 스크린 캐스트에 약 15 분, 발표자는 잘못된 명령 (비즈니스 규칙 아님) 처리에 대한 흥미로운 설명을 작성했습니다. - http://channel9.msdn.com/Blogs/MichaelLehman/PP-Symposium-2010-The-Commmand-Query - 분리 패턴 - 크리스 - 타바레스 –