Demonstra Passo a passo: Criando um aplicativo de dados N-Tier.
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. Isto é feito para permitir facilmente a implementação de novas tecnologias que podem ser aplicadas a uma única camada sem exigir que você recrie a solução inteira. Arquitetura de N-camadas inclui um camada de apresentação, um middle-Tier, uma camada de dados. A camada intermediária normalmente inclui uma camada de acesso a dados, uma camada de negócios, e componentes compartilhados, tais como autenticação e validação. A camada de dados inclui um banco de dados relacional. Aplicativos de N-camadas geralmente armazenam informações sigilosas na camada de dados da camada intermediária para manter o isolamento de usuários finais que acessam a camada de apresentação. Para obter mais informações, consulte Visão geral de aplicativos de dados N-Tier..
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 Windows Forms como camada de apresentação. 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 Windows Forms para servir como a camada de apresentação.
Crie controles que estão acoplados a fonte de dados Formulários do Windows.
Escreva o código para preencher as tabelas de dados.
Para obter uma versão de vídeo deste tópico, consulte vídeo How to: Criando um aplicativo de dados N-Tier.
Pré-requisitos
Para concluir esta explicação passo a passo, você precisa:
- Acesso ao banco de dados de exemplo Northwind. Para obter mais informações, consulte Como: Instalar bancos de dados de amostra.
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 Dataset Designer é usado para criar DataSet inicial e separar automaticamente o código em classe duas bibliotecas.
Observação |
---|
Não se esqueça nome o projeto e a solução corretamente antes de clicar em OK . Isso facilitará a conclusão desse passo a passo. |
Para criar a solução n-camada e DataEntityTier biblioteca de classes
No menu File, crie um novo projeto.
Observação DataSet Designer tem suporte no Visual Basic e projetos C#. Crie o novo projeto em um desses idiomas.
Na caixa Novo Projeto caixa de diálogo, na caixa Projeto tipos painel, clique em Windows .
Clique na biblioteca de classes Modelo.
Nomeie o projeto DataEntityTier .
Nome da solução NTierWalkthrough .
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 são necessárias para se conectar ao banco de dados e normalmente estão localizadas na camada intermediária.
Para criar o novo biblioteca de classes o TableAdapters
No menu F ile,adicione um novo projeto para a solução NTierWalkthrough.
No painel Templates, na caixa de diálogo New Project, clique em Class Library.
Nomeie o projeto DataAccessTier e clique em 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çã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
Clique num projeto em Gerenciador de Soluções .
No menu Data, clique em Show Data Sources.
Na janela Data Sources, clique em Add New Data Source para iniciar o Data Source Configuration Wizard.
Na página Choose a Data Source Type clique em Database e então clique em Next.
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).
Se o banco de dados exige uma senha, selecione a opção para incluir dados confidenciais, e clique Next.
Observação Se você tiver selecionado um arquivo de banco de dados local (ao invés de 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.
Clique Next na página Save the Connection String to the Application Configuration File.
Expanda o nó Tables na página Choose your Database Objects.
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 dataset, separe a classe dataset gerada 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
Clique duas vezes no NorthwindDataSet.xsd no Solution Explorer para abrir o dataset no Dataset Designer.
Clique em uma área vazia no designer.
Locate the DataSet Project node in the Properties window.
Na caixa Projeto DataSet Lista, clique em DataEntityTier .
Sobre o Build menu, 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 dataset Project (DataEntityTier) da propriedade contém o dataset tipado: NorthwindDataSet.Dataset.Designer.vb (ou NorthwindDataSet.Dataset.Designer.cs).
Observação |
---|
When you separate datasets and TableAdapters (by setting the DataSet Project property), existing partial dataset classes in the project will not be moved automatically. Existing dataset partial classes must be manually moved to the dataset project. |
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
No menu F ile,adicione um novo projeto para a solução NTierWalkthrough.
No Novo projeto na caixa de tipos de projeto painel, clique em WCF. No painel T emplates,clique em WCF serviço biblioteca .
Nomeie o projeto DataService e clique em 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 os dois métodos na camada de acesso de 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
Em Gerenciador de Soluções ,clique duas vezes em NorthwindDataset.xsd para abrir o conjunto de dados no Dataset Designer.
Clique com o botão direito do mouse CustomersTableAdapter e clique em Adicionar para abrir a Assistente de configuração da consulta TableAdapter consulta.
Em Escolher um tipo de comando página, deixe a valor padrão de instruções Use SQL e clique em Avançar .
Em Escolher um tipo de consulta página, deixe a valor padrão de SELECT que retorna linhas e clique em Avançar .
Em Especifica uma instrução SQL SELECT página, deixe a consulta padrão e clique em Avançar .
No Choose Methods to Generate de página, digite GetCustomers para o nome do método na Return a DataTable seção.
Clique em Finish.
Para criar um método na camada Acesso a Dados que retorna a tabela Clientes
(Clique com o botão direito do mouse em qualquer TableAdapter e escolha Add Query.)
Em Escolher um tipo de comando página, deixe a valor padrão de instruções Use SQL e clique em Avançar .
Em Escolher um tipo de consulta página, deixe a valor padrão de SELECT que retorna linhas e clique em Avançar .
Em Especifica uma instrução SQL SELECT página, deixe a consulta padrão e clique em Avançar .
No Choose Methods to Generate de página, digite GetOrders para o nome do método na Return a DataTable seção.
Clique em Finish.
Sobre o Build menu, 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
Clique com o botão direito do mouse em DataService Gerenciador de Soluções e clique em Adicionar Referência .
Na caixa de diálogo Add Reference, clique na guia .NET .
Selecione ambas as a DataAccessTier e DataEntityTier projetos.
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çã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
No projeto DataService,clique duas vezes em IService1.vb ou IService1.cs.
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();
No projeto DataService,clique duas vezes em IService1.vb ou IService1.cs.
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(); }
Sobre o Build menu, 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
No menu F ile,adicione um novo projeto para a solução NTierWalkthrough.
Na caixa Novo Projeto caixa de diálogo, na caixa Projeto tipos painel, clique em Windows . Clique em Windows Application no painel Templates.
Nomeie o projeto PresentationTier e clique em OK.
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 obter mais informações, consulte Using WCF Services in Visual Studio.
Para adicionar uma referência para o camada de apresentação
No Solution Explorer, clique com o botão direito do mouse no nó do projeto de clique em Add Rreference.
Na caixa de diálogo Add Reference, clique na guia .NET .
Selecione Database e clique em OK.
Para adicionar uma referência para o camada de apresentação
No Solution Explorer, clique com o botão direito do mouse no projeto e clique em Add Service Reference.
Na caixa Adicionar serviço de referência caixa de diálogo, clique em Descubra .
Selecione Service1 e clique em OK .
Observaçã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.
Ao adicionar dois dados DataGridViews acoplado ao formulário
No Solution Explorer, selecione o projeto.
Na caixa Dados Sources Janela, expanda NorthwindDataSet e localize o nó Customers.
Arraste o nó Customers Form1.
Na caixa Dados Sources Janela, expanda o nó Customers e localize o nó Orders relacionados (o nó Orders aninhado no nó Customers).
Arraste o nó Orders relacionados Form1.
Crie um Form1_Load manipulador de eventos, clicando duas vezes em uma área vazia do formulário.
Adicione o seguinte código para o 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 esta 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çã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
Em Gerenciador de Soluções ,clique duas vezes no arquivo app.config no projeto PresentationTier.
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
Pressione F5.
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:
Adicionar validação ao conjunto de dados. Para obter mais informações, consulte: Demonstra Passo a passo: Adicionando validação a um aplicativo de dados N-Tier..
Adicionar um banco de dados local ao aplicativo. Para obter mais informações, consulte Demonstra Passo a passo: Adicionando um Cache Local do banco de dados a um aplicativo de n camadas.
Adicione métodos adicionais para o Serviço de Atualização de dados de volta ao banco de dados.
Consulte também
Conceitos
O que há de novo no desenvolvimento de aplicativos de dados
Outros recursos
Trabalhando com conjuntos de dados em aplicativos de n camadas