Novidades no Sync Framework 2.0

O Sync Framework 2.0 inclui recursos novos e avançados nas seguintes áreas:

  • Provedores de banco de dados

    • Novos provedores para SQL Server e SQL Server Compact

    • Envio em lote baseado em memória robusto

    • APIs de provisionamento e gerenciamento

    • Inicialização de instantâneo

    • Forma de topologia flexível

    • Melhorias no desempenho

  • Provedor de sincronização de arquivos

    • Conversão de dados
  • Provedores personalizados

    • Provedores simples

    • Conversão de dados entre provedores

    • Filtragem

    • Manipulação de conflitos

    • Rastreamento

    • Serviço de aplicação de alterações

    • Serializador do serviço de armazenamento de metadados

    • Conversores de provedor

    • Melhorias de conhecimento

    • Níveis de compatibilidade

    • Interfaces obsoletas

Provedores de banco de dados

O Sync Framework 2.0 introduz dois novos provedores de banco de dados, diversos recursos importantes relacionados à sincronização e ao gerenciamento e melhorias significativas no desempenho.

Novos provedores para SQL Server e SQL Server Compact

O Sync Framework 2.0 inclui dois novos provedores de banco de dados:

  • SqlCeSyncProvider é usado para sincronizar bancos de dados do SQL Server Compact.

    Este provedor pode ser usado para sincronizar com um servidor central, mas também possui a capacidade de sincronizar com outros clientes, o que não é possível com SqlCeClientSyncProvider. Essa capacidade permite aos desenvolvedores abordar novos cenários, como um cenário de colaboração no qual equipes precisem sincronizar entre elas na falta de uma conexão com um servidor central.

  • SqlSyncProvider é usado para sincronizar todas as outras edições do SQL Server, incluindo o SQL Server Express.

    Este provedor, que pode ser usado como um servidor ou um cliente, reduz significativamente a barreira para sincronizar um banco de dados do SQL Server. SqlSyncProvider é apresenta a mesma capacidade de DbSyncProvider, mas requer significativamente menos código e entendimento das consultas que o Sync Framework usa para sincronizar dados. DbSyncProvider ainda é o mais indicado para bancos de dados que não sejam do SQL Server.

Como todos os provedores do Sync Framework, esses novos provedores podem ser usados em topologias de qualquer forma: cliente-servidor, ponto a ponto etc. Para obter mais informações sobre os dois servidores, consulte Como configurar e executar a sincronização de colaboração (SQL Server).

Envio em lote baseado em memória robusto

Versões anteriores do Sync Framework e do Sync Services for ADO.NET forneciam uma maneira para que os desenvolvedores definissem sua própria lógica de envio em lote, que era então chamada pelo tempo de execução do Sync Framework. As desvantagens desse método incluíam: a complexidade inerente associada à divisão das alterações em lotes, viagens de ida e volta de rede excessivas entre o cliente e o servidor e a incapacidade de resolver problemas de contenção de recurso porque os lotes eram baseados no número de linhas sincronizadas e não na quantidade de memória consumida por cada lote.

O Sync Framework 2.0 corrige muitos desses problemas fornecendo uma API de envio em lote mais completa e robusta. Os desenvolvedores não necessitam mais escrever a lógica de envio em lote, porque o tempo de execução do Sync Framework divide as alterações em lotes com base em diversas propriedades na API. Os lotes são agora definidos pelo consumo da memória e não pelo número de linhas sincronizadas, o que eliminou problemas de falta de memória para os cenários mais comuns. Para obter mais informações, consulte Como entregar alterações em lotes (SQL Server).

APIs de provisionamento e gerenciamento

As atividades de provisionamento e inicialização que antes eram expostas somente por meio das ferramentas do Visual Studio foram agora adicionadas às APIs de provedor de banco de dados. Isso inclui a capacidade de provisionar um banco de dados existente adicionando tabelas de controle de alteração e gatilhos requeridos pelo Sync Framework. Também inclui a capacidade de começar com um banco de dados vazio, criar o esquema de usuário e provisionar esse esquema em outro servidor ou banco de dados cliente que já tenha sido provisionado. Para obter mais informações, consulte Como configurar e executar a sincronização de colaboração (SQL Server).

Tarefas comuns, como backup e restauração de banco de dados e limpeza de metadados, agora podem ser realizadas diretamente por meio da API, tornando desnecessário que os desenvolvedores implementem essa lógica por conta própria. Para obter mais informações, consulte Como fazer backup de um banco de dados e restaurá-lo (SQL Server) e Como limpar metadados para sincronização de colaboração (SQL Server).

Inicialização de instantâneo

Para que um banco de dados cliente do SQL Server Compact possa começar a receber alterações de outro banco de dados, o banco de dados cliente deve conter o esquema de tabela e todos os dados iniciais, bem como a infraestrutura de controle de alterações necessária para o Sync Framework. O Sync Framework fornece dois modos de inicializar o banco de dados:

  • Inicialização completa do banco de dados cliente

    A inicialização completa é apropriada em alguns casos, mas não é ideal para cenários com recursos limitados no cliente. A criação do esquema do banco de dados a partir do zero e o carregamento de todos os dados em uma conexão de rede lenta pode resultar em tempos de sincronização inicial longos e erros de falta de memória.

  • Inicialização do instantâneo do banco de dados cliente com o uso do banco de dados cliente pré-existente

    Introduzida no Sync Framework 2.0, a inicialização de instantâneo destina-se a reduzir o tempo necessário para inicializar um banco de dados cliente. Depois que um banco de dados cliente tiver sido inicializado com o uso da inicialização completa, os bancos de dados subsequentes poderão ser inicializados com o uso de um instantâneo do primeiro banco de dados cliente. Um instantâneo é um banco de dados do SQL Server Compact especialmente preparado que contém esquema de tabela, dados (opcionais) e infraestrutura de rastreamento de alterações. A inicialização de instantâneo pode melhorar os tempos de sincronização inicial consideravelmente e reduzir bastante a contenção de memória. Para obter mais informações, consulte "Provisionamento dos clientes" em Como configurar e executar a sincronização de colaboração (SQL Server).

Forma de topologia flexível

As versões anteriores do Sync Services for ADO.NET estavam vinculadas a uma forma de topologia específica na qual muitos clientes sincronizavam alterações por meio de um servidor central.

Como o Sync Services for ADO.NET agora foi desenvolvido no Sync Framework, os desenvolvedores podem abordar uma gama muito mais ampla de cenários. Por exemplo, desenvolvedores podem dar suporte a cenários de colaboração que exigem a capacidade de sincronizar alterações entre clientes. Além disso, os desenvolvedores podem abordar cenários de filiais, nos quais uma série de terminais de ponto de vendas (POS) estão sincronizados com um servidor de ramificação que, por sua vez, é sincronizado com um servidor corporativo central.

Como os novos provedores de banco de dados foram desenvolvidos no Sync Framework, é possível dar suporte à sincronização de alterações com novos tipos de repositórios, como o Azure SQL Data Services.

Melhorias no desempenho

Os novos provedores de banco de dados nesta versão foram totalmente testados em cenários de expansão de escala em que um único servidor dá suporte a milhares de clientes com centenas de operações de sincronização simultâneas. Esses testes resultaram em um grande número de melhorias no desempenho interno dando aos provedores de banco de dados do Sync Framework uma execução tão boa quanto à de outras tecnologias Microsoft, como Remote Data Access (RDA), ao mesmo tempo em que oferecem uma grande variedade de recursos que competem com soluções de ponta-a-ponta, como a replicação de mesclagem.

Provedor de sincronização de arquivos

Além das APIs de conversão de dados que podem ser usadas para qualquer tipo de provedor personalizado, o Sync Framework 2.0 também inclui APIs de conversão especificamente para o provedor de sincronização de arquivos. Para obter mais informações, consulte Sincronizando o provedor de sincronização de arquivos com outros provedores, IFileDataRetriever (código gerenciado) e IFileDataRetriever (código não gerenciado).

Provedores personalizados

O Sync Framework 2.0 inclui melhorias significativas nas capacidades de provedores personalizados padrão e introduz um novo tipo de provedor personalizado: o provedor simples.

Provedores simples

A API de provedor simples reduz o trabalho necessário para desenvolver provedores. Isso se aplica especialmente quando a fonte de dados tiver poucos recursos relacionados à sincronização, como controle de alterações. Essa API permite que um desenvolvedor grave um provedor sem a necessidade de se tornar um especialista em sincronização. A maior parte do código de um provedor simples é o código necessário para interagir com a fonte de dados. Para obter mais informações, consulte Implementando um provedor personalizado simples e Conceitos básicos sobre provedores personalizados.

Novos tipos importantes em código gerenciado

Para obter uma lista de tipos completa, consulte Microsoft.Synchronization.SimpleProviders.

Novas interfaces importantes em código não gerenciado

Para obter uma lista de tipos completa, consulte Componentes de provedor simples do Sync Framework.

Conversão de dados entre provedores

Em alguns cenários, os provedores de sincronização sincronizam o mesmo tipo de dados (como dados de vendas), mas o formato dos dados que cada provedor requer é diferente. Para lidar com esse cenário, o Sync Framework permite implementar interfaces que convertem dados no formato requerido pelo provedor. Para obter mais informações, consulte Convertendo dados entre provedores.

Novos tipos e propriedades em código gerenciado

Novas interfaces em código não gerenciado

Filtragem

Os filtros são usados para controlar os dados que são sincronizados. O Sync Framework 2.0 adiciona suporte para filtros, que controlam quais unidades de alteração são sincronizadas, e para filtros personalizados que são gravados pelo desenvolvedor. O Sync Framework 2.0 também adiciona a capacidade para os provedores negociarem quais filtros são usados durante a sincronização.

Para obter mais informações, consulte Filtrando dados de sincronização.

Filtragem de unidade de alteração

Uma unidade de alteração faz parte de um item sincronizado, como um número de telefone em um item de contatos. Réplicas diferentes podem ter representações diferentes do mesmo item, e algumas delas oferecem uma representação mais rica e mais completa que outras. Por exemplo, uma comunidade de sincronização troca informações de contato e define unidades de alteração para name, phone number e address. Uma réplica na comunidade é um dispositivo móvel que só pode armazenar name e phone number. O Sync Framework supre esse cenário permitindo que um provedor especifique um filtro de unidade de alteração que indica que uma réplica pode armazenar só um subconjunto dos dados. Os metadados de sincronização e o processo de sincronização foram aprimorados para manipular essa filtragem de forma eficiente.

Novos tipos em código gerenciado

Novas interfaces e novos métodos em código não gerenciado

Filtros personalizados

Os filtros personalizados são gravados pelo desenvolvedor e podem ter qualquer forma. Uma réplica filtrada armazena dados apenas de itens que estão no filtro, como uma réplica de armazenamento de mídia que contém apenas músicas classificadas como três estrelas ou mais. Quando a classificação de uma música é alterada, um item pode ser movido para dentro ou para fora do filtro. Um desenvolvedor pode definir um filtro personalizado que é usado para controlar os dados de item que são armazenados em uma réplica filtrada. Uma réplica de acompanhamento de filtro é outra réplica na comunidade que pode identificar quais itens estão no filtro e quais foram movidos para dentro ou para fora do filtro recentemente. Uma réplica de rastreamento de filtro pode armazenar dados de itens que não estão no filtro. O Sync Framework dá suporte para a sincronização eficiente, da réplica de rastreamento de filtro para a réplica filtrada, enviando apenas os itens que estão no filtro junto com as informações sobre o filtro. O Sync Framework também calcula corretamente o conhecimento e outros metadados para a réplica de rastreamento de filtro quando as alterações são enviadas da réplica filtrada para a réplica de rastreamento de filtro.

Lembre-se de que filtros personalizados não podem ser usados por provedores simples, por provedores que relatam conflitos de restrição nem por provedores que usam o serviço de aplicativo de alteração, ou podem ocorrer resultados inesperados.

Novos tipos importantes em código gerenciado

O provedor implementa os seguintes tipos:

O Sync Framework implementa os seguintes tipos:

Para obter uma lista de tipos completa, consulte Microsoft.Synchronization.

Novas interfaces importantes em código não gerenciado

O provedor implementa as seguintes interfaces:

O Sync Framework implementa as seguintes interfaces:

Para obter uma lista de interfaces completa, consulte Componentes principais do Sync Framework.

Filtros negociados por provedor

Quando uma fonte de dados de destino armazenar apenas um subconjunto dos dados disponíveis, será mais eficiente se o provedor de origem usar um filtro para enumerar somente os dados que podem ser armazenados pelo destino. A negociação de filtro permite que um provedor de destino especifique que o provedor de origem deve usar um ou mais filtros durante a enumeração de alterações; o provedor de origem pode aceitar ou rejeitar um filtro. Se um provedor de origem não der suporte para nenhum dos filtros solicitados, o provedor de destino poderá optar por receber todos os dados e fazer a filtragem ele mesmo. O Sync Framework chama os provedores adequadamente para negociar o uso de filtro.

Novos tipos em código gerenciado

Novas interfaces em código não gerenciado

Manipulação de conflitos

O Sync Framework 2.0 adiciona suporte aprimorado para conflitos de restrição, conflitos registrados em log, e implementação de resolução de conflitos do tipo último-gravador-vence.

Conflitos de restrição

O Sync Framework 2.0 aprimora o suporte para conflitos de restrição, que são aqueles que violam as restrições dos itens ou das unidades de alteração. Por exemplo, a relação das pastas ou o local de dados que têm o mesmo nome em um sistema de arquivos. Um provedor de destino pode relatar um conflito de restrição ao Sync Framework e usar componentes do Sync Framework para resolver o conflito e determinar como aplicar a resolução à réplica de destino.

Lembre-se de que conflitos de restrição não podem ser usados por provedores simples que usem filtros personalizados nem o serviço de aplicação de alteração, ou podem ocorrer resultados inesperados.

Para obter mais informações, consulte Detectando e solucionando conflitos de restrição.

Tipos novos e atualizados importantes em código gerenciado

Os provedores de destino implementam a seguinte classe nova:

Os aplicativos de sincronização implementam novos métodos na seguinte classe:

O Sync Framework implementa novos membros nas seguintes classes:

Para obter uma lista de tipos completa, consulte Microsoft.Synchronization.

Novas interfaces importantes em código não gerenciado

Os provedores de destino implementam a seguinte interface nova:

Os aplicativos de sincronização implementam a seguinte interface nova:

O Sync Framework implementa as seguintes interfaces novas:

Para obter uma lista de interfaces completa, consulte Componentes principais do Sync Framework.

Registrando conflitos em log

Pode ser útil salvar conflitos em um log de forma que eles possam ser processados separadamente da sessão de sincronização. Por exemplo, quando um usuário precisa examinar os conflitos e decidir como resolvê-los. O Sync Framework 2.0 define um conjunto de interfaces de log de conflitos e fornece componentes que ajudam a gerenciar os conflitos no log. O Sync Framework também fornece uma implementação das interfaces de log de conflitos para réplicas que não contêm um log de conflitos. Essa implementação ocorre na memória e é usada para armazenar conflitos temporários que podem surgir devido à manipulação de conflitos de restrição. Para obter mais informações, consulte Registrando em log e gerenciando conflitos.

Novos tipos em código gerenciado

Os provedores implementam as seguintes classes novas:

O Sync Framework implementa as seguintes classes novas:

Novas interfaces em código não gerenciado

Os provedores implementam as seguintes classes novas:

O Sync Framework implementa as seguintes classes novas:

Resolução de conflitos do tipo último-gravador-vence

Um aplicativo talvez queira resolver conflitos de simultaneidade (nos quais um item é atualizado por mais de uma réplica) mantendo a alteração mais recente, independentemente do local onde ela tenha sido feita. O Sync Framework 2.0 dá suporte para essa resolução fornecendo um mecanismo para que um aplicativo recupere a hora em que uma alteração foi feita na réplica de origem e a hora em que uma alteração foi feita na réplica de destino. O aplicativo pode então comparar os dois horários e especificar a ação de resolução de conflito que aplica a última alteração.

Para obter mais informações, consulte Detectando e solucionando conflitos de simultaneidade.

Novos tipos em código gerenciado

Os provedores implementam a seguinte interface nova:

Novas interfaces em código não gerenciado

Os provedores implementam a seguinte interface nova:

Rastreamento

O Sync Framework permite rastrear a execução de vários componentes, que é útil durante a depuração de aplicativos. Para a maioria dos componentes do Sync Framework, o rastreamento é executado no nível de código nativo usando a infraestrutura ETW (Rastreamento de Eventos do Windows). Mesmo que ele seja feito em relação à versão gerenciada de uma API, ainda assim você usará o ETW porque a API gerenciada é um wrapper fino sobre a API nativa. Para obter mais informações, consulte Rastreando componentes do Sync Framework.

Os provedores de banco de dados do Sync Framework fornecem rastreamento gerenciado com base na implementação de .NET Framework. Para obter mais informações, consulte Como rastrear o processo de sincronização.

Serviço de aplicação de alterações

O Sync Framework inclui uma implementação de aplicador de alterações que a maioria dos aplicativos usa para aplicar alterações em uma réplica. Na versão 2.0, o Sync Framework apresenta o serviço de aplicação de alterações que executa as mesmas ações que o aplicador de alterações, porém de modo mais granular. Um provedor de destino que requer mais flexibilidade que o aplicador de alterações padrão pode usar o serviço de aplicação de alterações para executar apenas o conjunto de ações requerido.

Lembre-se de que o serviço de aplicativo de alteração não pode ser usado por provedores que relatem conflitos de restrição nem usem filtros personalizados, ou podem ocorrer resultados inesperados.

Para obter mais informações, consulte Aplicando alterações usando o serviço de aplicação de alterações.

Novos tipos em código gerenciado

Novas interfaces e nova enumeração em código não gerenciado

Serializador do serviço de armazenamento de metadados

O serviço de armazenamento de metadados armazena metadados de réplica e de item em um banco de dados leve. Os metadados são armazenados em um esquema de tabela específico e em um formato binário que podem sofrer alterações à medida que novas versões do Sync Framework são liberadas. Além disso, os campos de provedor personalizado no banco de dados podem ser alterados à medida que um desenvolvedor libera novas versões de um provedor específico. Para permitir maior interoperabilidade entre as diferentes versões, o Sync Framework fornece um formato de arquivo canônico e um conjunto de interfaces de serialização que são compatíveis com versões posteriores e anteriores, em um intervalo razoável de alterações de metadados entre as versões. Para obter mais informações, consulte Acessando metadados em componentes com versões diferentes e Atualizando a versão do repositório de metadados.

Novos tipos em código gerenciado

Novas interfaces em código não gerenciado

Conversores de provedor

Os provedores personalizados geralmente são derivados de IKnowledgeSyncProvider, mas eles também podem derivar diretamente de ISyncProvider. Porém, quando um objeto ISyncSession é usado para gerenciar a sincronização (o que é típico), o provedor deve derivar de IKnowledgeSyncProvider. Para habilitar um provedor derivado de ISyncProvider para participar de uma sessão de sincronização, o Sync Framework permite converter o provedor em um IKnowledgeSyncProvider em tempo de execução.

Novas interfaces e novos métodos em código não gerenciado

Melhorias de Conhecimento

O Sync Framework 2.0 melhora o objeto de conhecimento para obter mais flexibilidade e eficiência.

Estrutura de conhecimento

O Sync Framework 2.0 altera a estrutura subjacente de um objeto de conhecimento para um formato mais flexível e eficiente, e define novas interfaces para acessar os novos elementos de conhecimento. Para compatibilidade com versões anteriores, os novos objetos de conhecimento também emulam a saída dos métodos de conhecimento do Sync Framework 1.0.

Tipos novos e atualizados em código gerenciado

Novas interfaces e nova enumeração em código não gerenciado

Cookies de conhecimento

O Sync Framework 2.0 adiciona cookies de conhecimento, que são representações leves, somente leitura do conhecimento que podem ser usadas para comparações rápidas quando o desempenho for especialmente importante.

Novos tipos e membros em código gerenciado

Nova enumeração e novos métodos em código não gerenciado

Níveis de compatibilidade

O Sync Framework inclui níveis de compatibilidade para metadados de forma que componentes de diferentes versões possam continuar a interoperar corretamente. Para obter mais informações, consulte Compatibilidade com versões anteriores e interoperabilidade do Sync Framework.

Novos tipos e membros em código gerenciado

Nova enumeração e novos métodos em código não gerenciado

Interfaces obsoletas

As interfaces a seguir estão obsoletas e não devem ser usadas em um novo desenvolvimento. Elas continuarão a funcionar como esperado no Sync Framework 2.0, mas poderão ser removidas em versões posteriores.

Interfaces obsoletas em código não gerenciado

Consulte também

Conceitos

Microsoft Sync Framework
Benefícios de uso do Sync Framework
Selecionando os componentes apropriados do Sync Framework