다음을 통해 공유


방법: 관리되지 않는 동기화 응용 프로그램 만들기

이 항목에서는 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 구조

개념

동기화 응용 프로그램 구현