Compartilhar via


Demonstra Passo a passo: Adicionando um Cache Local do banco de dados a um aplicativo de n camadas

A cache local do banco de dados, no contexto de Visual Studio, é um SQL Server Compact 3.5 banco de dados que está configurado para sincronizar dados com um banco de dados remoto usando Microsoft Synchronization Services for ADO.NET. Este passo a passo fornece instruções passo a passo para adicionar uma SQL Server Compact 3.5 para o aplicativo criado no banco de dados do Demonstra Passo a passo: Criando um aplicativo de dados N-Tier. tópico.

Durante esta explicação passo a passo, você aprenderá a executar as seguintes tarefas:

  • Adicionar um item de cache de banco de dados local a um projeto.

  • Configurar a sincronização de dados.

  • Incorporar operações de sincronização no serviço de dados existente.

  • Modificar o código que carrega os dados para que ele recupere a tabela Clientes do cache de banco de dados local.

  • Adicionar código para iniciar o processo de sincronização.

Pré-requisitos

Para concluir essa explicação passo a passo, você precisa do seguinte:

ObservaçãoObservação

Seu computador pode mostrar nomes ou locais diferentes para alguns dos elementos da interface do usuário do Visual Studio nas instruções a seguir. A edição do Visual Studio que você possui e as configurações que você usa determinam esses elementos. Para obter mais informações, consulte Configurações do Visual Studio.

Abrindo a solução NTierWalkthrough

Para abrir a solução NTierWalkthrough

Adicionando caching de banco de dados local para NTierWalkthrough

Como um cache de banco de dados local é um banco de dados SQL Server Compact 3.5 que está localizado no cliente, adicione a cache de banco de dados local para o projeto PresentationTier. Como essa explicação passo a passo mostra como fazer o cache da tabela Clientes, você irá nomear o cache de banco de dados local como CustomersCache.

ObservaçãoObservação

Nessa explicação passo a passo, o cache de banco de dados local é chamado CustomersCache porque ele usa apenas a tabela Clientes, mas várias tabelas podem ser adicionadas a um cache de banco de dados local.

Para adicionar caching de dados locais para a camada de apresentação

  1. Em Solution Explorer, clique com o botão direito do mouse em PresentationTier e clique em Add New Item.

  2. Clique no modelo Local Database Cache.

  3. Digite CustomersCache para o nome.

  4. Clique em Adicionar.

    A caixa de diálogo Configure Data Synchronization abre.

Configurando a sincronização de dados.

Para configurar a sincronização de dados, selecione a conexão de dados para o servidor e as tabelas que você quer armazenar em cache localmente em seu aplicativo. Para essa explicação passo a passo, configure a conexão com o servidor para a versão SQL Server do banco de dados Northwind e adicione a tabela Clientes para o cache local. Além disso, porque você está adicionando o cache do banco de dados local para um aplicativo de n camadas, você deve definir as opções avançadas para gerar os componentes de sincronização do servidor em um projeto separado: DataService.

Para configurar a sincronização de dados em um aplicativo de n camadas

  1. Configure o Server Connection para a versão SQL Server do banco de dados Northwind.

  2. Clique no botão Add para abrir a caixa de diálogo Configure Tables for Offline Use.

  3. Selecione a caixa de seleção associada com a tabela Customers e clique em OK. (Deixe os valores padrão).

  4. Clique em Advanced.

  5. Na lista Server project location, selecione DataService.

  6. Clique em OK.

    Os componentes de sincronização são gerados, os dados são sincronizados pela primeira vez (o banco de dados local é criado no projeto e preenchido com dados), e o Assistente de Configuração de Fonte de Dados abre.

  7. Selecione a tabela Customers e, em seguida, selecione a caixa de seleção associada a ele na página Choose Your Database Objects.

  8. Digite LocalNorthwindCustomers para DataSet name e clique em Finish.

Ativando sincronização no serviço de dados existente

Os componentes de sincronização gerados foram adicionados ao projeto DataService, mas eles ainda têm de ser implementados pelo serviço. O SyncContract gerado contém as informações que o serviço necessita. Essas informações aparecem como comentários no arquivo. Copie as informações necessárias para a seção apropriada do arquivo App.config do serviço.

Para adicionar as informações de serviço para o arquivo App.config

  1. Abra o arquivo CustomersCache.Server.SyncContract clicando duas vezes nele em Solution Explorer.

  2. Localize a linha comentada que se assemelha ao seguinte:

    <endpoint address ="" binding="wsHttpBinding" contract="DataService.ICustomersCacheSyncContract"/>

  3. Copie a linha sem o caracter de comentário.

  4. Abra o arquivo App.config do DataService clicando duas vezes nele em Solution Explorer.

  5. Localize o comentário <!-- Metadata Endpoints -->. Adicione a linha que você copiou na etapa 3 abaixo da linha que começa com <endpoint address = "mex".

  6. Digite um nome (por exemplo, SyncServer) para o endereço do ponto de extremidade que você acabou de passar para que você tenha um código semelhante ao seguinte:

    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
    <endpoint address ="SyncServer" binding="wsHttpBinding" contract="DataService.ICustomersCacheSyncContract"/>
    
  7. Sobre o Build menu, clique em Build Solution.

Para adicionar as operações de serviço de sincronização ao serviço de dados existente

  1. Abra o arquivo CustomersCache.Server.SyncContract clicando duas vezes nele em Solution Explorer.

  2. Alterar o nome da classe de CustomersCacheSyncService para Service1. Os exemplos de código a seguir mostram a declaração de classe como ela deve aparecer depois que você altera o nome da classe. (Usuários C# devem também alterar o nome do construtor.)

    Partial Public Class Service1
        Inherits Object
        Implements ICustomersCacheSyncContract
    ...
    
    public partial class Service1 : object, ICustomersCacheSyncContract
    {...
    
  3. Para usuários C#:

    Altere a declaração de classe para Service1 (no arquivo Service1.cs) para ser um classe parcial para que a declaração seja parecida com o seguinte:

    public partial class Service1 : object, ICustomersCacheSyncContract {
    
    private CustomersCacheServerSyncProvider _serverSyncProvider;
    
    public Service1() 
    {...
    
  4. Sobre o Build menu, clique em Build Solution.

Como as operações de sincronização foram adicionadas ao serviço existente, você deve atualizar a referência de serviço no projeto PresentationTier.

Para atualizar a referência de serviço

  1. Em Solution Explorer, localize ServiceReference1 no projeto PresentationTier.

  2. Clique com o botão direito do mouse em ServiceReference1 e clique em Update Service Reference.

Modificando o formulário para carregar dados de clientes do cache local

O formulário na camada de apresentação atualmente obtém seus dados do serviço de dados. Portanto, você precisa modificar o código para carregar os dados a partir da cópia local da tabela Clientes no banco de dados SQL Server Compact 3.5. A tabela Pedidos ainda é carregada com dados retornados do DataService.

Para modificar o Form1 para carregar os dados do clientes a partir do cache de banco de dados local

  1. Abra o Form1 no Editor de Códigos.

  2. Substitua o cdigo Form1_Load existente pelo seguinte código:

    Using DataSvc As New ServiceReference1.Service1Client
    
        ' Create a CustomersTableAdapter to load data from
        ' the local database cache.
        Dim CustomersTableAdapter As New LocalNorthwindCustomersTableAdapters.CustomersTableAdapter
    
        NorthwindDataSet.Customers.Merge(CustomersTableAdapter.GetData)
        NorthwindDataSet.Orders.Merge(DataSvc.GetOrders)
    End Using
    
    using (ServiceReference1.Service1Client DataSvc = new ServiceReference1.Service1Client())
    {
        LocalNorthwindCustomersTableAdapters.CustomersTableAdapter customersTableAdapter
           = new LocalNorthwindCustomersTableAdapters.CustomersTableAdapter();
        northwindDataSet.Customers.Merge(customersTableAdapter.GetData());
        northwindDataSet.Orders.Merge(DataSvc.GetOrders());
    }
    

Testando o aplicativo

Execute o aplicativo. Os dados são recuperados do cache de banco de dados local e do serviço de dados.

Para testar o aplicativo

  1. Pressione F5.

  2. Os dados da tabela Clientes são recuperados a partir do banco de dados local e os dados da tabela Pedidos são recuperados a partir do serviço de dados.

  3. Feche o formulário.

Sincronizando dados

Agora que a camada de apresentação está configurada para exibir as tabelas a partir das fontes corretas, a próxima etapa é adicionar código para iniciar a sincronização. Você adicionará um botão ao formulário para iniciar o processo de sincronização.

Para sincronizar dados entre o cache de banco de dados local e o banco de dados remoto

  1. Abra o Form1 no modo de Design.

  2. Clique na faixa de ferramentas no formulário e adicione um botão para a faixa de ferramentas.

  3. Nomeie no botão como SyncButton .

  4. Clique duas vezes em SyncButton para criar um manipulador de eventos SyncButton_Click.

  5. O código a seguir inicia o processo de sincronização. Adicione-o ao manipulador de eventos.

    Dim syncAgent As CustomersCacheSyncAgent = New CustomersCacheSyncAgent
    
        Using syncClient As New ServiceReference1.CustomersCacheSyncContractClient
        syncAgent.RemoteProvider = New Microsoft.Synchronization.Data.ServerSyncProviderProxy(syncClient)
        Dim syncStats As Microsoft.Synchronization.Data.SyncStatistics = syncAgent.Synchronize
    
        NorthwindDataSet.Customers.Merge(New LocalNorthwindCustomersTableAdapters.CustomersTableAdapter().GetData())
    
        Dim syncSummary As String = "Total changes downloaded: " & _
           syncStats.TotalChangesDownloaded.ToString() & vbCrLf & _
           "Last successful synchronization: " & _
           syncStats.SyncCompleteTime.ToString
        MessageBox.Show(syncSummary)
    End Using 
    
    CustomersCacheSyncAgent syncAgent = new CustomersCacheSyncAgent();
    
    using (ServiceReference1.CustomersCacheSyncContractClient syncClient = new ServiceReference1.CustomersCacheSyncContractClient())
    {
        syncAgent.RemoteProvider = new Microsoft.Synchronization.Data.ServerSyncProviderProxy(syncClient);
        Microsoft.Synchronization.Data.SyncStatistics syncStats = syncAgent.Synchronize();
        northwindDataSet.Customers.Merge(new LocalNorthwindCustomersTableAdapters.CustomersTableAdapter().GetData());
    
        string syncSummary = "Total changes downloaded: " + 
        syncStats.TotalChangesDownloaded.ToString() + Environment.NewLine +
        "Last successful synchronization: " +
         syncStats.SyncCompleteTime.ToString();
        MessageBox.Show(syncSummary);
    }
    
  6. Os dados da tabela Clientes são recuperados a partir do banco de dados local e os dados da tabela Pedidos são recuperados a partir do serviço de dados.

  7. Feche o formulário.

Testando o aplicativo

Para testar o aplicativo

  1. Pressione F5.

  2. Com o aplicativo em execução, use Server Explorer/Database Explorer (ou outra ferramenta de gerenciamento de banco de dados) para se conectar ao banco de dados servidor remoto e modificar alguns registros.

    1. Em Server Explorer/ Database Explorer, localize a tabela Clientes no servidor de banco de dados remoto (não a conexão a Northwind.sdf).

    2. Clique com o botão direito do mouse na tabela Clientes e clique em Show Table Data.

    3. Modifique um ou mais registros e confirme a alteração. (Navegue fora da linha modificada).

  3. Volte ao formulário e clique em SyncButton.

  4. Verifique que as modificações ao banco de dados remoto estão sincronizadas com o banco de dados local e exibidas na grade.

  5. Feche o formulário. (Pare a depuração.)

Próximas etapas

Dependendo dos requisitos do seu aplicativo, há várias etapas que você pode querer fazer depois de adicionar um cache de banco de dados local a um aplicativo de n camadas. Por exemplo, você poderia fazer os seguintes aprimoramentos para este aplicativo:

Consulte também

Tarefas

Como: Adicione código para conjuntos de dados em aplicativos de n camadas

Demonstra Passo a passo: Adicionando validação a um aplicativo de dados N-Tier.

Demonstra Passo a passo: Criando um aplicativo ocasionalmente conectado

Demonstra Passo a passo: Implantando um aplicativo ocasionalmente conectado do cliente com o banco de dados Local

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

Conceitos

Visão geral de aplicativos de dados N-Tier.

Visão geral sobre aplicativos ocasionalmente conectados

SQL Server Compact 3.5 e Visual Studio

O que há de novo no desenvolvimento de aplicativos de dados

Outros recursos

Atualização hierárquica

Acesso a dados em Visual Studio