원격 백엔드에 연결된 WPF 응용 프로그램이 있습니다. 사용자는 GUI에서 다양한 요소를 편집 할 수 있지만 응용 프로그램을 닫을 때만 저장하거나 취소하기로 결정했습니다. GUI 지원은 실행 취소/다시 실행을 지원합니다.저장시 명령 모음 대기 및 보내기
이미 모든 편집을 추적에 백엔드에 편집을 수행하는 데 필요한 명령을 생성 저장: 내 명령은 뭔가 같은 :
public class ChangeDescriptionOfTypeAObject
{
public string OldValue{ get; set; }
public string NewValue{ get; set; }
public string ObjectID{ get; set; }
}
이 현재 응용 프로그램에서 작동하지만 내가 명령 실패하는 경우에 대해 생각하고 있어요 그 동안 다른 사용자가 동일한 속성을 변경합니다. 아마도 "개체 ObjectID에 대한 설명 변경을 적용 할 수 없습니다 : 현재 값은 xxx"라는 메시지를 사용자에게 보내야하고 다른 모든 변경 사항을 적용해야합니다.
올바른 방법입니까? "CurrentValue == OldValue"를 확인하는 데 사용하는 읽기 모델이 다른 소비자로부터 업데이트되는 경우 명령이 결국 일관성있는 프로세스에서 성공과 함께 적용될 수 있는지 어떻게 확인할 수 있습니까?
내가 생각하기에 - 가장 좋은 방법은 * events *와 * commands *를 당신이 한 것보다 작게 만들고 (보통 버전 번호) 동시성 검사를 가져 오는 것입니다. 다시 현재 상태를 다시 쿼리 할 수 있고 다른 모든 것이 실패하면 백엔드가 동시성 검사를 던질 것입니다 - 나는 여러분이 잠글 수없는 어떤 이유로도 이것을 피할 수 있다고 생각하지 않습니다. – Carsten
좀 더 명확하게하기 위해 : 백엔드는 확인해야합니다 일관성! (프론트 엔드도 확인할 수 있지만 백엔드는 마지막 말을해야합니다.) – Carsten