2013-07-18 2 views
3

우리는 CQRS 이벤트를 저장하기 위해 NeventStore (이전의 Jonathan Oliver의 EventStore로 알려진 아티스트)를 사용하고 있습니다. 이벤트에 새 속성을 추가하려는 경우 새 버전의 이벤트를 만드는 것이 필요한지 알고 싶습니다.기존 CQRS 이벤트에 더 많은 속성 추가

EventStore에서 이벤트를 읽을 때 문제가 될 수 있으므로 기존 속성의 이름을 변경해서는 안된다는 것을 알고 있습니다. 그러나 새로운 속성 만 추가하면 문제가 발생합니까?

+1

Btw, 자유롭게 이벤트의 이름과 이벤트의 속성을 변경할 수있게하려면 Protobuf를 사용하여 직렬화를 살펴볼 수 있습니다. .NET에 대한 구현이 있습니다. 우리는 NEventStore로이 프로젝트를 사용하고 있습니다. EventMessage를 저장하기 전에 Body를 Protobuf로 직렬화 된 응용 프로그램 특정 이벤트 인 바이트 배열로 설정할 수 있습니다. deserialization에 대해서도 마찬가지입니다. 이벤트를 다시 읽는 중입니다. – jacderida

답변

5

메시지를 직렬화하는 방식에 따라 다릅니다. 즉,이 구문을 사용하는 가장 좋은 방법은 (/ 기존 응답에 대한 검색) 메시지를 어떻게 serialize하는지 식별 한 다음 해당 메커니즘이 해당 문제를 처리하는 방법을 찾는 것입니다.

그 다음 대답은 속성을 추가하는 것은 꽤 깔끔하게 처리되어 JSON.NET 간단한 포항 강판과 JSON을의 가정 - (매우 행할 수) 모든 사용자 지정이 없을 경우, 새로운 필드 즉, 가지 default(T)null 올 또는 각 관련 값에 대해 0

+1

두 번째 대답은 Oliver의 EventStore/JSON.NET을 사용하여 얻은 접근 방식이며 잘 작동합니다. 내가 추가 할 수있는 유일한 것은 이벤트의 핸들러가 이전 이벤트의 null 특성을 고려해야한다는 것입니다. – danielfishr

+0

Ruben, Jonathan Olivers처럼 보입니다. EventStore는 사용자가 가정 한대로 새 속성을 처리합니다. 이벤트에 새 속성을 추가하려고 시도했지만 정상적으로 작동했습니다. 속성의 값은 오래된 이벤트에 대해서는 null이며, 당연히 이벤트 핸들러에서 처리해야합니다 (Daniel 언급처럼). 하지만 100 % 확신하고 싶습니다. 앞으로도 그렇게 될 것입니다. 누군가 EventStore가 직렬화를 구현하는 방법을 알고 있습니까? – Sachin

+0

@Sachin 최종선은 NeventStore가 설정 한대로 정확하게 처리한다는 것입니다. 어떻게 구성 했습니까? (내가 말했듯이, 내 추측으로 잘라내어 붙여 넣기를하고 NewtonSoft JSON.Net을 사용하여 JSON으로 끝났습니다. 당신은 그것의 질문을 요구할 필요가있다 - 그것은 꽤 좋은 문서를 가지고있다). 나는 개인적으로 그것을 빨아보고 테스트를 볼 것입니다. 어쨌든 테스트 스토리를 정렬해야합니다. –

관련 문제