체스가 이벤트 집계를 처리하는 방법을 MVVMCross를 처리하는 방법과 비교할 때 두 시나리오에서 이벤트 집계의 컨텍스트와 목적을 고려해야합니다.
체스의 이벤트 집계
체스의 맥락에서, 이벤트 집계는 게임 중에 발생하는 일련의 움직임 또는 이벤트를 관리하고 처리하는 것을 지칭 할 수 있습니다. 여기에는 각 움직임 추적, 캡처, 점검 또는 수표를 추적하는 것이 포함될 수 있습니다. 도메인 중심 디자인 (DDD) 접근법에서 체스 이동은 다른 이벤트 수송 시스템에서 처리되는 방식과 유사하게 도메인 이벤트로 모델링 될 수 있습니다. 각 이벤트는 게임의 특정 행동 또는 상태 변화를 나타내며, 예를 들어 움직이거나 캡처되는 것과 같은 것입니다. 이러한 이벤트는 저널 또는 로그에 저장되므로 이러한 이벤트를 재생하여 게임의 현재 상태를 재구성 할 수 있습니다.
예를 들어, 체스 게임은 "spigedoved", "piecaptured"또는 "CheckmateOccurred"와 같은 이벤트를 사용할 수 있습니다. 이러한 이벤트는 지속되며 게임을 분석하거나 다른 게임 상태에서 일관성을 보장하는 데 사용될 수 있습니다. 그러나 체스 자체는 본질적으로 소프트웨어 프레임 워크가하는 방식에서 이벤트 집계를 "처리"하지 않습니다. 대신 이벤트 집계를 적용 할 수있는 도메인을 제공합니다.
mvvmcross의 이벤트 집계
MVVMCross는 메신저 플러그인을 통해 이벤트 집계 패턴을 사용합니다. 이 플러그인은 구성 요소가 단단히 결합하지 않고 서로 통신 할 수있는 중앙 집중식 메커니즘을 제공합니다. 이를 통해 여러 게시자가 메신저 자체 인 중재자를 통해 여러 구독자에게 메시지 (이벤트)를 보낼 수 있습니다.
MVMCross Messenger는 이벤트 게시, 이벤트 구독 및 구독 관리와 같은 기능을 지원합니다. 메모리 누출을 방지하기 위해 약한 참조를 사용하여 구성 요소가 이벤트에 가입하더라도 쓰레기를 수집 할 수 있도록합니다. 이 접근법은 특히 뷰 모델이 직접 참조없이 서로 통신 해야하는 MVVM (Model-View-ViewModel) 아키텍처에서 특히 유용합니다.
MVVMCross의 이벤트 집계의 주요 측면에는 다음이 포함됩니다.
- 게시 방법 : 구성 요소는`publish`와 같은 방법을 사용하여 이벤트를 게시 할 수 있습니다.
- 구독 방법 : 구성 요소는`excribe`,`subscribeonmainthread` 또는`uppleonthreadpoolthread`와 같은 메소드를 사용하여 이벤트를 구독 할 수 있습니다.
- 가입 관리 : 메신저는 특정 이벤트 또는 태그에 대한 구독이 있는지 확인하는 방법을 제공하여 이벤트 처리를 더 잘 관리 할 수 있습니다.
비교
체스는 소프트웨어 시스템과 유사한 이벤트 집계 원리를 사용하여 모델링 할 수 있지만 MVVMCross는 MVVM 아키텍처를 위해 설계된 이벤트 집계의 특정 구현을 제공합니다. 주요 차이점은 맥락과 목적에 있습니다.
- 체스 : 이벤트 집계는 이벤트 소싱 원칙을 개념적으로 적용하는 도메인 이벤트를 통해 게임 상태 추적 및 관리에 관한 것입니다.
-MVVMCross : 이벤트 집계는 중앙 메신저를 사용하여 응용 프로그램의 느슨하게 결합 된 구성 요소 간의 통신을 용이하게하는 기술적 구현입니다.
요약하면, 체스는 mvvmcross와 같은 방식으로 이벤트 집계를 "처리"하지 않습니다. 대신, 체스는 이벤트 집계 개념을 적용 할 수있는 도메인을 제공합니다. 반면에 MVVMCross는 소프트웨어 개발을위한 이벤트 집계의 구체적인 구현을 제공합니다.
인용 :[1] https://ep2024.europython.eu/session/event-sourcing-from-the-ground-up
[2] https://www.mvvmcross.com/documentation/plugins/messenger
[3] https://debezium.io/blog/2020/02/10/event-sourcing-vs-cdc/
[4] https://github.com/mateusznakodach/ddd.eventsourcing.portsandadapters.typescript.nestjs.chess
[5] https://www.linkedin.com/advice/0/how-do-you honle-multiple-event-sources
[6] https://securosis.com/blog/understanding-and-selecting-siem-aggregation-normalization-and-enrichmen/
[7] https://www.youtube.com/watch?v=mfsrsqza1uq
[8] https://prismlibrary.github.io/docs/event-aggregator.html
[9] https://learn.microsoft.com/en-us/analysy-services/multidimensional-models-olap-logical-cube-objects/aggregations-and-aggregation-designs?view=asallproducts-allversions
[10] https://www.chess.com/forum/view/tournaments/why-delay-next-lound-for-mathematically-larrelevant-games
[11] https://blog.magnusmontin.net/2014/02/28/using-the-event-aggregator-pattern-to-communicate-between-view-models/