Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon 체스는 MVMCROSS에 비해 이벤트 집계를 어떻게 처리합니까?


체스는 MVMCROSS에 비해 이벤트 집계를 어떻게 처리합니까?


체스가 이벤트 집계를 처리하는 방법을 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/