2016-06-02 1 views

답변

4

사가 모델의 주된 장점은 시스템 (및 다양한 일괄 처리 작업)에 분산되어있는 논리와 데이터를 가져 와서 단일 클래스에 따라 더 나은 단일 클래스로 끌어 올 수 있다는 것입니다 책임 원칙. 일단 당신이 그것을 얻으면, 당신은 좋은 소프트웨어 관행에서 오는 다른 모든 이익을 얻습니다 - 더 나은 테스트 가능성, 유지 보수성 등

+0

많은 감사 우디를 포함 무용담을 마이그레이션해야합니다. 두 가지를 구현하는 간단한 더미 예제를 가르쳐 주시겠습니까? 그 차이점을 실제로 이해할 수 있습니까? 상태 데이터가 시스템 전반에 퍼져 있음에 동의하지만 어쩌면 내 실존 적 문제는 다음과 같습니다. 해당 데이터가 비즈니스 프로세스의 일부인 경우 (보고서의 상태 데이터를 쿼리하고 클라이언트에 현재 상태를 알릴 필요가있을 수 있습니다. , 등) 비즈니스 데이터와 함께 상태 데이터를 저장하는 것이 이치에 맞지 않습니까? 다시 한번 감사드립니다. – Miguel

+0

다음은 할 일 목록에 추가 할 것입니다. 그러나 진지하게 말해 사가 데이터를 직접 쿼리 할 수 ​​있습니다.이 데이터는 일반 DB에 저장됩니다. –

+0

SagaData를 사용하는 프로세스는 트랜잭션과 관련된 여러 시스템의 상태에 액세스 할 수있는 분산 된 트랜잭션 코디네이터 역할을합니다. 맞습니까? –

0

저는 사가 모델의 진정한 이점을 보여주기 위해 두 가지 예를 보여 드리겠습니다.

  1. 수백 개의 분산 호스트가있는 서비스 지향 아키텍처가 있다고 가정 해보십시오. 고객이 하나 이상의 무용담을 시작하는 주문을합니다. 각 무용담에는 관련 비즈니스 로직이 있습니다. 각 주어진 사가에 대한 핸들러는 다른 호스트 사이에서 공유 할 수 있으며 각 메시지를 처리하는 순서 상태를 확인할 필요가 없습니다. NServiceBus는 주문 ID 또는 다른 속성으로 일치하는 사가 상태를 암시 적으로 검사하며 아직 열어두면받을 수 있습니다 귀하의 데이터 컨텍스트.

  2. 이 모델을 NServiceBus 사용없이 패턴으로 사용할 수도 있습니다. 비디오 게임을 개발하고 일부 사용자 콤보를 추적하려고한다고 가정 해보십시오. 플레이어가 점프를 할 때마다 당신은 사가를 열고 다른 빠른 입력을 처리하는 보너스 포인트를 추가합니다. 플레이어가 입력과 사기 사이에 일정 시간 지연되면 콤보에 대한 총 점수를 절약합니다.

사가의 장점은 무엇입니까?

1) 귀하의 비즈니스 로직은 한 곳에서 캡슐화됩니다 - 사가.

2) 추가 사가를 쉽게 추가하거나 제거 할 수 있습니다. 다른 처리기 또는 호스트로 이동할 수도 있습니다.

3) 당신은 데이터베이스의 데이터 마이그레이션의 경우에 필요한 무엇을 알 필요가 없습니다, 당신은 필요한 모든 정보를