Building Block Services para a computação na nuvem : o Sync Services.
Olá pessoal, tudo certo?
Continuando nossa discussão sobre Building Block Services, já falamos sobre uma taxonomia de serviços para o S+S e o SSDS, um repositório de dados virtual na nuvem atualmente em desenvolvimento na Microsoft. Este post trata especificamente da arquitetura SYNC e o Sync Services, mais um componente importante nesse cenário.
O SYNC é o Microsoft Synchronization Services, que fornecerá a infra-estrutura para sincronização entre repositórios de dados através de provedores de sincronização, os chamados sync providers.
O Sync Services, como é conhecido, fornece o mecanismo base para a sincronização entre vários dispositivos e repositórios participantes de uma arquitetura S+S, como desktops, dispositivos móveis, software localmente instalado (on premise), Windows Live Services e o próprio SQL Server Data Services.
A arquitetura do Sync Services prevê endpoints de serviços, que são publicados via provedores sync. Esses provedores participam de sessões de sincronização, sendo gerenciados por um controle central, implementado pelo Sync Framework.
A figura abaixo apresenta os elementos principais da arquitetura Sync:
O namespace para utilização do Sync Framework será o Microsoft.Synchronization; Como citado acima, através de providers para cada participante de uma sessão de sincronização, as informações serão equalizadas a partir do disparo de uma operação de sincronização. Vamos ver um exemplo.
Vamos considerar 2 providers, A e B, que devemos sincronizar. Esses dois participantes são serão coleções de string, que podemos inicializar com valores diferentes no começo da execução. A partir da necessidade de sincronização, podemos disparar o processo de download/upload entre os providers, fazendo a equalização dos valores entre os participantes. Um trecho de código que implementa exatamente esse processo é dado abaixo:
// Sync provider A and provider B.
SyncOrchestrator agent = new SyncOrchestrator();
agent.Direction = SyncDirectionOrder.DownloadAndUpload;
agent.LocalProvider = providerA;
agent.RemoteProvider = providerB;
SyncOperationStatistics stats = agent.Synchronize();
A partir da chamada acima, os dois providers são sincronizados, ou seja, os valores exclusivos de A são passados para o B, assim como os valores de B são passados para o provider A, equalizando os participantes.
Um bom tutorial sobre o Sync Framework pode ser encontrado aqui:
Tutorial - Microsoft Sync Framework Basics
Ref.: https://code.msdn.microsoft.com/Release/ProjectReleases.aspx?ProjectName=sync&ReleaseId=949
Para saber mais sobre o Sync , ou experimentar os primeiros exemplos, veja ainda:
Sync Framework Overview
Ref.: https://msdn.microsoft.com/en-us/library/bb902814(SQL.100).aspx
Microsoft Sync Framework v1.0 CTP2 (Março/2008)
Ref.: https://www.microsoft.com/downloads/details.aspx?FamilyId=C88BA2D1-CEF3-4149-B301-9B056E7FB1E6&displaylang=en
Microsoft Synchronization Services for ADO.NET Books Online
Ref.: https://www.microsoft.com/downloads/details.aspx?familyid=02989F70-49AA-43D7-81B8-A651120F8D65&displaylang=en
Microsoft Sync Framework Community Technology Preview Documentation
Ref.: https://www.microsoft.com/downloads/details.aspx?familyid=A3EE7BC5-A823-4FB4-B152-9E8CE9D5546F&displaylang=en
Finalmente, nessas últimas semanas, muitas empresas têm perguntado sobre como organizar sua TI para suportar uma arquitetura S+S.
Alguns modelos começam a ser propostos, como departamentos que funcionam como nuvens para outros departamentos dentro de uma mesma organização. Em breve, consumir serviços de um Datacenter remoto, contratado sob um SLA específico e que está completamente fora de nosso controle como gerentes de TI será uma opção real para muitas empresas.
Por isso, a Microsoft tem se preparado para fornecer uma série de tecnologias, frameworks e produtos que antecipam essas necessidades. Muito está por vir. Fiquem ligados!
Por enquanto é só! Até o próximo post :)
Waldemir.