Jaka jest różnica między sterowaniem zdarzeniami a pozyskiwaniem zdarzeń?

13

Studiuję projektowanie oparte na domenie (DDD) i spotkałem się z terminami: Event Driven i Event sourcing. Wiem, że chodzi o publikowanie wydarzeń od producenta do konsumenta i przechowywanie dziennika, więc moje pytanie brzmi:

Jaka jest różnica między sterowaniem zdarzeniami a pozyskiwaniem zdarzeń?

JJ Beam
źródło

Odpowiedzi:

16

Pojęcie Architektura sterowana zdarzeniem jest używana dla dowolnego systemu oprogramowania opartego na komponentach komunikujących się głównie lub wyłącznie poprzez zdarzenia. Na przykład prawie każda duża platforma GUI na dowolnej popularnej platformie wykorzystuje mechanikę sterowaną zdarzeniami. W tym kontekście termin „zdarzenie” zwykle oznacza „powiadomienie”.

Pozyskiwanie zdarzeń jest bardziej szczególnym terminem, odnoszącym się do systemów, w których cały stan aplikacji jest przechowywany jako sekwencja zdarzeń. Dobrze znaną popularną klasą przykładów są transakcyjne systemy baz danych, które przechowują wszelkie zmiany stanu w dzienniku transakcji. Tutaj termin „zdarzenie” odnosi się bardziej do „zmiany stanu”, a nie tylko do „powiadomienia”.

Tak więc każdy system, który wykorzystuje „pozyskiwanie zdarzeń” jako podstawową mechanikę, może być postrzegany również jako system o równomiernym napędzaniu, ale ogólnie rzecz biorąc nie jest odwrotnie.

Doktor Brown
źródło
Poparłem twoją odpowiedź. Sam to teraz szukam i najpierw natknąłem się na twoją odpowiedź. Patrząc na wyrażenie „cały stan aplikacji jest przechowywany jako zdarzenia sekwencyjne”, wygląda na to, że mówisz tak: „Stan aplikacji nie jest utrwalany bezpośrednio w jego bieżącej formie. Zamiast tego każda wykonana operacja tworzenia, aktualizacji lub usuwania jest wykonywana na obiekcie lub modelu jest uważane za „zdarzenie”, a te „zdarzenia” są bezpośrednio utrwalane. Aby więc uzyskać bieżący stan obiektu, musisz odtworzyć te zdarzenia, aby odtworzyć jego kopię ”. Czy to brzmi poprawnie?
Panzercrisis
1
@Panzercrisis: Powinienem napisać: „Sourcing zdarzeń przechowuje wszystkie zmiany stanu aplikacji jako sekwencję zdarzeń”. (jak Fowler). Wszystkie obiekty zwykle mają stan „bieżący”, ten stan może również zostać utrwalony (być może odroczony), a także sama sekwencja zdarzeń. Polecam przeczytać artykuł Fowlera, aby uzyskać pełne wyjaśnienie.
Doc Brown