1

Azure 테이블 저장소의 데이터를 로컬 Windows 데스크톱 클라이언트와 동기화하려고합니다. 데스크톱 클라이언트는 항상 온라인 상태가 아니더라도 작동해야하므로 ATS에서 최신 데이터를 다운로드하고 로컬 데이터에 대한 변경 사항을 업로드해야합니다.Azure 테이블 저장소와 로컬 동기화

미리 처리해야 할 것이 있습니까? 아니면 처음부터 코드를 작성해야합니까?

어쩌면 내가 아직 보지 못한 그물에 관한 기사가있을 수 있습니다. 동기화 프레임 워크가 여기에있는 방법이라고 생각하지만 Azure 테이블 저장소의 사용법에 대한 구체적인 내용은 찾지 못했습니다.

+0

로컬 Windows 클라이언트와 동기화하여 무슨 뜻인지 자세히 설명 할 수 있습니까? 로컬 SQL 서버에 동기화하거나 단순히 Windows 클라이언트에서 ATS 데이터에 액세스하려고하십니까? – Igorek

+0

@Igorek 나는 정교하게 노력했다. 나는 그것이 지금 더 이해할 수 있기를 바랍니다. – Amenti

답변

1

데이터 자체의 실제 동기화가 문제의 가장 적은 것이라고 생각합니다. 실제로 연결 해제 된 상태에서 하늘 저장소를 에뮬레이션하여 대부분의 코드가 실제 구현에서 추상화되도록하는 것이 훨씬 더 어려울 수 있습니다. Azure 테이블 저장소는 에뮬레이션하기가 어렵습니다. 로컬 클라이언트 데스크톱 및 PartitionKey, RowKey, TimeStamp 및 xml 기반 BLOB가있는 테이블에서 SQL Express를 사용하여 ATS가 수행하는 것과 비슷한 방식으로 개체를 저장할 수 있지만 매우 어려울 수 있습니다 to 에뮬레이션.

이 작업을 수행하는 기술이나 프레임 워크를 보지 못했습니다. Azure 테이블 스토리지를 사용해야하는 용량 및/또는 확장성에 대한 필요성이 있습니까? 대신 SQL Azure로 할 수 있습니까? 로컬 데스크톱 클라이언트에서 SQL Express를 실행하고 SQL Azure를 SQL Express와 동기화하며 두 데이터 저장소간에 전환하는 작업이 훨씬 간단합니다.

+0

답변 해 주셔서 감사합니다. 내 소프트웨어는 소비자에 맞춰졌고 데이터 멀티 테넌트 (사용자 당 일부 MB)를 저장하려고했습니다. 나는 더 높은 pricepoint 때문에 순간에 SQL Azure를 무시했다. 그러나 당신이 말하는 것은 마치 내가 다시 그것에 대해 생각해야하는 것처럼 들립니다. 나는 소비자를위한 SQL Express를 설치하는 것이 너무 많다고 생각한다. 아마도 SQL Compact가 옵션 일 수 있습니다. – Amenti

0

다른 방법은 RESTful 서비스를 통해 데이터를 노출하는 것입니다 (asp.net 웹 API를 보라). 아이디어는 단순히 데이터 헤더 또는 서비스를하는 데 도움이되는 몇 가지 데이터를 첨부 할 수 있습니다 쿼리 문자열에서

GET //yourapi/someresource 

를 얻을 수있는 URL로 불러 당신에게 다시 제공해야하는지에 대한 결정을 내릴 것이라는 것 . 필자의 경우 장치 ID (On Device Generated Guid)와 마지막 동기화 타임 스탬프를 전달합니다.

이러한 기능을 사용하면 웹 서비스 뒤에있는 작은 동기화 관리자를 사용하면 특정 시간 후에 다른 위치에서 변경된 모든 항목을 되돌릴 수 있습니다. 이 모든 것을 동기화하기 위해 나는 비밀 저장소에 sync 저널을 가지고 있는데, userId, entityId, deviceId, Timestamp가 있습니다.

이 테이블을 쿼리하고 업데이트하면 서버가 빠르게 변경된 내용을 알려주고 고객 당 파티션이 있기 때문에 빠릅니다.

테이블 저장소를 추상화 했으므로 실제로 클라이언트에 복제 할 필요가 없지만 원하는 데이터를 저장할 수 있습니다.

관련 문제