다음을 통해 공유


Sync Framework 핵심 구성 요소

관리되지 않는 언어에서 Sync Framework 핵심 구성 요소를 사용하여 동기화를 수행할 수 있습니다. 또한 이러한 핵심 구성 요소로 메타데이터를 관리하고 동기화 공급자와 응용 프로그램을 만들 수 있습니다.

구조, 열거형, 플래그

다음 표에서는 Sync Framework에서 정의하는 구조, 열거형 및 플래그 집합 목록을 보여 주고 일반적으로 각 구성 요소가 연결된 기능을 알려 줍니다.

구성 요소 연결된 기능

ID_PARAMETER_PAIR 구조

메타데이터

ID_PARAMETERS 구조

메타데이터

SYNC_FILTER_CHANGE 구조

필터링

SYNC_GID 구조

메타데이터

SYNC_ID 구조

메타데이터

SYNC_RANGE 구조

메타데이터

SYNC_SESSION_STATISTICS 구조

세션

SYNC_VERSION 구조

메타데이터

CHANGE_APPLICATION_ACTION 열거형

변경 적용 서비스

COLLISION_CONFLICT_RESOLUTION_POLICY 열거형

제약 조건 충돌

CONFLICT_RESOLUTION_POLICY 열거형

동시성 충돌

CONSTRAINT_CONFLICT_REASON 열거형

제약 조건 충돌

FILTER_COMBINATION_TYPE 열거형

필터링

FILTERING_TYPE 열거형

필터링

KNOWLEDGE_COOKIE_COMPARISON_RESULT 열거형

메타데이터

SYNC_CONSTRAINT_RESOLVE_ACTION 열거형

제약 조건 충돌

SYNC_FULL_ENUMERATION_ACTION 열거형

복구 동기화

SYNC_PROGRESS_STAGE 열거형

응용 프로그램 콜백

SYNC_PROVIDER_ROLE 열거형

응용 프로그램 콜백

SYNC_RESOLVE_ACTION 열거형

동시성 충돌

SYNC_SAVE_ACTION 열거형

변경 내용 적용

SYNC_SERIALIZATION_VERSION 열거형

버전 관리

SYNC_STATISTICS 열거형

메타데이터

SYNC_CHANGE_FLAG 플래그

메타데이터

SYNC_FILTER_INFO_FLAG 플래그

필터링

SYNC_SERIALIZE 플래그

메타데이터

Sync Framework에서 구현되는 인터페이스

다음은 Sync Framework에서 구현되는 인터페이스입니다.

팩터리 인터페이스

다음 인터페이스는 주로 다른 Sync Framework 구성 요소를 만드는 데 사용됩니다. CLSID_SyncServices 및 지정된 IID를 CoCreateInstance에 전달하여 이러한 각 인터페이스를 만들 수 있습니다.

인터페이스 IID

IApplicationSyncServices 인터페이스

IID_IApplicationSyncServices

IClockVectorServices 인터페이스

IID_IClockVectorServices

IProviderCustomFilteredSyncServices 인터페이스

IID_IProviderCustomFilteredSyncServices

IProviderFilteredSyncServices 인터페이스

IID_IProviderFilteredSyncServices

IProviderFilteredSyncServices2 인터페이스

IID_IProviderFilteredSyncServices2

IProviderSyncServices 인터페이스

IID_IProviderSyncServices

IProviderSyncServices2 인터페이스

IID_IProviderSyncServices2

일괄 변경 내용 인터페이스

다음 인터페이스는 일괄 변경 내용을 나타냅니다. 지정된 IID를 다른 인터페이스의 QueryInterface 메서드에 전달하여 각 인터페이스를 가져올 수 있습니다. 일부 인터페이스는 지정된 조건에 맞을 때만 구현됩니다.

인터페이스 IID 조건

ISyncChangeBatch 인터페이스

IID_ISyncChangeBatch

일괄 변경 내용이 복구 동기화의 일부가 될 수 없습니다.

ISyncChangeBatch2 인터페이스

IID_ISyncChangeBatch2

항상

ISyncChangeBatchAdvanced 인터페이스

IID_ISyncChangeBatchAdvanced

항상

ISyncChangeBatchBase 인터페이스

IID_ISyncChangeBatchBase

항상

ISyncChangeBatchBase2 인터페이스

IID_ISyncChangeBatchBase2

항상

ISyncChangeBatchWithFilterKeyMap 인터페이스

IID_ISyncChangeBatchWithFilterKeyMap

항상

ISyncChangeBatchWithPrerequisite 인터페이스

IID_ISyncChangeBatchWithPrerequisite

항상

ISyncFullEnumerationChangeBatch 인터페이스

IID_ISyncFullEnumerationChangeBatch

일괄 변경 내용이 복구 동기화의 일부여야 합니다.

ISyncFullEnumerationChangeBatch2 인터페이스

IID_ISyncFullEnumerationChangeBatch2

일괄 변경 내용이 복구 동기화의 일부여야 합니다.

다음 인터페이스는 단일 변경 내용을 나타냅니다. 지정된 IID를 다른 인터페이스의 QueryInterface 메서드에 전달하여 각 인터페이스를 가져올 수 있습니다.

인터페이스 IID

ISyncChange 인터페이스

IID_ISyncChange

ISyncChangeWithFilterKeyMap 인터페이스

IID_ISyncChangeWithFilterKeyMap

ISyncChangeWithPrerequisite 인터페이스

IID_ISyncChangeWithPrerequisite

ISyncFullEnumerationChange 인터페이스

IID_ISyncFullEnumerationChange

ISyncMergeTombstoneChange 인터페이스

IID_ISyncMergeTombstoneChange

다음 인터페이스는 ISyncChange 개체에 추가 정보를 제공하는 데 사용됩니다. 지정된 메커니즘을 사용하여 각 인터페이스를 가져올 수 있습니다.

인터페이스 가져오는 방법

IFilterTrackingSyncChangeBuilder 인터페이스

ISyncChangeBuilder 개체의 QueryInterface 메서드에 IID_IFilterTrackingSyncChangeBuilder를 전달합니다.

ISyncChangeBuilder 인터페이스

ISyncChangeBatchBase::AddItemMetadataToGroup과 같은 다양한 메서드에서 반환됩니다.

다음 인터페이스는 변경 단위를 처리하는 데 사용됩니다. 지정된 메커니즘을 사용하여 각 인터페이스를 가져올 수 있습니다.

인터페이스 가져오는 방법

ISyncChangeUnit 인터페이스

IEnumSyncChangeUnits::Next를 호출합니다.

IEnumSyncChangeUnits 인터페이스

ISyncChange::GetChangeUnits와 같은 메서드를 호출합니다.

다음 인터페이스는 변경 내용 목록을 작성하거나 열거하는 데 사용됩니다. 지정된 메커니즘을 사용하여 각 인터페이스를 가져올 수 있습니다.

인터페이스 가져오는 방법

IDestinationChangeVersionsBuilder 인터페이스

IProviderSyncServices::CreateDestinationChangeVersionsBuilder를 호출합니다.

IDestinationChangeVersionsBuilder2 인터페이스

IDestinationChangeVersionsBuilder 개체의 QueryInterface 메서드에 IID_IDestinationChangeVersionsBuilder2를 전달합니다.

IEnumSyncChanges 인터페이스

ISyncChangeBatchBase::GetChangeEnumerator 또는 IDestinationChangeVersionsBuilder::GetChangeEnumerator를 호출합니다.

IFilterTrackingSyncChangeBuilder 인터페이스

IDestinationChangeVersionsBuilder 개체의 QueryInterface 메서드에 IID_IFilterTrackingSyncChangeBuilder를 전달합니다.

변경 내용 적용자 인터페이스

다음 인터페이스는 대상 공급자가 충돌을 처리하고 변경 내용을 적용하기 위해 사용할 수 있습니다.

다음 표에 나오는 인터페이스는 지정된 IID를 IProviderSyncServices::CreateChangeApplier 메서드 또는 표에 제공된 다른 인터페이스의 QueryInterface 메서드에 전달하여 가져올 수 있습니다.

인터페이스 IID

IAsynchronousNotifyingChangeApplier 인터페이스

IID_IAsynchronousNotifyingChangeApplier

ISynchronousNotifyingChangeApplier 인터페이스

IID_ISynchronousNotifyingChangeApplier

ISynchronousNotifyingChangeApplier2 인터페이스

IID_ISynchronousNotifyingChangeApplier2

변경 내용 적용자는 IAsynchronousNotifyingChangeApplierTarget::RegisterCallback을 호출하여 다음 인터페이스를 대상 공급자에 등록합니다.

인터페이스 IID

IAsynchronousNotifyingChangeApplierTargetCallback 인터페이스

IID_IAsynchronousNotifyingChangeApplierTargetCallback

다음 인터페이스는 충돌을 검색하고 변경 내용을 적용하는 동안 변경 내용 적용자와 공급자 간의 통신을 위해 사용됩니다. 지정된 메커니즘을 사용하여 각 인터페이스를 가져올 수 있습니다.

인터페이스 가져오는 방법

ILoadChangeContext 인터페이스

ISynchronousDataRetriever::LoadChangeData와 같은 메서드에 전달됩니다.

IFilterTrackingSaveChangeContext 인터페이스

ISaveChangeContext 또는 ISaveChangeWithChangeUnitsContext 개체의 QueryInterface 메서드에 IID_IFilterTrackingSaveChangeContext를 전달합니다.

IRecoverableErrorData 인터페이스

IProviderSyncServices::CreateRecoverableErrorData, IRecoverableError::GetRecoverableErrorDataForChange 또는 IRecoverableError::GetRecoverableErrorDataForChangeUnit을 호출합니다.

ISaveChangeContext 인터페이스

ISynchronousNotifyingChangeApplierTarget::SaveChangeIAsynchronousNotifyingChangeApplierTarget::SaveChange에 전달됩니다.

ISaveChangeContext2 인터페이스

ISaveChangeContext 개체의 QueryInterface 메서드에 IID_ISaveChangeContext2를 전달합니다.

ISaveChangeWithChangeUnitsContext 인터페이스

ISynchronousNotifyingChangeApplierTarget::SaveChangeWithChangeUnitsIAsynchronousNotifyingChangeApplierTarget::SaveChangeWithChangeUnits에 전달됩니다.

ISaveChangeWithChangeUnitsContext2 인터페이스

ISaveChangeWithChangeUnitsContext 개체의 QueryInterface 메서드에 IID_ISaveChangeWithChangeUnitsContext2를 전달합니다.

IDataRetrieverCallback 인터페이스

IAsynchronousDataRetriever::RegisterCallback에 전달됩니다.

다음 인터페이스는 더 높은 수준의 유연성이 필요한 경우 표준 변경 내용 적용자 대신 사용될 수 있습니다. 지정된 메커니즘을 사용하여 각 인터페이스를 가져올 수 있습니다.

인터페이스 가져오는 방법

IChangeApplicationContext 인터페이스

IChangeApplicationServices::GetChangeApplicationContext를 호출합니다.

IChangeApplicationServices 인터페이스

IProviderSyncServices::CreateChangeApplier에 IID_IChangeApplicationServices를 전달합니다.

충돌 로깅

다음 인터페이스는 충돌을 로그에 기록하는 데 사용됩니다. 지정된 메커니즘을 사용하여 각 인터페이스를 가져올 수 있습니다.

인터페이스 가져오는 방법

IConflictLogAccess 인터페이스

공급자에 의해 구현되거나, IMemoryConflictLog 개체의 QueryInterface 메서드에 IID_IConflictLogAccess를 전달하여 가져올 수 있습니다.

IConflictLogWriter 인터페이스

공급자에 의해 구현되거나, IMemoryConflictLog 개체의 QueryInterface 메서드에 IID_IConflictLogWriter를 전달하여 가져올 수 있습니다.

IEnumLoggedConflicts 인터페이스

IEnumLoggedConflictsBuilder::GetChangeEnumerator를 호출합니다.

IEnumLoggedConflictsBuilder 인터페이스

IProviderSyncServices2::CreateLoggedConflictsEnumBuilder를 호출합니다.

ILoggedConflict 인터페이스

IProviderSyncServices2::CreateLoggedConflict를 호출합니다.

IMemoryConflictLog 인터페이스

IProviderSyncServices2::CreateMemoryConflictLog를 호출합니다.

필터링

다음 인터페이스는 동기화 범위에 포함되는 데이터를 제어하는 데 사용되는 필터에 대한 정보를 나타냅니다. 지정된 메커니즘을 사용하여 각 인터페이스를 가져올 수 있습니다.

인터페이스 가져오는 방법

IChangeUnitListFilterInfo 인터페이스

IProviderFilteredSyncServices::CreateFilterInfo에 SYNC_FILTER_INFO_FLAG_CHANGE_UNIT_LIST 플래그를 전달한 다음, 반환된 ISyncFilterInfo 개체의 QueryInterface 메서드에 IID_IChangeUnitListFilterInfo를 전달합니다.

ICombinedFilterInfo 인터페이스

IProviderCustomFilteredSyncServices::CreateCombinedFilterInfo를 호출합니다.

ICustomFilterInfo 인터페이스

IProviderCustomFilteredSyncServices::CreateCustomFilterInfo를 호출합니다.

IFilterKeyMap 인터페이스

IProviderCustomFilteredSyncServices::CreateFilterKeyMap 또는 ISyncChangeBatchWithFilterKeyMap::GetFilterKeyMap을 호출합니다.

IFilterRequestCallback 인터페이스

IRequestFilteredSync::SpecifyFilter에 전달됩니다.

IFilterTrackingRequestCallback 인터페이스

IFilterTrackingProvider::SpecifyTrackedFilters에 전달됩니다.

ISyncFilterInfo 인터페이스

IProviderFilteredSyncServices::CreateFilterInfo와 같은 메서드를 호출합니다.

ISyncFilterInfo2 인터페이스

ISyncFilterInfo 개체의 QueryInterface 메서드에 IID_ISyncFilterInfo2를 전달합니다.

정보 메타데이터

다음 인터페이스는 정보 개체를 나타냅니다. 다음 표에 나오는 인터페이스는 지정된 IID를 표에 제공된 다른 인터페이스의 QueryInterface 메서드에 전달하여 가져올 수 있습니다. 일부 인터페이스의 메서드는 정보 개체의 최소 지원 버전이 예상 값이 아니면 실패합니다. 예를 들어 ISyncKnowledge::GetSingleItemExceptions는 최소 지원 버전이 SYNC_SERIALIZATION_VERSION_V1이 아니면 실패합니다. 또한 일부 메서드는 최소 지원 버전을 변경합니다. 예를 들어 IKnowledgeWithMarkers::AddAllChangeUnitsRequiredMarker는 최소 지원 버전을 SYNC_SERIALIZATION_VERSION_V3로 설정합니다. 필수 또는 설정된 최소 지원 버전에 대한 자세한 내용은 각 메서드의 참조 설명서를 참조하십시오.

인터페이스 IID

ISyncKnowledge 인터페이스

IID_ISyncKnowledge

ISyncKnowledge2 인터페이스

IID_ISyncKnowledge2

IKnowledgeWithMarkers 인터페이스

IID_IKnowledgeWithMarkers

IForgottenKnowledge 인터페이스

IID_IForgottenKnowledge

다음 인터페이스는 최소 지원 버전이 SYNC_SERIALIZATION_VERSION_V1인 정보 개체의 구성 요소를 나타냅니다. 정보 개체의 최소 지원 버전을 가져오려면 ISyncKnowledge2::GetMinimumSupportedVersion을 호출합니다. 지정된 메서드를 호출하여 각 인터페이스를 가져올 수 있습니다.

인터페이스 호출 메서드

IChangeUnitException 인터페이스

IEnumChangeUnitExceptions::Next

IRangeException 인터페이스

IEnumRangeExceptions::Next

ISingleItemException 인터페이스

IEnumSingleItemExceptions::Next

IEnumChangeUnitExceptions 인터페이스

ISyncKnowledge::GetChangeUnitExceptions

IEnumRangeExceptions 인터페이스

ISyncKnowledge::GetRangeExceptions

IEnumSingleItemExceptions 인터페이스

ISyncKnowledge::GetSingleItemExceptions

다음 인터페이스는 모든 버전의 정보 개체에 포함된 구성 요소를 나타냅니다. 지정된 메서드를 호출하여 각 인터페이스를 가져올 수 있습니다.

인터페이스 호출 메서드

IClockVector 인터페이스

ISyncKnowledge::FindClockVectorForItem 또는 ISyncKnowledge::FindClockVectorForChangeUnit

IClockVectorElement 인터페이스

IEnumClockVector::Next

IEnumClockVector 인터페이스

IClockVector::GetClockVectorElements

ICoreFragment 인터페이스

ICoreFragmentInspector::NextCoreFragments

IReplicaKeyMap 인터페이스

IProviderSyncServices::CreateReplicaKeyMap 또는 ISyncKnowledge::GetReplicaKeyMap.

다음 인터페이스는 정보 개체를 검사하거나 빌드하는 데 사용됩니다. 지정된 메커니즘을 사용하여 각 인터페이스를 가져올 수 있습니다.

인터페이스 가져오는 방법

IConstructReplicaKeyMap 인터페이스

IReplicaKeyMap 개체의 QueryInterface 메서드에 IID_IConstructReplicaKeyMap을 전달합니다.

ICoreFragmentInspector 인터페이스

ISyncKnowledge2::GetInspector에 IID_ICoreFragmentInspector를 전달합니다.

IKnowledgeBuilder 인터페이스

IClockVectorServices::CreateKnowledgeBuilder를 호출합니다.

IKnowledgeBuilder2 인터페이스

IKnowledgeBuilder 개체의 QueryInterface 메서드에 IID_IKnowledgeBuilder2를 전달합니다.

세션 인터페이스

다음 인터페이스는 동기화 세션을 시작하고 세션 정보를 검색하기 위해 동기화 응용 프로그램에서 사용합니다. 지정된 메커니즘을 사용하여 각 인터페이스를 가져올 수 있습니다.

인터페이스 가져오는 방법

ISyncSession 인터페이스

IApplicationSyncServices::CreateSyncSession을 호출합니다.

ISyncSessionExtendedErrorInfo 인터페이스

ISyncSession 개체의 QueryInterface 메서드에 IID_ISyncSessionExtendedErrorInfo를 전달합니다.

ISyncSessionState 인터페이스

IProviderSyncServices2::CreateSyncSessionState를 호출합니다. 또한 Sync Framework에 의해 IKnowledgeSyncProvider::BeginSessionIKnowledgeSyncProvider::EndSession에 전달됩니다.

ISyncSessionState2 인터페이스

ISyncSessionState 개체의 QueryInterface 메서드에 IID_ISyncSessionState2를 전달합니다.

ISyncDataConversionControl 인터페이스

ISyncSessionState 개체의 QueryInterface 메서드에 IID_ISyncDataConversionControl을 전달합니다.

응용 프로그램 콜백 데이터 인터페이스

다음 인터페이스는 지정된 콜백 메서드를 사용하여 Sync Framework에 의해 동기화 응용 프로그램에 전달됩니다.

인터페이스 콜백 메서드

IChangeConflict 인터페이스

ISyncCallback::OnConflict

IConstraintConflict 인터페이스

ISyncConstraintCallback::OnConstraintConflict

IRecoverableError 인터페이스

ISyncCallback::OnRecoverableError

기타 인터페이스

다음 인터페이스는 공급자 변환기를 등록하는 데 사용됩니다. 지정된 메서드를 호출하여 각 인터페이스를 가져올 수 있습니다.

인터페이스 호출 메서드

IProviderConverterRegistration 인터페이스

IProviderSyncServices2::CreateProviderConverterRegistration

동기화 공급자에서 구현되는 인터페이스

다음은 동기화 공급자에서 구현되는 인터페이스입니다.

공급자 인터페이스

아래에 나오는 각 인터페이스는 지정된 IID를 받으면 ISyncProvider 개체의 QueryInterface 메서드에서 반환되어야 합니다. 이러한 인터페이스는 IApplicationSyncServices::CreateSyncSession을 사용하여 동기화 응용 프로그램에 의해 동기화 세션 개체에 전달됩니다.

인터페이스 IID

IKnowledgeSyncProvider 인터페이스

IID_IKnowledgeSyncProvider

ISyncProvider 인터페이스

IID_ISyncProvider

IFilterTrackingProvider 인터페이스

IID_IFilterTrackingProvider

IRequestFilteredSync 인터페이스

IID_IRequestFilteredSync

ISupportFilteredSync 인터페이스

IID_ISupportFilteredSync

변경 내용 적용자 대상 인터페이스

다음 인터페이스는 동기식 변경 내용 적용자를 사용하는 대상 공급자에 의해 구현됩니다. 구현된 각 인터페이스는 지정된 IID를 받으면 ISynchronousNotifyingChangeApplierTarget 개체의 QueryInterface 메서드에서 반환되어야 합니다. 이러한 인터페이스는 ISynchronousNotifyingChangeApplier::ApplyChanges와 같은 메서드를 사용하여 변경 내용 적용자 구성 요소에 전달됩니다.

인터페이스 IID

ISynchronousNotifyingChangeApplierTarget 인터페이스

IID_ISynchronousNotifyingChangeApplierTarget

ISynchronousNotifyingChangeApplierTarget2 인터페이스

IID_ISynchronousNotifyingChangeApplierTarget2

IFilteredReplicaNotifyingChangeApplierTarget 인터페이스

IID_IFilteredReplicaNotifyingChangeApplierTarget

IFilterTrackingNotifyingChangeApplierTarget 인터페이스

IID_IFilterTrackingNotifyingChangeApplierTarget

다음 인터페이스는 비동기식 변경 내용 적용자를 사용하는 대상 공급자에 의해 구현됩니다. 이 인터페이스는 IAsynchronousNotifyingChangeApplier::ApplyChanges와 같은 메서드를 사용하여 변경 내용 적용자 구성 요소에 전달됩니다.

인터페이스 IID

IAsynchronousNotifyingChangeApplierTarget 인터페이스

IID_IAsynchronousNotifyingChangeApplierTarget

데이터 검색자 인터페이스

다음 인터페이스는 변경 내용 적용자를 사용하는 대상 공급자에 의해 구현됩니다. 이러한 인터페이스는 지정된 메서드를 사용하여 변경 내용 적용자 구성 요소에 전달됩니다.

인터페이스 메서드

IAsynchronousDataRetriever 인터페이스

IAsynchronousNotifyingChangeApplier::ApplyChanges.

ISynchronousDataRetriever 인터페이스

ISynchronousNotifyingChangeApplier::ApplyChanges.

기타 공급자 인터페이스

다음 인터페이스는 필터링 또는 데이터 변환과 같은 다양한 기능을 이용하기 위해 공급자에 의해 구현됩니다. 이러한 인터페이스는 지정된 메커니즘을 사용하여 Sync Framework에 전달됩니다.

인터페이스 메커니즘

IEnumItemIds 인터페이스

IFilteredReplicaNotifyingChangeApplierTarget::GetNewMoveins와 같은 메서드에서 반환됩니다.

IProviderConverter 인터페이스

IProviderConverterRegistration::RegisterProviderConverter에 전달됩니다.

ISupportLastWriteTime 인터페이스

데이터 검색자 개체의 QueryInterface에 IID_ISupportLastWriteTime이 전달되면 반환됩니다. 일반적으로 이 개체는 ISynchronousDataRetriever입니다.

ISyncDataConverter 인터페이스

ISyncDataConversionControl::SetSourceDataConverter 또는 ISyncDataConversionControl::SetDestinationDataConverter에 전달됩니다.

ISyncFilter 인터페이스

IProviderCustomFilteredSyncServices::CreateCustomFilterInfo 또는 IFilterKeyMap::AddFilter와 같은 메서드에 전달됩니다.

ISyncFilterDeserializer 인터페이스

IProviderCustomFilteredSyncServices::DeserializeFilterKeyMap 또는 IProviderCustomFilteredSyncServices::DeserializeChangeBatchWithFilterKeyMap에 전달됩니다.

동기화 응용 프로그램에서 구현되는 인터페이스

다음 인터페이스는 동기화 작업에서 발생하는 이벤트 알림을 받기 위해 동기화 응용 프로그램에서 구현됩니다. Sync Framework에서는 ISyncSession::RegisterCallback에 전달되는 ISyncCallback 인터페이스의 QueryInterface 메서드에 지정된 IID를 전달하여 이러한 인터페이스를 가져옵니다.

인터페이스 IID

ISyncCallback 인터페이스

IID_ISyncCallback

ISyncCallback2 인터페이스

IID_ISyncCallback2

ISyncConstraintCallback 인터페이스

IID_ISyncConstraintCallback

오류 코드

Sync Framework에서는 사용자 지정 오류 집합을 사용하여 문제를 보고합니다. 자세한 내용은 Sync Framework 오류 코드를 참조하십시오.

참고 항목

개념

Sync Framework 관리되지 않는 API
Microsoft Sync Framework
사용자 지정 공급자 기본 사항
표준 공급자의 메타데이터 관리
표준 사용자 지정 공급자 구현
동기화 응용 프로그램 구현