변경 내용 열거
원본 공급자는 GetChangeBatch(관리 코드의 경우) 또는 IKnowledgeSyncProvider::GetChangeBatch(비관리 코드의 경우) 요청에 응답할 때 대상 복제본에 알려지지 않은 일괄 변경 내용을 생성합니다. 원본 공급자는 원본 복제본에 있는 항목 중 대상 공급자가 전송한 정보 개체에 들어 있지 않은 항목을 확인한 다음 이러한 항목을 일괄 반환합니다.
각 일괄 변경 내용은 다음과 같은 정보로 구성되어 있습니다.
변경된 항목의 전역 ID 및 버전
대상 복제본에서 인식해야 하는 삭제 표식
기본 정보. 이는 변경이 수행된 시점에서 원본 복제본의 정보입니다. 대상 공급자가 변경 내용을 적용하면 Sync Framework에서 기본 정보를 사용하여 대상의 배운 정보를 계산합니다.
필수 정보. 이는 대상 복제본이 해당 일괄 변경 내용을 처리하기 위해 가지고 있어야 하는 최소 정보입니다. 대상 복제본의 정보에 필수 정보가 들어 있지 않으면 이러한 변경 내용을 처리할 수 없습니다.
원본 복제본의 잊어버린 정보. 이는 오래된 대상 복제본을 검색하는 데 사용됩니다.
두 복제본 간의 변경 내용 열거
이 단원에서는 Sync Framework 정보 인터페이스를 사용하여 두 복제본 간의 변경 내용을 열거하는 절차를 설명하는 시나리오를 제공합니다.
참고
복제본에서는 공급자가 변경 내용을 열거하기 전에 로컬에서 수행된 변경 내용을 정보에 반영해야 합니다. 이렇게 하려면 로컬에서 변경이 수행될 때 정보를 업데이트하거나 변경 내용을 열거하기 전에 메타데이터 유지 관리를 수행합니다.
이 시나리오에서는 대상 공급자가 원본 공급자에서 변경 내용을 요청합니다. 요청의 순서는 다음과 같습니다.
대상 복제본은 원본 복제본과 동기화할 범위에 대해 로컬에서 수행된 모든 변경 내용이 정보에 반영되었는지 확인합니다.
대상 공급자는 대상 복제본의 정보를 원본 공급자에 전송합니다. 원본 공급자는 GetChangeBatch(관리 코드의 경우) 또는 IKnowledgeSyncProvider::GetChangeBatch(비관리 코드의 경우) 메서드를 통해 정보를 수신합니다.
일괄 변경 내용을 작성하기 위해 원본 공급자에서 원본 복제본의 변경 내용과 삭제를 열거하고 각 항목을 대상 복제본의 정보와 비교합니다. 대상 복제본의 정보에 들어 있지 않은 변경 내용만 일괄 변경 내용에 추가됩니다. 일괄 변경 내용은 ChangeBatch 개체(관리 코드의 경우) 또는 ISyncChangeBatch 인터페이스(비관리 코드의 경우)로 나타냅니다.
원본 공급자에서 일괄 변경 내용을 대상 공급자에 반환합니다.
참고
변경 내용 집합에 변경 내용이 매우 많을 수 있습니다. 들어오는 변경 내용 목록을 처리할 시간을 확보하기 위해 대상 공급자는 GetSyncBatchParameters(관리 코드의 경우) 또는 GetSyncBatchParameters(비관리 코드의 경우) 메서드의 일괄 처리 크기에 0이 아닌 숫자를 반환하여 변경 내용을 일괄 처리 단위로 전송하도록 요청할 수 있습니다.
원본 공급자에서 변경 단위를 사용하여 원본 복제본에서 열거되는 하위 항목을 나타내는 경우 전체 항목 대신 변경된 변경 단위만 전송됩니다. 자세한 내용은 변경 단위 동기화를 참조하십시오.
사용되지 않는 변경 내용 처리
일괄 변경 내용을 구성할 때 사용되지 않는 변경 내용은 자동으로 제외됩니다. 사용되지 않는 변경 내용은 대상 복제본의 정보에 이미 포함되어 있으며 대상 복제본에 적용되지 않아야 하는 변경 내용입니다. 일괄 변경 내용에 변경 내용을 추가할 때 Sync Framework에서는 변경 내용의 버전과 대상 복제본의 정보를 비교하여 대상 복제본의 정보에 들어 있지 않은 변경 내용만 추가합니다. 따라서 최소 일괄 변경 내용이 생성되고 공급자는 틱 수에 따른 알고리즘과 같은 보다 단순한 알고리즘을 구현하여 변경 내용을 열거할 수 있습니다.
공급자는 일괄 변경 내용에 추가되는 변경 내용이 사용되지 않는지 여부를 자체적으로 확인할 수 있습니다. 이렇게 하려면 공급자에서 변경 내용의 전역 ID 및 버전이 대상 복제본의 정보에 들어 있는지 여부를 확인합니다. 이때 Contains(관리 코드의 경우) 또는 ISyncKnowledge::ContainsChange(비관리 코드의 경우) 메서드를 사용합니다. 정보에 변경 내용이 들어 있지 않으면 공급자에서 해당 변경 내용을 일괄 변경 내용에 추가합니다. 이를 통해 최소 일괄 변경 내용이 생성되고 공급자는 일괄 변경 내용 구성을 완벽하게 제어할 수 있습니다.
참고 항목
참조
ISyncKnowledge 인터페이스
ISyncChangeBatch 인터페이스
IKnowledgeSyncProvider 인터페이스
IKnowledgeSyncProvider::GetChangeBatch
SyncKnowledge
ChangeBatch
KnowledgeSyncProvider
GetChangeBatch