Compartilhar via


Passo a passo: Criando um aplicativo de dados de n camadas

Aplicativos de dados N-camadas são aplicativos que acessam os dados e são separados em várias camadas lógicas, ou camadas .Separar componentes do aplicativo em camadas separadas aumenta a manutenabilidade e escalabilidade do aplicativo.Ele faz isso permitindo adoção mais fácil de novas tecnologias que podem ser aplicadas a uma camada única sem precisar recriar a solução inteira.Um aplicativo de n camadas típico inclui uma camada de apresentação, uma camada intermediária e uma camada de dados.A camada intermediária normalmente inclui uma camada Acesso a Dados, uma camada lógica comercial e compartilhadas componentes, como autenticação e de validação.A camada de dados inclui um banco de dados relacional.Aplicativos de camada N geralmente armazenam informações sigilosas na camada da camada intermediária para manter o isolamento de usuários final que acessam o camada de apresentação de Acesso a Dados.Para obter mais informações, consulte Visão geral dos aplicativos de dados de n camadas.

A maneira mais fácil para separar as várias camadas em um aplicativo de n camadas é criar projetos distintos para cada camada que você deseja incluir no seu aplicativo.Digitado DataSets contêm uma propriedade DataSet Project que determina quais projetos o código gerado DataSet e TableAdapter deve ir para.

Essa explicação passo a passo demonstra como separar DataSet e TableAdapter código em distintas biblioteca de classes projetos usando o DataSet Designer.Após você separar o DataSet e TableAdapter o código, você criará um Os serviços do Windows Communication Foundation e serviços de dados do WCF em Visual Studio serviço para chamar a camada Acesso a Dados.Finalmente, você criará um aplicativo como o camada de apresentação Formulários do Windows.Essa camada acessa dados do serviço de dados.

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

  • Criar uma nova solução n-camada que irá conter vários projetos.

  • Adicione dois projetos biblioteca de classes à solução n-camada.

  • Crie o dataset executando o Data Source Configuration Wizard.

  • Separe a TableAdapters gerado e código de dataset em projetos distintos.

  • Criar um serviço Windows Communication Foundation (WCF) para chamar a camada Acesso a Dados.

  • Criar funções no serviço para recuperar dados de camada Acesso a Dados.

  • Crie um aplicativo para servir como a camada de apresentação Formulários do Windows.

  • Crie controles do Windows Forms que sejam associados à fonte de dados.

  • Escreva o código para preencher as tabelas de dados.

link para vídeo Para uma versão de vídeo deste tópico, consulte Como: exibição Criando um aplicativo de n camadas de dados.

Pré-requisitos

Para concluir esta explicação passo a passo, você precisa:

Criando a solução N-Tier e biblioteca de classes para manter o DataSet (DataEntityTier)

A primeira etapa dessa explicação passo a passo é para criar uma solução e dois projetos biblioteca de classes.A primeira biblioteca de classes manterá o conjunto de dados (o gerado digitada classe DataSet e DataTables que irão armazenar dados do aplicativo).Este projeto é usado como a camada de entidade de dados do aplicativo e está localizado normalmente na camada intermediária.O Criando e editando conjuntos de dados tipados é usado para criar DataSet inicial e separar automaticamente o código em classe duas bibliotecas.

ObservaçãoObservação

Não se esqueça nome o projeto e a solução corretamente antes de clicar em OK .Isso facilitará para que você concluir essa explicação passo a passo.

Para criar a solução n-camada e DataEntityTier biblioteca de classes

  1. No menu File, crie um novo projeto.

    ObservaçãoObservação

    DataSet Designer tem suporte no Visual Basic e projetos C#.Crie o novo projeto em um desses idiomas.

  2. Na caixa Novo Projeto caixa de diálogo, na caixa Projeto tipos painel, clique em Windows .

  3. Clique na biblioteca de classes Modelo.

  4. Nomeie o projeto DataEntityTier .

  5. Nome da solução NTierWalkthrough .

  6. Clique em OK.

    Uma solução que contém o projeto DataEntityTier NTierWalkthrough é criada e adicionada ao Gerenciador de Soluções .

Criar a biblioteca de classe para manter a TableAdapters (DataAccessTier)

A próxima etapa depois de criar o projeto DataEntityTier é criar outro projeto biblioteca de classes.Este projeto manterá o s TableAdapter gerado e é chamado Acesso a Dados camada do aplicativo.A camada Acesso a Dados contém as informações que é necessária para se conectar ao banco de dados e estão localizadas normalmente na camada intermediária.

Para criar o novo biblioteca de classes o TableAdapters

  1. No menu F ile,adicione um novo projeto para a solução NTierWalkthrough.

  2. No painel Templates, na caixa de diálogo New Project, clique em Class Library.

  3. Nomeie o projeto DataAccessTier e clique OK.

    O projeto ObjectBindingWalkthrough é criado e adicionado Solution Explorer.

Criando o Dataset

A próxima etapa é para criar um dataset tipado.DataSets digitados são criados com o classe dataset (incluindo classes DataTables) e as TableAdapter classes em um único projeto.(Todas as classes são geradas em um único arquivo.) Quando você separar o DataSet e TableAdapter s em diferentes projetos, é a classe dataset que é movido para outro projeto, deixando as classes TableAdapter no projeto original.Portanto, criar o conjunto de dados no projeto que irá conter basicamente o TableAdapter s (o projeto DataAccessTier).Você cria o dataset executando o Data Source Configuration Wizard.

ObservaçãoObservação

Você deve ter acesso ao banco de dados de exemplos Northwind para criar a conexão.Para obter informações sobre como configurar o banco de dados de exemplo Northwind, consulte Como: instalar bancos de dados de amostra.

Para criar o dataset

  1. Clique num projeto em Gerenciador de Soluções .

  2. No menu Data, clique em Show Data Sources.

  3. Na janela Data Sources, clique em Add New Data Source para iniciar o Data Source Configuration Wizard.

  4. Na página Choose a Data Source Type clique em Database e então clique em Next.

  5. Na página Choose your Data Connection siga um destes procedimentos:

    Se uma conexão de dados para o banco de dados de exemplo Northwind estiver disponível na lista drop-down, selecione-o.

    -  ou  -

    Clique em New Connection para abrir a caixa de diálogo Add/Modify Connection.Para obter mais informações, consulte Adicionar/modificar a caixa de diálogo de conexão (geral).

  6. Se o banco de dados exige uma senha, selecione a opção para incluir dados confidenciais, e clique Next.

    ObservaçãoObservação

    Se você tiver selecionado um local arquivo de banco de dados (instead of se conectar a SQL Server) talvez seja perguntado se deseja adicionar o arquivo ao projeto.Clique em Yes para adicionar o arquivo de banco de dados a do projeto.

  7. Clique em Next na página Save the Connection String to the Application Configuration File.

  8. Expanda o nó Tables na página Choose your Database Objects.

  9. Marque as caixas de seleção para as tabelas Customers e Orders e em seguida, clique em Finish.

    NorthwindDataSet é adicionado ao projeto DataAccessTier e aparece na caixa fontes de dados Janela.

Separando o TableAdapters do DataSet

Depois de criar o conjunto de dados, separe o classe dataset gerado da TableAdapters.Para fazer isso, definindo o DataSet Project Propriedade para o nome do projeto no qual armazenar a separados sem classe dataset.

Separando o TableAdapters do DataSet

  1. Clique duas vezes no NorthwindDataSet.xsd no Solution Explorer para abrir o dataset no Dataset Designer.

  2. Clique em uma área vazia no designer.

  3. Localize o DataSet Project nó na janela de Properties.

  4. Na caixa Projeto DataSet Lista, clique em DataEntityTier .

  5. No menu Build, clique em Build Solution.

O DataSet e TableAdapters são separados para os dois projetos biblioteca de classes.O projeto que originalmente continha todo DataSet (DataAccessTier) agora contém somente o TableAdapters.O projeto designado na caixa Projeto DataSet Propriedade (DataEntityTier) contém o dataset tipado: NorthwindDataSet.DataSet.Designer.vb (ou NorthwindDataSet.DataSet.Designer.cs).

ObservaçãoObservação

Quando você separar DataSets de TableAdapters (configurando a propriedade DataSet Project), classes parciais DataSet existentes no projeto não serão movidas automaticamente.Classes parciais DataSet existente devem ser movidas manualmente para o projeto DataSet.

Criar um novo aplicativo de serviço

Como essa explicação passo a passo demonstra como acessar a camada Acesso a Dados usando um serviço WCF, criar um novo aplicativo serviço WCF.

Para criar um novo aplicativo Serviços WCF

  1. No menu F ile,adicione um novo projeto para a solução NTierWalkthrough.

  2. Na caixa Novo Projeto caixa de diálogo, na caixa Projeto tipos painel, clique em Windows .No painel T emplates,clique em WCF serviço biblioteca .

  3. Nomeie o projeto DataService e clique OK.

    O projeto ObjectBindingWalkthrough é criado e adicionado Solution Explorer.

Criando métodos no nível de acesso de dados para retornar a Clientes e Pedidos de dados

O serviço de dados tem que chamar dois métodos na camada Acesso a Dados: GetCustomers e GetOrders.Esses métodos retornará as tabelas Northwind Clientes e Pedidos.Crie os métodos GetCustomers e GetOrders no projeto DataAccessTier.

Para criar um método na camada Acesso a Dados que retorna a tabela Clientes

  1. Em Gerenciador de Soluções ,clique duas vezes em NorthwindDataset.xsd para abrir o conjunto de dados no Criando e editando conjuntos de dados tipados.

  2. Clique com o botão direito do mouse CustomersTableAdapter e clique em Adicionar para abrir a TableAdapter Query Configuration Wizard consulta.

  3. Em Escolher um tipo de comando página, deixe a valor padrão de instruções Use SQL e clique em Avançar .

  4. Em Escolher um tipo de consulta página, deixe a valor padrão de SELECT que retorna linhas e clique em Avançar .

  5. Em Especifica uma instrução SQL SELECT página, deixe a consulta padrão e clique em Avançar .

  6. Na página Escolha os Métodos a Serem Gerados, digite GetCustomers para Nome do método na seção Retornar uma DataTable.

  7. Clique em Concluir.

Para criar um método na camada Acesso a Dados que retorna a tabela Clientes

  1. (Clique com o botão direito do mouse em qualquer TableAdapter e escolha Add Query.)

  2. Em Escolher um tipo de comando página, deixe a valor padrão de instruções Use SQL e clique em Avançar .

  3. Em Escolher um tipo de consulta página, deixe a valor padrão de SELECT que retorna linhas e clique em Avançar .

  4. Em Especifica uma instrução SQL SELECT página, deixe a consulta padrão e clique em Avançar .

  5. Na página Escolha os Métodos a Serem Gerados, digite GetOrders para Nome do método na seção Retornar uma DataTable.

  6. Clique em Concluir.

  7. No menu Build, clique em Build Solution.

Adicionando uma referência para a entidade de dados e camadas de dados do Access ao serviço de dados

Como o serviço de dados precisar de informações do conjunto de dados e TableAdapters, adicione referências para os projetos DataEntityTier e DataAccessTier.

Para adicionar referências para o serviço de dados

  1. Clique com o botão direito do mouse em DataService Gerenciador de Soluções e clique em Adicionar Referência .

  2. Na caixa de diálogo Add Reference, clique na guia .NET .

  3. Selecione ambas as a DataAccessTier e DataEntityTier projetos.

  4. Clique em OK.

O serviço de dados tem que chamar dois métodos na camada Acesso a Dados: GetCustomers e GetOrders.

Agora que a camada Acesso a Dados contém os métodos para retornar dados, criar métodos no serviço de dados para chamar os métodos na camada Acesso a Dados.

ObservaçãoObservação

Para projetos C#, você deve adicionar uma referência ao System.Data.DataSetExtensions Conjunto de Módulos (Assembly) para o código a seguir para compilar.

Para criar a GetCustomers e GetOrders funciona no serviço de dados

  1. No projeto DataService,clique duas vezes em IService1.vb ou IService1.cs.

  2. Adicionar o código a seguir em Adicionar o serviço operações aqui Comentário:

    <OperationContract()> _
    Function GetCustomers() As DataEntityTier.NorthwindDataSet.CustomersDataTable
    
    <OperationContract()> _
    Function GetOrders() As DataEntityTier.NorthwindDataSet.OrdersDataTable
    
    [OperationContract]
    DataEntityTier.NorthwindDataSet.CustomersDataTable GetCustomers();
    
    [OperationContract]
    DataEntityTier.NorthwindDataSet.OrdersDataTable GetOrders();
    
  3. No projeto DataService,clique duas vezes em IService1.vb ou IService1.cs.

  4. Adicione o seguinte código ao seu arquivo classe:

    Public Function GetCustomers() As DataEntityTier.NorthwindDataSet.CustomersDataTable Implements IService1.GetCustomers
        Dim CustomersTableAdapter1 As New DataAccessTier.NorthwindDataSetTableAdapters.CustomersTableAdapter
        Return CustomersTableAdapter1.GetCustomers()
    End Function
    
    Public Function GetOrders() As DataEntityTier.NorthwindDataSet.OrdersDataTable Implements IService1.GetOrders
        Dim OrdersTableAdapter1 As New DataAccessTier.NorthwindDataSetTableAdapters.OrdersTableAdapter
        Return OrdersTableAdapter1.GetOrders()
    End Function
    
    public DataEntityTier.NorthwindDataSet.CustomersDataTable GetCustomers()
    {
        DataAccessTier.NorthwindDataSetTableAdapters.CustomersTableAdapter
             CustomersTableAdapter1
            = new DataAccessTier.NorthwindDataSetTableAdapters.CustomersTableAdapter();
        return CustomersTableAdapter1.GetCustomers();
    
    }
    public DataEntityTier.NorthwindDataSet.OrdersDataTable GetOrders()
    {
        DataAccessTier.NorthwindDataSetTableAdapters.OrdersTableAdapter
             OrdersTableAdapter1
            = new DataAccessTier.NorthwindDataSetTableAdapters.OrdersTableAdapter();
        return OrdersTableAdapter1.GetOrders();
    
    }
    
  5. No menu Build, clique em Build Solution.

Criar uma camada de apresentação para exibir dados a partir o serviço de dados

Agora que a solução contém o serviço de dados que tem métodos que chamam para a camada Acesso a Dados, crie outro projeto que chamará o serviço de dados e apresentar os dados para os usuários.Para essa explicação passo a passo, criar um aplicativo Formulários do Windows; essa é a camada de apresentação de n-Tier o aplicativo.

Para criar o projeto camada de apresentação

  1. No menu F ile,adicione um novo projeto para a solução NTierWalkthrough.

  2. Na caixa Novo Projeto caixa de diálogo, na caixa Projeto tipos painel, clique em Windows .Clique em Windows Application no painel Templates.

  3. Nomeie o projeto PresentationTier e clique OK.

  4. O projeto ObjectBindingWalkthrough é criado e adicionado Solution Explorer.

Configurando o projeto PresentationTier como o projeto de inicialização

Porque o camada de apresentação é a aplicativo cliente real que é usado para apresentar e interagir com os dados, você deve definir o projeto PresentationTier para ser o projeto de inicialização.

Para definir o novo projeto camada de apresentação como o projeto de inicialização

  • No Solution Explorer, clique com o botão direito em PresentationTier e clique em Set as StartUp Project.

Adicionar referências para a camada de apresentação

O aplicativo cliente PresentationTier requer uma referência de serviço para o serviço de dados para acessar os métodos no serviço.Além disso, uma referência ao conjunto de dados é necessário para habilitar tipo compartilhamento pela serviço WCF.Até você ativar tipo compartilhamento através do serviço de dados, código adicionado para o classe dataset parcial não estará disponível para o camada de apresentação.Como você normalmente adiciona código como validação à linha e coluna alterando eventos de um tabela de dados, é provável que você desejará acessar esse código do cliente.

Para adicionar uma referência para o camada de apresentação

  1. No Solution Explorer, clique com o botão direito do mouse no nó do projeto de clique em Add Rreference.

  2. Na caixa de diálogo Add Reference, clique na guia .NET .

  3. Selecione Database e clique em OK.

Para adicionar uma referência para o camada de apresentação

  1. No Solution Explorer, clique com o botão direito do mouse no projeto e clique em Add Service Reference.

  2. Na caixa Adicionar serviço de referência caixa de diálogo, clique em Descubra .

  3. Selecione Service1 e clique em OK .

    ObservaçãoObservação

    Se você tiver vários serviços no computador atual, selecione o serviço que você criou anteriormente nessa explicação passo a passo (o serviço que contém os métodos GetCustomers e GetOrders).

Adicionando DataGridViews ao formulário para exibir os dados retornados pelo serviço de dados

Depois de adicionar a referência de serviço para o serviço de dados, a Data Sources janela é preenchida automaticamente com os dados que são retornados pelo serviço.

Para adicionar ao formulário dois DataGridViews associados a dados

  1. No Solution Explorer, selecione o projeto.

  2. Na caixa Dados Sources Janela, expanda NorthwindDataSet e localize o nó Customers.

  3. Arraste o nó Customers Form1.

  4. Na caixa Dados Sources Janela, expanda o nó Customers e localize o nó Orders relacionados (o nó Orders aninhado no nó Customers).

  5. Arraste o nó Orders relacionados Form1.

  6. Crie um Form1_Load manipulador de eventos, clicando duas vezes em uma área vazia do formulário.

  7. Adicione o seguinte código ao manipulador de eventos Form1_Load.

    Dim DataSvc As New ServiceReference1.Service1Client
    NorthwindDataSet.Customers.Merge(DataSvc.GetCustomers)
    NorthwindDataSet.Orders.Merge(DataSvc.GetOrders)
    
    ServiceReference1.Service1Client DataSvc = 
        new ServiceReference1.Service1Client();
    northwindDataSet.Customers.Merge(DataSvc.GetCustomers());
    northwindDataSet.Orders.Merge(DataSvc.GetOrders());
    

Aumentando o tamanho da mensagem máximo permitido pelo serviço

Porque o serviço retorna dados das tabelas Clientes e Pedidos, o valor padrão para maxReceivedMessageSize não é grande o suficiente para manter os dados e precisa ser aumentada.Para essa explicação passo a passo, você irá alterar o valor para 6553600.Você irá alterar o valor no cliente, e isso atualizará automaticamente a referência de serviço.

ObservaçãoObservação

O menor tamanho padrão se destina a limitar a exposição a ataques de negação de serviço (DoS).Para obter mais informações, consulte MaxReceivedMessageSize.

Para aumentar o valor maxReceivedMessageSize

  1. Em Gerenciador de Soluções ,clique duas vezes no arquivo app.config no projeto PresentationTier.

  2. Localize o atributo tamanho m axReceivedMessage e altere o valor para 6553600 .

Testando o aplicativo

Execute o aplicativo.Os dados são recuperados do serviço de dados e exibidos no formulário.

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.

Próximas etapas

Dependendo dos requisitos do aplicativo, há várias etapas que você pode querer fazer depois de salvar os dados relacionados no aplicativo baseado no Windows.Por exemplo, você poderia fazer os seguintes aprimoramentos para este aplicativo:

Consulte também

Conceitos

Novidades para desenvolvimento de aplicativos de dados no Visual Studio 2012

Outros recursos

Trabalhando com conjuntos de dados em aplicativos de n camadas

Atualização hierárquica

Acesso a dados em Visual Studio