VB .NET - 7 passos para criar uma aplicação em 3 Camadas - Parte 1


O foco deste artigo é explicar como criar uma aplicação em 3 camadas usando o Visual Basic .NET.(de novo)

Modelo em três camadas, derivado do modelo em n camadas, recebe esta denominação quando um sistema cliente-servidor é desenvolvido retirando-se a camada de negócio do lado do cliente. O desenvolvimento é mais demorado no início comparando-se com o modelo em duas camadas pois é necessário dar suporte a uma maior quantidade de plataformas e ambientes diferentes. Em contrapartida, o retorno vem em forma de respostas mais rápidas nas requisições, excelente performance tanto em sistemas que rodam na intranet ou internet e mais controle no crescimento do sistema.

As três partes de um ambiente modelo três camadas são: camada de apresentação, camada de negócio e camada de dados. Deve funcionar de maneira que o software executado em cada camada possa ser substituído sem prejuízo para o sistema. De modo que atualizações e correções de defeitos podem ser feitas sem prejudicar as demais camadas. Por exemplo: alterações de interface podem ser realizadas sem o comprometimento das informações contidas no banco de dados. (Fonte: http://pt.wikipedia.org/wiki/Modelo_em_tr%C3%AAs_camadas)

A figura abaixo procura mostrar de forma resumida esses 3 componentes identificando e nomeando cada um deles;

Podemos identificar as seguintes camadas:

  • Camada de Apresentação (Presentation Tier - UI)
  • Camada de Negócios (Business Logic Tier - BLL)
  • Camada de Acesso a dados (Data Tier - DAL)

Obs: Na verdade a nossa solução terá 4 camadas mas a camada de transferência de dados (DTO) será considerada uma camada auxiliar onde iremos declarar as nossas classes POCO usadas para transferir informações sobre os objetos do nosso domínio.

A transferência de dados de objeto (DTO), é um padrão de projeto usado para transferir dados entre os subsistemas de aplicativos de software. Os DTOs são muitas vezes utilizados em conjunto com os objetos de acesso a dados para recuperar dados de um banco de dados.

A diferença entre os objetos de transferência de dados e objetos de negócios ou objetos de acesso a dados é que um DTO não tem nenhum comportamento, exceto para armazenamento e recuperação de seus próprios dados (acessores e modificadores)

Na prática estaremos fazendo uma implementação do padrão DAO (Data Access Object) que define que toda a lógica de acesso aos dados deve ser separada da lógica de apresentação e lógica do negócio (regras da aplicação). A implementação dos DAO’s é muito simples, para cada objeto DTO teremos um objeto DAO que será responsável por realizar todas as operações de persistência deste objeto na base de dados.

Existem diversas implementações do padrão DAO mas em geral podemos relacionar algumas características desejáveis em uma implementação do padrão DAO:

- Todo o acesso aos dados deve ser feita através das classes DAO de forma a se ter o encapsulamento;
- Cada instância da DAO é responsável por um objeto de domínio;
- O DAO deve ser responsável pelas operações CRUD no domínio;
- O DAO não deve ser responsável por transações , sessões ou conexões que devem ser tratados fora do DAO;

O principais benefícios deste padrão são:

Vamos dividir esta tarefa em 7 etapas e explicar cada uma em detalhes de forma que mesmo quem esta iniciando o seu aprendizado no assunto possa acompanhar e entender o que foi feito.

Antes de iniciar a nossa caminhada (serão somente 7 passos) vamos declarar os apetrechos necessários para terminá-la com êxito :

Recursos necessários para iniciar a jornada:

  1. Visual Basic 2010 Express Edition
  2. Um banco de dados Relacional : SQL Server 2008 Express, MySQL, Oracle, etc. (e até o MS Access)
  3. SQL Server Management Studio

Passo 1 - Criando um banco de dados relacional e as tabelas usadas na aplicação

Vamos criar duas tabelas bem simples e um banco de dados no SQL Server 2008 Express Edition usando o SQL Server Management Studio.

Nota: Veja o artigo :   Usando o SQL Server Management Studio - Macoratti.net

Como eu estou usando a versão na qual apliquei o pacote de localização você verá as mensagens, menus, etc em português.

Abra o SQL Server Management Studio(SSMS) e faça o login no seu SQL Server Local (indicado como .\SQLEXPRESS);

Após abrir o SSMS clique com o botão direito do mouse sobre o item Banco de dados e selecione Novo Banco de dados...

Na janela - Novo Banco de dados - informe o nome Escola para o nome do banco de dados e clique no botão OK;

Após criar o banco de dados Escola clique com o botão direito sobre ele e selecione Nova Tabela...

A seguir defina os campos id e nome nesta tabela sendo que o campo id é uma chave primária e do tipo identity. O nome da tabela é Classe;

USE [Escola]
GO
CREATE TABLE [dbo].[Classe](
[id] [int] IDENTITY(1,1) NOT NULL,
[nome] [varchar](50) NULL,
CONSTRAINT [PK_Classe] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO

Acima temos a tabela Classe criada e ao lado o script para gerar a tabela na janela de consultas do SSMS.

Agora vamos repetir o procedimento e criar a tabela Alunos com os campos: id, nome e classeid, onde id é um campo chave primária do tipo identity:

USE [Escola]
CREATE TABLE [dbo].[Alunos](
[id] [int] IDENTITY(1,1) NOT NULL,
[nome] [nvarchar](50) NULL,
[classeid] [int] NULL,
CONSTRAINT [PK_Alunos] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF) ON [PRIMARY]
) ON [PRIMARY]

GO

Acima temos a tabela Alunos criada e ao lado o script para gerar a tabela:

Após criar as tabelas vamos criar um diagrama das tabelas do banco de dados Escola e definir o relacionamento entre o campo id da tabela Classe e o campo classeid da tabela Alunos;

Na figura abaixo podemos notar que o relacionamento é do tipo um-para-muitos onde temos que uma classe pode conter muitos alunos:

Dessa forma já temos o banco de dados Escola , as tabelas Classe e Alunos e o relacionamento entre as tabelas criados.

Obs: Podemos incluir alguns registros nas tabelas usando a instrução INSERT INTO na janela de Consultas do SSMS.

INSERT INTO [Escola].[dbo].[Classe]
     ([nome])
     VALUES
     ('Análise Requisitos')
GO
INSERT INTO [Escola].[dbo].[Alunos]
     ([nome]
     ,[classeid])
     VALUES
     ('Macoratti',1)
GO
Tabela Classe	
Tabela Alunos

Vamos ao segundo passo...

Nota: Dúvidas com SQL ??? Veja o curso : Curso de SQL. - Macoratti.net e a Seção SQL do Site Macoratti.net

Passo 2 - Criando a solução no Visual Basic 2010 Express Edition

No segundo passo vamos criar um novo projeto usando o Visual Basic 2010 Express Edition.

Vamos criar uma solução contendo 3 projetos onde cada projeto representará uma camada da nossa aplicação. Assim teremos:

  1. Solução - AppTresCamadas
  2. Projeto Windows Forms - Camada de Apresentação - CamadaWin
  3. Projeto Class Library - Camada de Negócios - CamadaBLL
  4. Projeto Class Library - Camda de Acesso aos Dados - CamadaDAL

No menu File clique em New Project e selecione o template Windows Forms Application informando o nome CamadaWin;

No menu File clique em Save All e na janela Save Project informe o nome AppTresCamadas para o nome da solução e clique em Save;

Vamos agora incluir a camada de negócios:

No menu File clique em Add e a seguir em New Project e selecione o template Class Library informando o nome CamadaBLL e clicando em OK;

Agora vamos incluir a camada de acesso aos dados:

No menu File clique em Add e a seguir em New Project e selecione o template Class Library informando o nome CamadaDAL e clicando em OK;

Definindo a camada DTO.

Finalmente vamos incluir uma camada onde vamos definir as classes do nosso domínio. Essa camada será uma camada de transferência que deverá ser enxergada pelos demais projetos.

No menu File clique em Add e a seguir em New Project e selecione o template Class Library informando o nome CamadaDTO e clicando em OK;

Ao final desta etapa na janela Solution Explorer deveremos ter a estrutura conforme exibe a figura abaixo:

Passo 3 - Definindo as dependências e referências entre os projetos da solução

Neste passo temos que definir as dependências entre os 4 projetos criados na solução.

Em nossa solução teremos as seguintes dependências:

  1. A camada de apresentação - projeto CamadaWin - deverá possuir uma dependência para o projeto CamadaBLL que é a nossa camada de negócios;
  2. A camada de negócios - projeto CamadaBLL - deverá possuir uma dependência para o projeto CamadaDAL que é nossa camada de acesso aos dados;
  3. A camada de transferência de dados - DTO - Data Transfer Object - que deverá ser visto pelos demais projetos;

Assim teremos a seguinte hierarquia: CamadaWin (CamadaDTO) => CamadaBLL (CamadaDTO) => CamadaDAL => CamadaDTO

Dessa forma a camada de apresentação deverá enxergar a camada de negócios que por sua vez deverá enxergar a camada de acesso a dados.

Clique com o botão direito sobre o nome da solução e selecione Properties ou tecle ALT+ENTER;

Na janela de propriedades selecione o item - Project Dependencies ;

A seguir na combo Project selecione o projeto CamadaWin e na janela Depends on: marque CamadaBLL e CamadaDTO:

Repita o procedimento anterior selecionando na combo Project o projeto CamadaBLL e na janela Depends on: marque CamadaDAL e CamadaDTO:

Repita o procedimento anterior selecionando na combo Project o projeto CamadaDAL e na janela Depends on: marque CamadaDTO:

Para concluir esse passo temos definir o projeto que deverá ser executado quando a aplicação for iniciada.

Na nossa solução queremos que o projeto Windows Forms (camada de apresentação) seja o projeto executado quando a solução inicie:

Nas janela de propriedades da solução clique no item Startup Project e selecione Single Startup project escolhendo o projeto CamadaWin e clicando no botão OK:

Após definir estas dependências temos que incluir as referências entre os projetos da nossa solução.

Na janela Solution Explorer clique com o botão direito do mouse sobre o projeto CamadaDAL e clique em Add Reference;

A seguir selecione a guia Projects e selecione o projeto CamadaDAL e o projeto CamadaDTO e clique em OK;

Repita o procedimento acima para o projeto CamadaDAL referenciando o projeto CamadaDTO;

Faça o mesmo para o projeto CamadaWin referenciando os projetos CamadaBLL e CamadaDTO:

Vamos agora descansar um pouco da nossa caminhada, afinal demos 3 longos passos, e temos que recuperar as forças para prosseguir...

Aguarde os próximos passos na segunda parte do artigo : VB .NET - 7 passos para criar uma aplicação em 3 Camadas - Parte 2

Tito 1:1 Paulo, servo de Deus, e apóstolo de Jesus Cristo, segundo a fé dos eleitos de Deus, e o pleno conhecimento da verdade que é segundo a piedade,

Tito 1:2 na esperança da vida eterna, a qual Deus, que não pode mentir, prometeu antes dos tempos eternos,

Tito 1:3 e no tempo próprio manifestou a sua palavra, mediante a pregação que me foi confiada segundo o mandamento de Deus, nosso Salvador;

Tito 1:4 a Tito, meu verdadeiro filho segundo a fé que nos é comum, graça e paz da parte de Deus Pai, e de Cristo Jesus, nosso Salvador.

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

 

             Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

Referências:


José Carlos Macoratti