Sync Framework 핵심 구성 요소
관리되지 않는 언어에서 Sync Framework 핵심 구성 요소를 사용하여 동기화를 수행할 수 있습니다. 또한 이러한 핵심 구성 요소로 메타데이터를 관리하고 동기화 공급자와 응용 프로그램을 만들 수 있습니다.
구조, 열거형, 플래그
다음 표에서는 Sync Framework에서 정의하는 구조, 열거형 및 플래그 집합 목록을 보여 주고 일반적으로 각 구성 요소가 연결된 기능을 알려 줍니다.
구성 요소 | 연결된 기능 |
---|---|
메타데이터 |
|
메타데이터 |
|
필터링 |
|
메타데이터 |
|
메타데이터 |
|
메타데이터 |
|
세션 |
|
메타데이터 |
|
변경 적용 서비스 |
|
제약 조건 충돌 |
|
동시성 충돌 |
|
제약 조건 충돌 |
|
필터링 |
|
필터링 |
|
메타데이터 |
|
제약 조건 충돌 |
|
복구 동기화 |
|
응용 프로그램 콜백 |
|
응용 프로그램 콜백 |
|
동시성 충돌 |
|
변경 내용 적용 |
|
버전 관리 |
|
메타데이터 |
|
메타데이터 |
|
필터링 |
|
메타데이터 |
Sync Framework에서 구현되는 인터페이스
다음은 Sync Framework에서 구현되는 인터페이스입니다.
팩터리 인터페이스
다음 인터페이스는 주로 다른 Sync Framework 구성 요소를 만드는 데 사용됩니다. CLSID_SyncServices 및 지정된 IID를 CoCreateInstance에 전달하여 이러한 각 인터페이스를 만들 수 있습니다.
인터페이스 | IID |
---|---|
IID_IApplicationSyncServices |
|
IID_IClockVectorServices |
|
IID_IProviderCustomFilteredSyncServices |
|
IID_IProviderFilteredSyncServices |
|
IID_IProviderFilteredSyncServices2 |
|
IID_IProviderSyncServices |
|
IID_IProviderSyncServices2 |
일괄 변경 내용 인터페이스
다음 인터페이스는 일괄 변경 내용을 나타냅니다. 지정된 IID를 다른 인터페이스의 QueryInterface 메서드에 전달하여 각 인터페이스를 가져올 수 있습니다. 일부 인터페이스는 지정된 조건에 맞을 때만 구현됩니다.
인터페이스 | IID | 조건 |
---|---|---|
IID_ISyncChangeBatch |
일괄 변경 내용이 복구 동기화의 일부가 될 수 없습니다. |
|
IID_ISyncChangeBatch2 |
항상 |
|
IID_ISyncChangeBatchAdvanced |
항상 |
|
IID_ISyncChangeBatchBase |
항상 |
|
IID_ISyncChangeBatchBase2 |
항상 |
|
IID_ISyncChangeBatchWithFilterKeyMap |
항상 |
|
IID_ISyncChangeBatchWithPrerequisite |
항상 |
|
IID_ISyncFullEnumerationChangeBatch |
일괄 변경 내용이 복구 동기화의 일부여야 합니다. |
|
IID_ISyncFullEnumerationChangeBatch2 |
일괄 변경 내용이 복구 동기화의 일부여야 합니다. |
다음 인터페이스는 단일 변경 내용을 나타냅니다. 지정된 IID를 다른 인터페이스의 QueryInterface 메서드에 전달하여 각 인터페이스를 가져올 수 있습니다.
인터페이스 | IID |
---|---|
IID_ISyncChange |
|
IID_ISyncChangeWithFilterKeyMap |
|
IID_ISyncChangeWithPrerequisite |
|
IID_ISyncFullEnumerationChange |
|
IID_ISyncMergeTombstoneChange |
다음 인터페이스는 ISyncChange 개체에 추가 정보를 제공하는 데 사용됩니다. 지정된 메커니즘을 사용하여 각 인터페이스를 가져올 수 있습니다.
인터페이스 | 가져오는 방법 |
---|---|
ISyncChangeBuilder 개체의 QueryInterface 메서드에 IID_IFilterTrackingSyncChangeBuilder를 전달합니다. |
|
ISyncChangeBatchBase::AddItemMetadataToGroup과 같은 다양한 메서드에서 반환됩니다. |
다음 인터페이스는 변경 단위를 처리하는 데 사용됩니다. 지정된 메커니즘을 사용하여 각 인터페이스를 가져올 수 있습니다.
인터페이스 | 가져오는 방법 |
---|---|
IEnumSyncChangeUnits::Next를 호출합니다. |
|
ISyncChange::GetChangeUnits와 같은 메서드를 호출합니다. |
다음 인터페이스는 변경 내용 목록을 작성하거나 열거하는 데 사용됩니다. 지정된 메커니즘을 사용하여 각 인터페이스를 가져올 수 있습니다.
인터페이스 | 가져오는 방법 |
---|---|
IProviderSyncServices::CreateDestinationChangeVersionsBuilder를 호출합니다. |
|
IDestinationChangeVersionsBuilder 개체의 QueryInterface 메서드에 IID_IDestinationChangeVersionsBuilder2를 전달합니다. |
|
ISyncChangeBatchBase::GetChangeEnumerator 또는 IDestinationChangeVersionsBuilder::GetChangeEnumerator를 호출합니다. |
|
IDestinationChangeVersionsBuilder 개체의 QueryInterface 메서드에 IID_IFilterTrackingSyncChangeBuilder를 전달합니다. |
변경 내용 적용자 인터페이스
다음 인터페이스는 대상 공급자가 충돌을 처리하고 변경 내용을 적용하기 위해 사용할 수 있습니다.
다음 표에 나오는 인터페이스는 지정된 IID를 IProviderSyncServices::CreateChangeApplier 메서드 또는 표에 제공된 다른 인터페이스의 QueryInterface 메서드에 전달하여 가져올 수 있습니다.
인터페이스 | IID |
---|---|
IID_IAsynchronousNotifyingChangeApplier |
|
IID_ISynchronousNotifyingChangeApplier |
|
IID_ISynchronousNotifyingChangeApplier2 |
변경 내용 적용자는 IAsynchronousNotifyingChangeApplierTarget::RegisterCallback을 호출하여 다음 인터페이스를 대상 공급자에 등록합니다.
인터페이스 | IID |
---|---|
IID_IAsynchronousNotifyingChangeApplierTargetCallback |
다음 인터페이스는 충돌을 검색하고 변경 내용을 적용하는 동안 변경 내용 적용자와 공급자 간의 통신을 위해 사용됩니다. 지정된 메커니즘을 사용하여 각 인터페이스를 가져올 수 있습니다.
인터페이스 | 가져오는 방법 |
---|---|
ISynchronousDataRetriever::LoadChangeData와 같은 메서드에 전달됩니다. |
|
ISaveChangeContext 또는 ISaveChangeWithChangeUnitsContext 개체의 QueryInterface 메서드에 IID_IFilterTrackingSaveChangeContext를 전달합니다. |
|
IProviderSyncServices::CreateRecoverableErrorData, IRecoverableError::GetRecoverableErrorDataForChange 또는 IRecoverableError::GetRecoverableErrorDataForChangeUnit을 호출합니다. |
|
ISynchronousNotifyingChangeApplierTarget::SaveChange 및 IAsynchronousNotifyingChangeApplierTarget::SaveChange에 전달됩니다. |
|
ISaveChangeContext 개체의 QueryInterface 메서드에 IID_ISaveChangeContext2를 전달합니다. |
|
ISynchronousNotifyingChangeApplierTarget::SaveChangeWithChangeUnits 및 IAsynchronousNotifyingChangeApplierTarget::SaveChangeWithChangeUnits에 전달됩니다. |
|
ISaveChangeWithChangeUnitsContext 개체의 QueryInterface 메서드에 IID_ISaveChangeWithChangeUnitsContext2를 전달합니다. |
|
다음 인터페이스는 더 높은 수준의 유연성이 필요한 경우 표준 변경 내용 적용자 대신 사용될 수 있습니다. 지정된 메커니즘을 사용하여 각 인터페이스를 가져올 수 있습니다.
인터페이스 | 가져오는 방법 |
---|---|
IChangeApplicationServices::GetChangeApplicationContext를 호출합니다. |
|
IProviderSyncServices::CreateChangeApplier에 IID_IChangeApplicationServices를 전달합니다. |
충돌 로깅
다음 인터페이스는 충돌을 로그에 기록하는 데 사용됩니다. 지정된 메커니즘을 사용하여 각 인터페이스를 가져올 수 있습니다.
인터페이스 | 가져오는 방법 |
---|---|
공급자에 의해 구현되거나, IMemoryConflictLog 개체의 QueryInterface 메서드에 IID_IConflictLogAccess를 전달하여 가져올 수 있습니다. |
|
공급자에 의해 구현되거나, IMemoryConflictLog 개체의 QueryInterface 메서드에 IID_IConflictLogWriter를 전달하여 가져올 수 있습니다. |
|
IProviderSyncServices2::CreateLoggedConflictsEnumBuilder를 호출합니다. |
|
필터링
다음 인터페이스는 동기화 범위에 포함되는 데이터를 제어하는 데 사용되는 필터에 대한 정보를 나타냅니다. 지정된 메커니즘을 사용하여 각 인터페이스를 가져올 수 있습니다.
인터페이스 | 가져오는 방법 |
---|---|
IProviderFilteredSyncServices::CreateFilterInfo에 SYNC_FILTER_INFO_FLAG_CHANGE_UNIT_LIST 플래그를 전달한 다음, 반환된 ISyncFilterInfo 개체의 QueryInterface 메서드에 IID_IChangeUnitListFilterInfo를 전달합니다. |
|
IProviderCustomFilteredSyncServices::CreateCombinedFilterInfo를 호출합니다. |
|
IProviderCustomFilteredSyncServices::CreateCustomFilterInfo를 호출합니다. |
|
IProviderCustomFilteredSyncServices::CreateFilterKeyMap 또는 ISyncChangeBatchWithFilterKeyMap::GetFilterKeyMap을 호출합니다. |
|
IProviderFilteredSyncServices::CreateFilterInfo와 같은 메서드를 호출합니다. |
|
ISyncFilterInfo 개체의 QueryInterface 메서드에 IID_ISyncFilterInfo2를 전달합니다. |
정보 메타데이터
다음 인터페이스는 정보 개체를 나타냅니다. 다음 표에 나오는 인터페이스는 지정된 IID를 표에 제공된 다른 인터페이스의 QueryInterface 메서드에 전달하여 가져올 수 있습니다. 일부 인터페이스의 메서드는 정보 개체의 최소 지원 버전이 예상 값이 아니면 실패합니다. 예를 들어 ISyncKnowledge::GetSingleItemExceptions는 최소 지원 버전이 SYNC_SERIALIZATION_VERSION_V1이 아니면 실패합니다. 또한 일부 메서드는 최소 지원 버전을 변경합니다. 예를 들어 IKnowledgeWithMarkers::AddAllChangeUnitsRequiredMarker는 최소 지원 버전을 SYNC_SERIALIZATION_VERSION_V3로 설정합니다. 필수 또는 설정된 최소 지원 버전에 대한 자세한 내용은 각 메서드의 참조 설명서를 참조하십시오.
인터페이스 | IID |
---|---|
IID_ISyncKnowledge |
|
IID_ISyncKnowledge2 |
|
IID_IKnowledgeWithMarkers |
|
IID_IForgottenKnowledge |
다음 인터페이스는 최소 지원 버전이 SYNC_SERIALIZATION_VERSION_V1인 정보 개체의 구성 요소를 나타냅니다. 정보 개체의 최소 지원 버전을 가져오려면 ISyncKnowledge2::GetMinimumSupportedVersion을 호출합니다. 지정된 메서드를 호출하여 각 인터페이스를 가져올 수 있습니다.
인터페이스 | 호출 메서드 |
---|---|
다음 인터페이스는 모든 버전의 정보 개체에 포함된 구성 요소를 나타냅니다. 지정된 메서드를 호출하여 각 인터페이스를 가져올 수 있습니다.
인터페이스 | 호출 메서드 |
---|---|
ISyncKnowledge::FindClockVectorForItem 또는 ISyncKnowledge::FindClockVectorForChangeUnit |
|
IProviderSyncServices::CreateReplicaKeyMap 또는 ISyncKnowledge::GetReplicaKeyMap. |
다음 인터페이스는 정보 개체를 검사하거나 빌드하는 데 사용됩니다. 지정된 메커니즘을 사용하여 각 인터페이스를 가져올 수 있습니다.
인터페이스 | 가져오는 방법 |
---|---|
IReplicaKeyMap 개체의 QueryInterface 메서드에 IID_IConstructReplicaKeyMap을 전달합니다. |
|
ISyncKnowledge2::GetInspector에 IID_ICoreFragmentInspector를 전달합니다. |
|
IKnowledgeBuilder 개체의 QueryInterface 메서드에 IID_IKnowledgeBuilder2를 전달합니다. |
세션 인터페이스
다음 인터페이스는 동기화 세션을 시작하고 세션 정보를 검색하기 위해 동기화 응용 프로그램에서 사용합니다. 지정된 메커니즘을 사용하여 각 인터페이스를 가져올 수 있습니다.
인터페이스 | 가져오는 방법 |
---|---|
ISyncSession 개체의 QueryInterface 메서드에 IID_ISyncSessionExtendedErrorInfo를 전달합니다. |
|
IProviderSyncServices2::CreateSyncSessionState를 호출합니다. 또한 Sync Framework에 의해 IKnowledgeSyncProvider::BeginSession 및 IKnowledgeSyncProvider::EndSession에 전달됩니다. |
|
ISyncSessionState 개체의 QueryInterface 메서드에 IID_ISyncSessionState2를 전달합니다. |
|
ISyncSessionState 개체의 QueryInterface 메서드에 IID_ISyncDataConversionControl을 전달합니다. |
응용 프로그램 콜백 데이터 인터페이스
다음 인터페이스는 지정된 콜백 메서드를 사용하여 Sync Framework에 의해 동기화 응용 프로그램에 전달됩니다.
인터페이스 | 콜백 메서드 |
---|---|
기타 인터페이스
다음 인터페이스는 공급자 변환기를 등록하는 데 사용됩니다. 지정된 메서드를 호출하여 각 인터페이스를 가져올 수 있습니다.
인터페이스 | 호출 메서드 |
---|---|
동기화 공급자에서 구현되는 인터페이스
다음은 동기화 공급자에서 구현되는 인터페이스입니다.
공급자 인터페이스
아래에 나오는 각 인터페이스는 지정된 IID를 받으면 ISyncProvider 개체의 QueryInterface 메서드에서 반환되어야 합니다. 이러한 인터페이스는 IApplicationSyncServices::CreateSyncSession을 사용하여 동기화 응용 프로그램에 의해 동기화 세션 개체에 전달됩니다.
인터페이스 | IID |
---|---|
IID_IKnowledgeSyncProvider |
|
IID_ISyncProvider |
|
IID_IFilterTrackingProvider |
|
IID_IRequestFilteredSync |
|
IID_ISupportFilteredSync |
변경 내용 적용자 대상 인터페이스
다음 인터페이스는 동기식 변경 내용 적용자를 사용하는 대상 공급자에 의해 구현됩니다. 구현된 각 인터페이스는 지정된 IID를 받으면 ISynchronousNotifyingChangeApplierTarget 개체의 QueryInterface 메서드에서 반환되어야 합니다. 이러한 인터페이스는 ISynchronousNotifyingChangeApplier::ApplyChanges와 같은 메서드를 사용하여 변경 내용 적용자 구성 요소에 전달됩니다.
인터페이스 | IID |
---|---|
IID_ISynchronousNotifyingChangeApplierTarget |
|
IID_ISynchronousNotifyingChangeApplierTarget2 |
|
IID_IFilteredReplicaNotifyingChangeApplierTarget |
|
IID_IFilterTrackingNotifyingChangeApplierTarget |
다음 인터페이스는 비동기식 변경 내용 적용자를 사용하는 대상 공급자에 의해 구현됩니다. 이 인터페이스는 IAsynchronousNotifyingChangeApplier::ApplyChanges와 같은 메서드를 사용하여 변경 내용 적용자 구성 요소에 전달됩니다.
인터페이스 | IID |
---|---|
IID_IAsynchronousNotifyingChangeApplierTarget |
데이터 검색자 인터페이스
다음 인터페이스는 변경 내용 적용자를 사용하는 대상 공급자에 의해 구현됩니다. 이러한 인터페이스는 지정된 메서드를 사용하여 변경 내용 적용자 구성 요소에 전달됩니다.
인터페이스 | 메서드 |
---|---|
기타 공급자 인터페이스
다음 인터페이스는 필터링 또는 데이터 변환과 같은 다양한 기능을 이용하기 위해 공급자에 의해 구현됩니다. 이러한 인터페이스는 지정된 메커니즘을 사용하여 Sync Framework에 전달됩니다.
인터페이스 | 메커니즘 |
---|---|
IFilteredReplicaNotifyingChangeApplierTarget::GetNewMoveins와 같은 메서드에서 반환됩니다. |
|
IProviderConverterRegistration::RegisterProviderConverter에 전달됩니다. |
|
데이터 검색자 개체의 QueryInterface에 IID_ISupportLastWriteTime이 전달되면 반환됩니다. 일반적으로 이 개체는 ISynchronousDataRetriever입니다. |
|
ISyncDataConversionControl::SetSourceDataConverter 또는 ISyncDataConversionControl::SetDestinationDataConverter에 전달됩니다. |
|
IProviderCustomFilteredSyncServices::CreateCustomFilterInfo 또는 IFilterKeyMap::AddFilter와 같은 메서드에 전달됩니다. |
|
IProviderCustomFilteredSyncServices::DeserializeFilterKeyMap 또는 IProviderCustomFilteredSyncServices::DeserializeChangeBatchWithFilterKeyMap에 전달됩니다. |
동기화 응용 프로그램에서 구현되는 인터페이스
다음 인터페이스는 동기화 작업에서 발생하는 이벤트 알림을 받기 위해 동기화 응용 프로그램에서 구현됩니다. Sync Framework에서는 ISyncSession::RegisterCallback에 전달되는 ISyncCallback 인터페이스의 QueryInterface 메서드에 지정된 IID를 전달하여 이러한 인터페이스를 가져옵니다.
인터페이스 | IID |
---|---|
IID_ISyncCallback |
|
IID_ISyncCallback2 |
|
IID_ISyncConstraintCallback |
오류 코드
Sync Framework에서는 사용자 지정 오류 집합을 사용하여 문제를 보고합니다. 자세한 내용은 Sync Framework 오류 코드를 참조하십시오.
참고 항목
개념
Sync Framework 관리되지 않는 API
Microsoft Sync Framework
사용자 지정 공급자 기본 사항
표준 공급자의 메타데이터 관리
표준 사용자 지정 공급자 구현
동기화 응용 프로그램 구현