다음을 통해 공유


데이터 동기화 기본 사항

Microsoft Sync Framework에서는 세 가지 기본 구성 요소인 동기화 세션과 두 동기화 공급자를 사용하여 데이터 저장소(복제본)를 동기화합니다. 데이터를 동기화하려면 응용 프로그램에서 동기화 세션을 만들고 원본 공급자와 대상 공급자를 전달합니다. 세션에서는 원본 공급자를 사용하여 원본 복제본에서 발생한 새 변경 내용을 가져오고 대상 공급자를 사용하여 이러한 변경 내용을 대상 복제본에 적용합니다.

대부분의 개발 작업은 공급자를 만드는 데 소요됩니다. 공급자는 복제본의 메타데이터와 정보 및 동기화할 각 항목에 대한 메타데이터를 유지 관리합니다. 또한 공급자는 데이터 저장소와 실제 항목 데이터를 주고받습니다. 원본 역할을 하는 공급자가 변경 내용을 열거할 때와 대상 역할을 하는 공급자가 충돌을 검색하고 변경 내용을 적용할 때 Sync Framework 구성 요소가 사용됩니다.

동기화 알고리즘

단방향 동기화 알고리즘에는 다음과 같은 단계가 포함됩니다.

  1. 세션에서 대상 복제본의 현재 정보를 가져와서 원본 공급자에 전송합니다.

  2. 원본 공급자는 대상 정보에 들어 있지 않은 변경 내용을 열거합니다.

  3. 원본 공급자에서 변경 내용을 세션에 전송합니다.

  4. 세션에서 대상 공급자를 통해 충돌을 검색하고 대상 복제본에 변경 내용을 적용합니다.

두 복제본 간의 양방향 동기화는 단방향 동기화를 두 번 수행하여 구현됩니다.

관리 코드 Direction 속성이 DownloadAndUpload 또는 UploadAndDownload로 설정된 경우 SyncOrchestrator 개체에서 단방향 동기화를 두 번 수행합니다.

비관리 코드 응용 프로그램에서 각 단방향 동기화에 대한 ISyncSession 개체를 만들어야 합니다.

메타데이터 관리

각 복제본은 복제본 자체와 정보를 동기화 커뮤니티에 설명하는 메타데이터 집합을 제공해야 합니다. 동기화 커뮤니티는 서로 동기화할 수 있는 복제본의 집합입니다. 각 복제본에 필요한 메타데이터는 복제본 ID, 현재 틱 수, 복제본 키 맵, 현재 정보, 잊어버린 정보, 충돌 로그 및 삭제 표식 로그입니다. 또한 복제본은 동기화할 각 항목에 대한 메타데이터를 유지 관리해야 합니다. 각 항목에 필요한 메타데이터는 전역 ID, 현재 버전 및 생성 버전입니다. 일반적으로 동기화에 필요한 메타데이터는 동기화 공급자에서 관리합니다. 그러나 복제본의 구현에 따라서는 메타데이터 중 일부를 별도의 구성 요소에서 관리하는 것이 유용할 수 있습니다. 예를 들어 동기화 도중이 아닌 예약된 시간에 따라 삭제 표식을 정리하는 서비스를 사용할 수 있습니다.

메타데이터에 대한 자세한 내용은 메타데이터 요구 사항을 참조하십시오.

동기화 공급자

공급자는 복제본의 메타데이터를 관리하고 Sync Framework를 사용하여 변경 내용을 열거하고 충돌을 검색합니다. 또한 공급자는 복제본의 항목 저장소를 사용하여 항목 데이터를 전송(원본 공급자 역할을 하는 경우)하고 변경 내용을 적용(대상 공급자 역할을 하는 경우)합니다.

관리 코드 공급자는 KnowledgeSyncProvider, IChangeDataRetrieverINotifyingChangeApplierTarget의 추상 메서드와 속성을 구현합니다.

비관리 코드 공급자는 IKnowledgeSyncProvider, ISyncProvider, ISynchronousDataRetrieverISynchronousNotifyingChangeApplierTarget 인터페이스를 구현합니다. 비동기 공급자의 경우에는 이러한 인터페이스의 비동기 버전을 구현합니다.

동기화 공급자에 대한 자세한 내용 및 이러한 인터페이스를 구현하고 사용하는 방법은 동기화 공급자를 참조하십시오.

동기화 응용 프로그램

응용 프로그램은 동기화 세션 개체를 만들어 공급자에 연결하고 동기화 런타임을 호스팅하는 구성 요소입니다.

관리 코드를 사용하여 동기화 응용 프로그램 구현

동기화를 시작하려면 SyncOrchestrator 개체를 만듭니다. 그런 다음 LocalProviderRemoteProvider 속성을 동기화할 두 공급자의 SyncProvider 인터페이스로 설정합니다. 응용 프로그램에서는 적절한 모든 방법을 사용하여 공급자 인터페이스를 가져오거나 만듭니다. SyncOrchestrator 개체가 만들어진 후 Synchronize를 호출하여 동기화를 시작합니다. 이 시점에서 Sync Framework는 두 공급자를 필요에 따라 호출하여 동기화를 수행합니다.

동기화 도중 SyncOrchestrator 개체와 KnowledgeSyncProvider 개체는 모두 이벤트를 발생시킵니다. 이벤트를 수신하려면 이벤트 처리기 메서드를 구현하고 이벤트를 수신 등록합니다.

비관리 코드를 사용하여 동기화 응용 프로그램 구현

동기화를 시작하려면 CoCreateInstance 함수에 CLSID_SyncServicesIID_IApplicationSyncServices를 전달하여 ISyncSession 개체를 만든 다음 반환된 IApplicationSyncServices 개체의 IApplicationSyncServices::CreateSyncSession을 호출합니다.

CreateSyncSession 메서드에는 동기화할 두 공급자의 ISyncProvider 인터페이스를 지정해야 합니다. 응용 프로그램에서는 적절한 모든 방법을 사용하여 공급자 인터페이스를 가져오거나 만듭니다. ISyncSession 개체가 만들어진 후 ISyncSession::Start를 호출하여 동기화를 시작합니다. 이 시점에서 Sync Framework는 두 공급자를 필요에 따라 호출하여 동기화를 수행합니다.

동기화 도중 ISyncSession 개체는 이벤트를 발생시킵니다. 이벤트를 수신하려면 ISyncCallback 인터페이스를 구현하고 ISyncSession::RegisterCallback을 사용하여 등록합니다.

참고 항목

참조

ISyncSession 인터페이스
ISyncProvider 인터페이스
IKnowledgeSyncProvider 인터페이스
ISynchronousDataRetriever 인터페이스
ISynchronousNotifyingChangeApplierTarget 인터페이스
IApplicationSyncServices 인터페이스
IProviderSyncServices 인터페이스
ISyncCallback 인터페이스
SyncOrchestrator
KnowledgeSyncProvider
IChangeDataRetriever
INotifyingChangeApplierTarget
SyncCallbacks

개념

메타데이터 요구 사항
동기화 공급자
동기화 응용 프로그램

기타 리소스

Microsoft Sync Framework