Compartilhar via


Como criar um aplicativo de sincronização não gerenciado

Este tópico mostra como usar uma linguagem não gerenciada, como C++, para criar um aplicativo que use o Microsoft Sync Framework para criar uma sessão de sincronização e conectá-la aos provedores de origem e destino.

Este tópico pressupõe familiaridade básica com C++ e conceitos de COM.

Os exemplos neste tópico se concentram nos seguintes componentes do Sync Framework:

Noções básicas sobre aplicativos de sincronização

Um aplicativo de sincronização é um componente de software que cria uma sessão de sincronização, conecta-a com dois provedores de sincronização, usa a sessão para iniciar a sincronização e hospeda o Sync Framework durante a sincronização.

Para obter mais informações sobre a função do aplicativo de sincronização, consulte Implementando um aplicativo de sincronização.

Requisitos de compilação

  • Declarações Synchronization.h: para componentes do Sync Framework.

    #include <synchronization.h>
    
  • Códigos de erro personalizados SynchronizationErrors.h:.

    #include <synchronizationerrors.h>
    
  • Biblioteca de importação Synchronization.lib:.

Exemplo

O código de exemplo neste tópico mostra como criar uma sessão de sincronização, inicializá-la nos provedores de origem e destino e iniciar a sessão. O exemplo também mostra uma maneira de exibir estatísticas de sessão para o usuário.

Observe que um aplicativo pode obter os provedores da maneira mais apropriada para o tipo do aplicativo. O exemplo pressupõe que o aplicativo já tem duas interfaces Interface ISyncProvider: uma que representa a réplica de origem e outra que representa a réplica de destino.

Criando e iniciando uma sessão de sincronização

Os exemplos usam CoCreateInstance para criar um objeto IApplicationSyncServices. Esse objeto é usado para criar e inicializar um objeto de sessão. A sessão é iniciada. Quando a sincronização é concluída, as estatísticas da sessão são mostradas para o usuário em uma caixa de mensagem.

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;
}

Próximas etapas

Agora que você criou um aplicativo de sincronização, crie um provedor de sincronização. Para obter mais informações, consulte Como criar um provedor de sincronização não gerenciado. Você também pode aprimorar o aplicativo registrando-o para receber notificações durante a sessão. Para obter mais informações, consulte Respondendo a eventos de sincronização.

Consulte também

Referência

Interface ISyncSession
Estrutura SYNC_SESSION_STATISTICS

Conceitos

Implementando um aplicativo de sincronização