다음을 통해 공유


공급자와의 상호 운용

Metadata Storage Service는 동기화 공급자를 간편하게 구현하기 위한 메서드를 제공합니다. 이러한 메서드를 통해 다음과 같은 태스크를 수행할 수 있습니다.

  • 원본 공급자에서 변경 내용을 열거합니다.

  • 원본 공급자에서 변경 내용을 열거하는 동안 변경 내용을 필터링합니다.

  • 대상 공급자에서 변경 내용 적용자의 항목 대상 버전을 가져옵니다.

  • 공급자 또는 응용 프로그램에서 메타데이터 저장소에서 삭제된 것으로 표시된 항목을 정리합니다.

  • 대상 공급자에서 오래된 대상 복제본을 복구합니다.

변경 내용 열거

복제본 메타데이터 개체에는 공급자가 원본 공급자로 사용될 때 변경 내용을 열거하는 메서드가 들어 있습니다. 대부분의 경우 복제본 매개 변수 개체 구현에 매개 변수를 직접 전달하여 공급자의 GetChangeBatch 메서드를 구현할 수 있습니다.

관리 코드 원본 복제본의 변경 내용을 열거하려면 ReplicaMetadata 개체의 GetChangeBatch 메서드를 호출합니다.

비관리 코드 원본 복제본의 변경 내용을 열거하려면 IReplicaMetadata::GetChangeBatch 메서드를 호출합니다.

변경 내용 필터링

필터링된 동기화는 콜백을 사용하여 처리됩니다. 콜백 메서드는 일괄 변경 내용에 항목이 추가되기 전에 호출됩니다. 이때 콜백 처리기는 각 항목을 검사하여 일괄 처리에 해당 항목을 포함할지 여부를 지정할 수 있습니다.

관리 코드 일괄 변경 내용에 포함할 변경 내용을 필터링하려면 ItemFilterCallback 대리자를 구현하여 GetFilteredChangeBatch에 전달합니다.

비관리 코드 일괄 변경 내용에 포함할 변경 내용을 필터링하려면 IChangeBatchCallback을 구현하여 IReplicaMetadata::GetFilteredChangeBatch에 전달합니다.

대상 버전 가져오기

대상 공급자는 복제본 메타데이터 개체에서 제공하는 메서드를 사용하여 일괄 변경 내용에 들어 있는 항목에 대한 대상 복제본의 버전을 원본 공급자에서 가져와서 ProcessChangeBatch 메서드를 구현할 수 있습니다. 그런 다음 이 대상 버전 배치를 변경 내용 적용자에 전달할 수 있습니다.

관리 코드 대상 복제본에 적용 가능한 버전이 들어 있는 일괄 변경 내용을 가져오려면 ReplicaMetadata 개체의 GetLocalVersions 메서드를 호출합니다.

비관리 코드 대상 복제본에 적용 가능한 버전이 들어 있는 일괄 변경 내용을 가져오려면 IReplicaMetadata::GetItemBatchVersions 메서드를 호출합니다.

삭제된 항목 정리

복제본에서 삭제된 항목은 해당 항목이 삭제되었음을 나타내는 값과 함께 메타데이터 저장소에 유지됩니다. 복제본에서 저장 공간이 부족해지지 않게 하려면 이러한 삭제된 항목의 메타데이터를 주기적으로 정리해야 합니다. 공급자는 복제본 메타데이터 개체에서 제공하는 CleanupDeletedItems(관리 코드의 경우) 또는 IReplicaMetadata::CleanupDeletedItems(비관리 코드의 경우) 메서드를 통해 삭제된 항목을 정기적인 일정에 따라 정리할 수 있습니다. 공급자는 삭제된 항목을 메타데이터 저장소에 유지하는 최소 기간을 나타내는 시간 간격을 지정하고 정리 메서드를 정기적으로 호출합니다. 예를 들어 공급자에서 변경 내용 검색을 수행할 때마다 호출할 수 있습니다. 공급자에서 시간이 많이 걸리는 전체 열거를 수행하지 않도록 정리 메서드는 지정된 시간이 경과되었을 때만 삭제된 항목을 정리하고 지정된 시간 간격보다 오래되지 않은 삭제된 항목을 항상 유지합니다. 또한 정리 메서드는 잊어버린 정보를 업데이트하여 삭제된 항목이 제거된 사실을 반영합니다.

오래된 복제본 복구

Sync Framework에서 대상 복제본이 오래된 것으로 판단하면 Sync Framework에서 전체 열거를 트리거하여 대상 복제본을 복원합니다. 원본 복제본의 메타데이터에서 삭제된 항목이 제거되었지만 항목 삭제 사실이 대상 복제본에 전달되지 않은 경우 대상 복제본이 오래된 것으로 간주됩니다. 전체 열거를 수행하기 위해 Sync Framework에서는 원본 공급자의 GetFullEnumerationChangeBatch 메서드와 대상 공급자의 ProcessFullEnumerationChangeBatch 메서드를 호출합니다. 공급자는 Metadata Storage Service에서 제공하는 메서드를 통해 이러한 메서드를 구현할 수 있습니다.

관리 코드 원본 공급자의 GetFullEnumerationChangeBatch 메서드가 호출되면 원본 공급자에서 ReplicaMetadata 개체의 GetFullEnumerationChangeBatch 메서드를 호출할 수 있습니다. 대상 공급자의 ProcessFullEnumerationChangeBatch 메서드가 호출되면 대상 공급자에서 ReplicaMetadata 개체의 GetFullEnumerationLocalVersions 메서드를 호출하여 대상 복제본에 적용되는 버전이 들어 있는 일괄 변경 내용을 가져올 수 있습니다.

비관리 코드 원본 공급자의 GetFullEnumerationChangeBatch 메서드가 호출되면 원본 공급자에서 IReplicaMetadata::GetFullEnumerationChangeBatch를 호출할 수 있습니다. 대상 공급자의 ProcessFullEnumerationChangeBatch 메서드가 호출되면 대상 공급자에서 IReplicaMetadata::GetFullEnumerationItemBatchVersions를 호출하여 대상 복제본에 적용 가능한 버전이 들어 있는 일괄 변경 내용을 가져올 수 있습니다.

참고 항목

참조

IReplicaMetadata 인터페이스
IChangeBatchCallback 인터페이스
ReplicaMetadata
ItemFilterCallback

기타 리소스

Sync Framework Metadata Storage Service