2011-07-27 3 views
1

데이터를 오프라인으로 저장하고 OData 서버와 동기화 할 수 있어야하는 애플리케이션을 빌드하고 있습니다. 동영상을 검토하는 중에 발표자 중 한 명이 Concurrency Token을 언급했습니다.이 토큰을 사용하여 동기화 프로세스를 도울 수 있습니까? 그렇다면 어떻게 사용하고 무엇을주의해야합니까?OData 및 동시성 토큰

자세한 내용은 대상 플랫폼이 Android이므로 Microsoft Sync Framework를 사용할 수 없습니다.

답변

5

(HTTP RFC에 따라) ETag라고도하는 동시성 토큰은 엔티티 인스턴스의 버전 번호로 상상할 수 있습니다. 서버는 엔티티가 변경 될 때마다 서버를 발생시킵니다. 서버는 이것을 엔티티와 함께 ​​클라이언트에 보내고 클라이언트는 변경 사항을 적용 할 때이를 (If-Match 헤더에서) 서버로 다시 보낼 수 있습니다. 그런 다음 서버는 클라이언트에 최신 버전이 있는지 확인한 후 변경 사항을 적용합니다. 그렇지 않으면 업데이트 요청이 실패합니다. 두 가지 방법으로 동기화 프로세스를 수행하는 데 도움이 될 수 있습니다. 서버에서 엔티티를 가져오고 클라이언트가 기억하는 ETag가 다른 경우 서버 인스턴스 chas가 변경되므로 클라이언트 인스턴스를 업데이트하거나 클라이언트가 변경 한 경우 일부 충돌 해결. 다른 방법은 클라이언트에서 서버로 모든 변경 사항을 보내고 (오른쪽 ETags 사용) 서버가 이미 서버에서 변경된 모든 것을 실패합니다. 그러면 클라이언트는 서버에서 새 버전을 가져 와서 충돌을 해결하고 다시 시도 할 수 있습니다. ETag가 엔티티의 공개적으로 액세스 가능한 속성 중 하나가 아니라면 ETag를 필터링하는 기본 제공 방법이 없으므로 현재는 지정된 이후 모든 엔티티가 변경되도록 서버에 요청할 수 없습니다 번역. 서비스를 제어하는 ​​경우이 작업을 수행 할 수 있지만 (글로벌 버전 번호가 있으면 각 변경 사항이 발생하고 각 항목에 마지막 변경 사항의 버전 번호가 표시되므로 해당 버전 속성을 필터링 할 수 있음) .