Partilhar via


Demonstra Passo a passo: Adicionando um cache local do banco de dados a um aplicativo de N-tier

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

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ção:

Seu computador pode mostrar diferentes nomes ou localizações para alguns dos elementos de 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ção:

Neste explicação passo a passo , o cache do banco de dados local é denominado CustomersCache porque ela usa somente a tabela Customers , mas várias tabelas podem ser adicionadas ao 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. Tipo CustomersCache 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 várias camadas, você deve conjunto 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 colar para que tenham código semelhante ao seguinte:

    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
    <endpoint address ="SyncServer" binding="wsHttpBinding" contract="DataService.ICustomersCacheSyncContract"/>
    
  7. On the Compilação menu, clicar Criar solução.

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 de 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. On the Compilação menu, clicar Criar solução.

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 o botão 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: Adicionar código para os conjuntos de dados em aplicativos de N-tier

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

Demonstra Passo a passo: Criando um aplicativo conectado ocasionalmente

Demonstra Passo a passo: Implantando um aplicativo cliente ocasionalmente conectados com o banco de dados local

Como: Configurar um local e remota banco de dados para sincronização bidirecional

Conceitos

Visão geral de aplicativo de dados de N camadas

Visão geral sobre aplicativos ocasionalmente conectados

SQL Server Compact 3.5 e Visual Studio

O que Há de Novo em Dados

Outros recursos

Atualização hierárquica

Acessando Dados (Visual Studio)