Partilhar via


Visão geral sobre aplicativos ocasionalmente conectados

Um aplicativo ocasionalmente conectado é um aplicativo que usa dados de um banco de dados remoto mas que nem sempre pode ter acesso ao banco de dados remoto. Aplicativos ocasionalmente conectados também são usados quando o acesso está disponível continuamente, mas talvez não seja eficiente para consultar continuamente o banco de dados remoto para dados que raramente são alterados (como uma lista de estados). Nessas situações, aplicativos podem usar dados de um banco de dados local situado no cliente e sincronizar os dados periodicamente com o banco de dados remoto.

Em outras palavras, se seu aplicativo exigir dados de um banco de dados remoto que não precisa estar continuamente recuperados do banco de dados, você pode usar um cache de banco de dados local para armazenar os dados sobre o computador cliente ou diretamente dentro do aplicativo. For example, consider an inventory application that uses data from several tables in a database. O número de itens em estoque para qualquer parte individual é uma informação importante dos dados que altera continuamente, portanto, o aplicativo deve sempre refletem os valores atuais em banco de dados se possível. No entanto, seu aplicativo também exibe uma lista de empresas de envio válidas que raramente alterado. Essas empresas de envio válidas são armazenadas na tabela Transportadoras e não precisam ser recuperados sempre dados são consultados a partir do banco de dados. Armazenando nesta tabela Transportadoras em um cache de banco de dados local, você pode diminuir o número de percursos circulares desnecessários que seu aplicativo tem a fazer o banco de dados remoto. Por isso, além ao usar um cache de banco de dados local para aplicativos que têm conectividade ocasional, considere armazenar dados que muda com pouca frequência, ou que alterações em uma agenda conhecida, em um cache de banco de dados local.

Você pode configurar o cache para armazenar tabelas individuais, conjuntos de tabelas, ou registros específicos consultados a partir de uma tabela (por exemplo, somente clientes que possuem um representante de vendas específico).

A sincronização de dados entre bancos de dados do cliente e servidor é mais fácil por Microsoft Synchronization Services for ADO.NET (Microsoft.Synchronization.Data namespace). Você pode configurar a sincronização visualmente em Visual Studio usando o Configurar sincronização de dados caixa de diálogo, ou usando o Data Source Configuration Wizard quando você cria um dataset tipado. Para obter mais informações, consulte Como: Configurar a sincronização de dados em um aplicativo e Demonstra Passo a passo: A criação de um aplicativo ocasionalmente conectado usando o Data Source Configuration Wizard.

Além disso, o Visual Studio suporta o recurso de 2008 de SQL Server de controle de alterações. Você pode habilitar o controle de alterações de SQL Server de 2008 quando você configurar a sincronização da Configurar sincronização de dados caixa de diálogo ou o Data Source Configuration Wizard. Para obter mais informações, consulte Como: Configurar a sincronização de dados para usar o controle de alterações de SQL Server.

Limitação de Cache de banco de dados local no SQL Azure

Você pode usar o cache do banco de dados local para sincronizar os dados encontrados em SQL Azure com um banco de dados compacto de SQL local. No entanto, a nuvem baseia serviços como, por exemplo, SQL Azure aproveitar um ambiente de diversos clientes onde os clientes compartilham o mesmo hardware, mas os provedores de dados existentes não são simplificados para um ambiente de diversos clientes. Para proteger um cliente contra o impacto de uma carga de trabalho iniciada por outro cliente, o SQL Azure usa um mecanismo de otimização para limitar a quantidade de recursos concedidos para uma única solicitação. Especificamente, o SQL Azure limita o tempo que uma transação pode ser executado e a quantidade de crescimento de log que pode ocorrer devido a uma única transação.

Você deve usar esses provedores para cenários básicos e de pequenas quantidades de dados. Se você tentar sincronizar uma grande quantidade de dados, a operação de sincronização pode falhar devido a problemas de otimização. Se ocorrerem problemas de otimização, não há nenhuma maneira para reduzir o número de alterações para evitar falhas de sincronização. Além disso, esses provedores não são ideais para cenários mais avançados que exigem sincronização bidirecional.

Para obter informações detalhadas sobre os componentes são simplificados para cenários que envolvem SQL Azure, consulte https://go.microsoft.com/fwlink/?LinkId=180745.

Serviços de sincronização API (Microsoft.Synchronization.Data)

Serviços Microsoft de sincronização para o ADO.NET foi projetado para aplicativos conectados ocasionalmente. Ele permite que você sincronizar dados de fontes díspares pela camada dois, arquiteturas n-camada e baseada em serviços. Em vez de apenas replicar um banco de dados e seu esquema, a API de serviços de sincronização fornece um conjunto de componentes para sincronizar dados entre os serviços de dados e um armazenamento local. Cada vez mais aplicativos são usados nos clientes móveis, como computadores portáteis e dispositivos, que não possuem um conexão de rede consistente ou confiável a um servidor central. É importante para esses aplicativos para trabalhar com uma cópia local dos dados no cliente. Igualmente importante é o requisito para sincronizar a cópia local dos dados com dados em um servidor central quando um conexão de rede está disponível. A Synchronization Services API, que é modelado após o Acesso a Dados ADO.NET APIs, lhe uma forma intuitiva para sincronizar dados. Ele torna a criação de aplicativos para ambientes ocasionalmente conectados uma extensão lógica de criação de aplicativos para o qual você pode depender um conexão de rede consistente.

Instalando serviços de sincronização API e documentação

O Synchronization Services API não é parte do .NET Framework. Ele é instalado como parte do instalação deSQL Server Compact 3.5 . (Por padrão, SQL Server Compact 3.5 é instalado quando você instala Visual Studio.) Por padrão, o Synchronization Services documentação não está instalada. Portanto, ele estará disponível somente se ajuda estiver configurada para uso on-line. Para instalar o Synchronization Services documentação para uso local, você deve primeiro fazer o download da coleção de Ajuda da Microsoft Synchronization Services para ADO.NET Books Online site da Web.

A incorporação de sincronização de dados em aplicativos usando o Visual Studio

Para incorporar a sincronização de dados em seu aplicativo, Visual Studio fornece um banco de dados local do cache Modelo. Cache do Banco de dados local está disponível como um novo projeto modelo de item. (Sobre o projeto menu, clique em Add New Item.) Para obter mais informações, consulte Como: Configurar a sincronização de dados em um aplicativo.

Além de Cache Local do banco de dados modelo, você também pode usar o Data Source Configuration Wizard para configurar a sincronização. Durante a configuração de um dataset tipado, selecione a opção de Habilitar o cache do banco de dados local sobre o Escolha seus objetos de banco de dados página do assistente. Para obter mais informações, consulte Demonstra Passo a passo: A criação de um aplicativo ocasionalmente conectado usando o Data Source Configuration Wizard.

Adicionando um banco de dados local do cache abre a sincronização configurar dados caixa de diálogo. Você usar este caixa de diálogo para fornecer informações específicas sobre o cliente e servidor para configurar os componentes necessários a sincronização. O cache do banco de dados local usa um SQL Server Compact 3.5 banco de dados no cliente para armazenar dados localmente. Você pode usar um banco de dados existente SQL Server Compact 3.5 Como a cache de banco de dados local. Se você ainda não tiver um banco de dados local, você pode usar a sincronização configurar dados caixa de diálogo para criar um novo banco de dados local. Para criar um novo local SQL Server Compact 3.5 banco de dados, você pode definir a conexão de cliente (na Configurar sincronização de dados caixa de diálogo) para criar um novo SQL Server Compact 3.5 banco de dados com base nas tabelas selecionadas a partir o conexão de servidor.

ObservaçãoObservação

A sincronização configurar dados caixa de diálogo permite que você configure Microsoft Synchronization Services for ADO.NET para cenários de download apenas. Isso significa que depois de configurar a sincronização de dados usando este caixa de diálogo, chamada Microsoft.Synchronization.Data.SyncAgent.Synchronize será apenas atualizar o banco de dados local com alterações encontradas no banco de dados remoto. Changes made to the data on the local database will not be uploaded to the remote database. Depois de configurar a sincronização de dados usando a sincronização configurar dados caixa de diálogo, você poderá programaticamente ativar carrega (sincronização bidirecional) durante a sincronização. Para obter mais informações, consulte Como: Configurar um Local e remoto a banco de dados para sincronização bidirecional.

Configurando o banco de dados remoto para sincronização

Para a sincronização de dados para trabalhar com êxito, há algumas adições que são necessárias para cada tabela no banco de dados remoto com o qual você deseja sincronizar. A sincronização configurar dados cria caixa de diálogo SQL scripts sejam executados em relação ao banco de dados remoto para criar os objetos necessários (os objetos listados na tabela abaixo). Todos os scripts SQL que são criados pelo designer de sincronização são salvas em uma pasta SQLScripts no seu projeto.

ObservaçãoObservação

Os scripts SQL gerados por Sincronização configurar dados caixa de diálogo são executados por padrão. Você pode escolher se os scripts são gerado e executado, definindo a geração de script opções na caixa configurar tabelas para off-line usar caixa de diálogo.

O comportamento padrão de sincronização configurar dados caixa de diálogo é a executar os scripts e atualizar o banco de dados remoto quando o caixa de diálogo é fechado automaticamente. Desmarque Executar scripts quando esta caixa de diálogo é fechada caixa de seleção Se você não desejar executar os scripts automaticamente. Além disso, se o banco de dados remoto já tem o controle necessário colunas, disparadores e Itens Excluídos tabela, não scripts serão gerados. Em outras palavras, se nenhuma alteração é necessárias para o banco de dados remoto, não os scripts são criados.

A tabela a seguir lista os itens necessários no banco de dados remoto e fornece uma explicação de cada:

Adições ao cada tabela sincronizada no banco de dados remoto

Explicação

Coluna LastEditDate

Esta coluna deve ser um DateTime ou timestamp em cada tabela sendo sincronizada. Ele é comparado à coluna no cliente para identificar registros que tenham sido modificados no servidor desde a última sincronização chamada LastEditDate.

Coluna CreationDate

Esta coluna deve ser um DateTime ou timestamp em cada tabela sendo sincronizada. Ele é comparado à coluna CreationDate no cliente para identificar registros que foram adicionados ao servidor desde a última sincronização chamada.

Tabela Itens Excluídos ( TableName _Deleted)

Os itens são movidos para essa tabela quando eles são excluídos da tabela de servidor de banco de dados. Isso é feito para identificar registros excluídos a partir do servidor desde a última sincronização chamada. Cada tabela sendo sincronizada requer uma tabela de itens excluídos para controlar os registros excluídos da tabela remota.

DeletionTrigger ( TableName _DeletionTrigger)

Esse disparador é executado sempre que um registro é excluído do tabela de banco de dados o servidor. Os registros excluídos são movidos para a tabela de itens excluídos. Elas são movidas para a tabela de itens excluídos porque registros no banco de dados do cliente que não estão em banco de dados do servidor podem ser tratados como novos registros e adicionados novamente ao servidor. Serviços de sincronização verifica a tabela de itens excluídos para determinar que ele deve excluir um registro excluído do banco de dados em vez de adicioná-lo de volta ao banco de dados do servidor do cliente.

InsertTrigger ( TableName _InsertTrigger)

Esse disparador preenche a coluna CreationDate com a data atual e a hora quando novos registros são adicionados.

UpdateTrigger ( TableName _UpdateTrigger)

Esse disparador preenche a coluna LastEditDate com a data atual e a hora quando os registros existentes são modificados.

Iniciando o processo de sincronização a partir um aplicativo

Após fornecendo informações necessárias na caixa Dados Configurar Sincronização caixa de diálogo, adicione código ao seu aplicativo para iniciar a sincronização. É importante compreender que a sincronização de dados atualiza o banco de dados local, não a tabela no conjunto de dados ou qualquer outro objeto em seu aplicativo. Lembre-se de recarregar a fonte de dados do seu aplicativo com os dados atualizados do banco de dados local. Por exemplo, chame o método TableAdapter.Fill para carregar a tabela de dados do seu DataSet com os dados atualizados do banco de dados local.

Consulte também

Tarefas

Como: Configurar a sincronização de dados em um aplicativo

Demonstra Passo a passo: Criando um aplicativo ocasionalmente conectado

Como: Configurar um Local e remoto a banco de dados para sincronização bidirecional

Conceitos

SQL Server Compact 3.5 e Visual Studio

Outros recursos

Acesso a dados em Visual Studio