다음을 통해 공유


동기화 정보 이해

이 항목에서는 Sync Framework 동기화 알고리즘에서 정보를 사용하여 변경 내용 열거충돌 검색을 구현하는 방법을 개략적으로 살펴봅니다. 정보는 복제본에 직접 적용되거나 동기화를 통해 적용된 모든 변경 내용을 설명하는 메타데이터입니다. 변경 내용 열거는 원본 복제본에서 변경된 항목 중 대상 복제본에 해당 정보가 없는 항목을 확인하는 과정입니다. 충돌 검색은 복제본 하나에서 수행된 작업 중 다른 복제본에 변경 내용에 대한 정보가 전송되지 않은 작업을 확인하는 과정입니다. 예를 들면 두 복제본이 같은 항목을 로컬에서 업데이트하는 경우가 있습니다.

참고

일반적으로 동기화 공급자 및 응용 프로그램은 정보를 직접 사용하지 않습니다. 대신 정보 연산을 호출하는 Sync Framework 메서드를 호출합니다.

정보 연산

다음 표에서는 동기화 정보 연산을 나열하고 설명합니다.

연산자 설명

포함

지정된 정보 개체에 지정된 항목 버전이 들어 있는지 확인합니다. 버전은 복제본 키와 틱 수입니다. 즉, 해당 정보를 소유하는 복제본에서 이 변경 내용을 적용했는지 확인합니다. 이 연산에는 항목 ID와 버전을 입력해야 합니다.

이 연산은 변경 내용 열거 및 충돌 검색에 사용됩니다.

통합

두 정보 개체를 사용하여 원래 정보 개체 중 최소한 하나와 완전히 동일한 변경 내용 집합이 들어 있는 새 정보 개체를 생성합니다.

이 연산은 변경 내용을 적용하는 동안 사용됩니다.

투영

지정된 정보 개체 및 항목 ID, 변경 단위 ID 또는 항목 ID 범위를 사용하여 지정된 ID 또는 ID 범위의 변경 내용이 원본과 동일하게 들어 있지만 나머지 항목은 들어 있지 않은 새 정보 개체를 생성합니다.

이 연산은 정보를 특정 항목, 변경 단위 또는 항목 범위로 제한해야 할 때 사용됩니다. 예를 들어 중단된 동기화, 일괄 처리 및 필터링된 동기화의 몇 가지 고급 형태에서 사용됩니다.

제외

지정된 정보 개체 및 항목 ID 또는 변경 단위 ID를 사용하여 지정된 ID를 제외하고 나머지 항목에 대한 변경 내용이 원본과 동일하게 들어 있는 새 정보 개체를 생성합니다. 이 연산은 투영 연산과 반대입니다. 제외 연산은 지정된 항목을 제외한 모든 항목에 대해 정보를 투영합니다.

이 연산은 일반적으로 변경 내용을 적용하는 데 실패한 경우에 사용됩니다.

변경 내용 열거

변경 내용 열거는 원본 공급자의 개발자가 구현합니다. 지정된 정보 연산을 사용하여 변경 내용이 다음과 같이 열거됩니다.

  1. 대상 공급자는 대상 복제본의 현재 정보를 원본 공급자에 전송합니다.

  2. 원본 공급자는 원본 복제본의 모든 항목을 반복하면서 각 항목에 대해 다음과 같은 단계를 수행합니다.

    1. 원본 복제본에 저장되어 있는 항목 버전이 대상 정보에 들어 있는지 확인합니다.

    2. 들어 있지 않으면 해당 항목을 대상 공급자에 전송할 일괄 변경 내용에 포함시킵니다.

참고

항목 저장소에서 해당 기능을 지원하는 경우 항목 저장소를 직접 쿼리하거나 쿼리와 이 알고리즘을 결합하여 변경 내용 열거를 처리할 수도 있습니다.

변경 내용 전송

열거된 변경 내용을 원본 공급자에서 대상 공급자로 전송해야 합니다. 이를 위해 변경 내용을 여러 일괄 변경 내용으로 나누고 각 일괄 변경 내용에서 다음과 같은 정보를 전송합니다.

  • 변경 내용 자체를 설명하는 메타데이터. 공급자는 일괄 변경 내용에 들어 있는 각 변경 내용의 메타데이터를 일괄 변경 내용에 추가합니다.

  • 충돌 검색에 사용할 기본 정보. 이는 일반적으로 원본 복제본의 현재 정보입니다. 기본 정보는 해당 변경이 수행된 시점의 정보를 나타냅니다. 공급자는 일괄 변경 내용에 추가된 각 변경 내용 그룹의 기본 정보를 일괄 변경 내용에 추가합니다.

  • 배운 정보. 이는 원본 복제본의 현재 정보를 이 일괄 변경 내용에서 전송하는 항목의 부분 집합 및 기록된 충돌에 투영한 정보입니다. 배운 정보는 이러한 변경 내용을 적용할 때 습득하게 되는 정보를 나타냅니다. 공급자 대신 Sync Framework에서 배운 정보를 계산합니다.

참고

변경 내용 열거가 끝나지 않아도 일괄 처리를 수행할 수 있으므로 일괄 처리와 변경 내용 열거를 동시에 수행할 수 있습니다.

정렬

변경 내용을 전송하는 순서에 따라 정보를 일괄 변경 내용의 항목에 투영하는 데 걸리는 시간이 달라질 수 있습니다. 예를 들어 정보는 항목 ID 범위를 지원합니다. 따라서 적용되는 항목 ID의 순서에 따라 변경 내용을 전송하면 정보를 매우 효율적으로 투영할 수 있습니다.

투영 연산은 정렬에 관계없이 항상 전송되는 일괄 변경 내용에 대해 정보를 투영합니다.

오류

열거된 항목을 원본 공급자에서 전송할 수 없으면 전송된 배운 정보에서 해당 항목을 제외해야 합니다. 이를 위해 제외 연산자가 사용됩니다.

충돌 검색

충돌 검색은 NotifyingChangeApplier(관리 코드의 경우) 또는 ISynchronousNotifyingChangeApplier(비관리 코드의 경우) 등의 Sync Framework 구성 요소에서 처리합니다.

일괄 변경 내용에 대한 배운 정보 및 기본 정보가 들어 있는 일괄 변경 내용을 대상 공급자에서 수신한 후 일괄 변경 내용의 각 변경 내용에 대해 다음과 같은 사항을 확인해야 합니다.

  • 해당 변경 내용이 대상 복제본에 저장된 항목의 현재 버전과 충돌하는지 여부

  • 해당 변경 내용이 대상 복제본에 저장된 항목의 현재 버전으로 대체되어 사용되지 않는지 여부

이러한 사항을 확인하는 방법은 간단합니다.

  • 대상 복제본에 저장된 항목 버전이 원본 복제본의 정보에 들어 있지 않으면 변경 내용이 현재 버전과 충돌하는 것입니다.

  • 변경 내용의 버전이 대상 복제본의 정보에 들어 있으면 변경 내용이 사용되지 않는 것입니다.

    참고

    일반적인 상황에서는 사용되지 않는 변경 내용은 전송되지 않습니다. 그러나 경합 상태로 인해 이러한 변경 내용이 전송될 수 있습니다. 따라서 Sync Framework에서는 이러한 변경 내용을 검색하여 처리해야 합니다.

변경 내용 적용

변경 내용이 수신되고 충돌이 검색된 후에는 변경 내용을 대상 복제본에 적용할 수 있습니다. 이 시점에서 대상 공급자는 다음과 같은 단계를 수행합니다.

  1. 로컬에서 수행된 작업에 따라 일괄 변경 내용의 배운 정보를 조정합니다.

    1. 작업 중단이나 취소로 인해 변경 내용 중 일부만 적용된 경우 적용되지 않은 각 변경 내용에 복구 가능한 오류를 설정합니다. Sync Framework에서는 투영 연산자를 사용하여 배운 정보를 이 집합으로만 제한합니다.

    2. 개체가 잠긴 경우 등의 DRM(디지털 권한 관리) 문제로 인해 일부 변경 내용을 적용하지 못한 경우 대상 공급자는 적용되지 않은 각 변경 내용에 복구 가능한 오류를 설정합니다. Sync Framework에서는 제외 연산자를 사용하여 실패한 변경 내용을 배운 정보에서 제거합니다.

    3. 검색되었지만 해결되지 않은 충돌이 있으면 Sync Framework에서 제외 연산자를 사용하여 이러한 항목도 제거합니다.

  2. 대상 복제본의 정보를 Sync Framework에서 계산한 업데이트된 대상 정보로 바꿉니다.

참고 항목

개념

표준 공급자의 메타데이터 관리
변경 내용 열거
충돌 처리
변경 내용 적용