방법: 관리되지 않는 동기화 응용 프로그램 만들기
이 항목에서는 C++ 등의 관리되지 않는 언어로 Microsoft Sync Framework를 사용하여 동기화 세션을 만들고 원본 및 대상 공급자에 연결하는 응용 프로그램을 만드는 방법을 보여 줍니다.
이 항목에서는 기본적인 C++ 및 COM 개념에 익숙하다고 가정합니다.
이 항목의 예제에서는 다음과 같은 Sync Framework 구성 요소를 중점적으로 설명합니다.
동기화 응용 프로그램 이해
동기화 응용 프로그램은 동기화 세션을 만들어 두 동기화 공급자에 연결하고 세션을 사용하여 동기화를 시작하며 동기화 도중 Sync Framework를 호스팅하는 소프트웨어 구성 요소입니다.
동기화 응용 프로그램의 역할에 대한 자세한 내용은 동기화 응용 프로그램을 참조하십시오.
빌드 요구 사항
Synchronization.h: Sync Framework 구성 요소에 대한 선언
#include <synchronization.h>
SynchronizationErrors.h: 사용자 지정 오류 코드
#include <synchronizationerrors.h>
Synchronization.lib: 가져오기 라이브러리
예제
이 항목의 예제 코드에서는 동기화 세션을 만들고 원본 및 대상 공급자를 사용하여 초기화한 다음 세션을 시작하는 방법을 보여 줍니다. 또한 세션 통계를 사용자에게 표시하는 방법 중 하나를 보여 줍니다.
응용 프로그램은 자신의 유형에 가장 적합한 방법으로 공급자를 가져올 수 있습니다. 이 예제에서는 응용 프로그램에 이미 두 ISyncProvider 인터페이스 인터페이스가 있다고 가정합니다. 하나는 원본 복제본을 나타내며 다른 하나는 대상 복제본을 나타냅니다.
동기화 세션 만들기 및 시작
이 예제에서는 CoCreateInstance
를 사용하여 IApplicationSyncServices 개체를 만듭니다. 그런 다음 이 개체를 사용하여 세션 개체를 만들고 초기화합니다. 세션을 시작하고, 동기화가 끝난 후 메시지 상자를 통해 세션 통계를 사용자에게 보여 줍니다.
HRESULT Synchronize(ISyncProvider* pProvSrc, ISyncProvider* pProvDest)
{
HRESULT hr = E_UNEXPECTED;
IApplicationSyncServices* pSvc = NULL;
hr = CoCreateInstance(CLSID_SyncServices, NULL, CLSCTX_INPROC_SERVER,
IID_IApplicationSyncServices, (void**)&pSvc);
if (SUCCEEDED(hr))
{
ISyncSession* pSession = NULL;
hr = pSvc->CreateSyncSession(pProvDest, pProvSrc, &pSession);
if (SUCCEEDED(hr))
{
SYNC_SESSION_STATISTICS syncStats;
// Arbitrarily choose "destination wins" conflict resolution.
hr = pSession->Start(CRP_DESTINATION_PROVIDER_WINS, &syncStats);
if (SUCCEEDED(hr))
{
// Display the session statistics to the user.
CString strMsg;
strMsg.Format(L"%d changes succeeded.\n%d changes failed.", syncStats.dwChangesApplied,
syncStats.dwChangesFailed);
MessageBox(NULL, strMsg.GetString(), L"Synchronization Statistics", MB_ICONINFORMATION);
}
pSession->Release();
}
pSvc->Release();
}
return hr;
}
다음 단계
이제 동기화 응용 프로그램을 만들었으므로 동기화 공급자를 만들 수 있습니다. 자세한 내용은 방법: 관리되지 않는 동기화 공급자 만들기를 참조하십시오. 응용 프로그램을 개선하여 세션 도중 발생하는 알림을 수신 등록할 수도 있습니다. 자세한 내용은 동기화 이벤트 응답을 참조하십시오.
참고 항목
참조
ISyncSession 인터페이스
SYNC_SESSION_STATISTICS 구조