VB .NET - Criando uma aplicação em camadas (de novo)
O título do artigo já sugere que o assunto não é novo visto que já escrevi diversos artigos sobre o desenvolvimento de aplicações em camadas. (Veja as referências)
Mas este artigo apresenta uma novidade: nele eu vou mostrar como criar uma aplicação Windows Forms usando a linguagem VB .NET em camadas usando a separação física de componentes em assemblies distintos. Dessa forma iremos ter uma solução e 3 projetos distintos.
Nota: Para saber mais leia o meu artigo : .NET - Definindo um infra-estrutura baseada em camadas
Neste artigo eu vou mostrar a arquitetura da solução explanando cada um dos seus componentes e a sua função.
Podemos dizer que este projeto será um projeto focado nos dados o que se conhece por Data Drive Development mas também podemos dizer que aplicaremos ao nosso projeto os conceitos do Domain Drive Design (DDD) que propõe a separação clara das camadas da aplicação.
Domain-Driven Design não é uma tecnologia ou metodologia, mas sim uma abordagem de design de software disciplinada que reúne um conjunto de conceitos, técnicas e princípios com foco no domínio e na lógica do domínio para criar um domain model. Grátis PDF do livro Domain Driven Design Quickly que é uma versão reduzida do livro Domain Driven Design do Eric Evans: Login to download this book FREE (PDF) - pegue o livro |
Vamos começar explicando o nosso modelo de dados. Nosso modelo de dados é bem simples nele teremos duas entidades:
-
Cursos - que representam as
informações dos cursos oferecidos por uma escola
- Estudantes - que
representam as informações dos alunos que estão matriculados nos cursos.
Existe portanto uma relação entre as entidades, pois um curso pode ter um ou mais alunos matriculados e um aluno pode estar matriculado em um curso.
No modelo relacional de banco de dados podemos representar o relacionamento entre as entidades criando as tabelas Cursos e Estudantes. (Aqui o banco de dados a ser escolhido pode ser qualquer um. Para ficar mais simples eu vou usar o Microsoft Access)
A seguir temos um diagrama que representa as tabelas e seus campos (os atributos da entidade):
A tabela
Cursos possui o campo cursoID como chave primária A tabela Estudantes possui o campo estudanteID como chave primária e o campo cursoID como chave estrangeira. Existe um relacionamento do tipo um-para-muitos entre as tabelas onde um curso pode conter muitos alunos.
|
Estas duas tabelas estão contidas no banco de dados Matricula.mdb, um banco de dados Microsoft Access.
A aplicação terá como objetivo registrar a matricula dos alunos em um determinado curso. Para isso usarei uma aplicação Windows Forms (poderia ser uma aplicação web) onde teremos o seguinte formulário que vai efetuar o registro:
Nossa aplicação vai possuir 3 camadas assim representadas:
Nota: Na literatura encontram-se com frequência os termos tiers e layers, em inglês, que geralmente são traduzidos como camadas. Olhando com atenção, embora a diferença seja bem sutil, compreende-se que tiers refere-se a uma separação física dos componentes (diferentes Assemblies, DLLs, arquivos), enquanto layers aponta para uma separação lógica dos componentes com classes distintas e diferentes espaços de nomes.
Abra o Visual Studio 2008 (você pode baixar a versão trial por 180 dias) e crie um novo projeto chamado AplicacaoTresCamadas usando a linguagem Visual Basic.
Agora vamos criar as 3 camadas separadas fisicamente. Para isso vamos adicionar 3 projetos distintos a partir do menu File -> Add -> New Project;
Na janela Add New Project vamos selecionar o template Class Library e informar o nome BusinessLogicLayer(BLL) que será a nossa camada de negócios que vai conter as classes com as regras de negócio da aplicação;
Em seguida vamos criar a segunda camada; A partir do menu File -> Add -> New Project;
Na janela Add New Project vamos selecionar o template Class Library e informar o nome DataAccesLayer(DAL) que será a nossa camada de acesso a dados e que conterá as classes para acesso aos dados da aplicação;
Finalmente vamos criar a nossa camada de apresentação (User Interface-UI); A partir do menu File -> Add -> New Project;
Na janela Add New Project vamos selecionar o template Windows Application e informar o nome EstudanteMatricula(UI) que será a nossa camada de apresentação e que conterá os formulários para compor a interface com o usuário.
Ao final a nossa aplicação dever exibir os seguintes projetos na janela Solution Explorer:
Nossa aplicação
é composta dos seguintes componentes: - A solução AplicacaoTresCamadas - O projeto BusinessLogicLayer (BLL) - O projeto DataAccessLayer (DAL) - O projeto EstudanteMatricula (UI) |
Definindo a camada de negócios - BusinessLogicLayer - BLL
Vamos começar definindo as classes da camada de negócio - BusinessLogicLayer. Vamos criar classes para representar as entidades que representam o domínio da nossa aplicação , no caso , as entidades Cursos e Estudantes. Como desejamos definir claramente as responsabilidades de cada entidade vamos criar duas classes, uma para representa a entidade Cursos e outra para representar a entidade Estudantes.
Selecione o projeto BusinessLogicLayer e no menu Project selecione Add New Item ;
Na janela Add New Item selecione o template Class e informe o nome BLLCurso.vb
Repita o procedimento e crie agora a classe BLLEstudante.vb
Ao final deveremos ver na janela Solution Explorer as duas classes criadas conforme a figura abaixo:
Agora vamos definir o conteúdo da classe BLLCurso. Aqui você pode definir métodos e rotinas conforme a definição dos requisitos do projeto. Para este nosso exemplo eu vou definir apenas dois métodos:
No início do arquivo BLLCurso.vb devemos declarar os imports usados:
Imports
SystemA seguir vamos declarar um namespace :
Namespace
BLL.CursosA seguir defina o nome da classe :
Public
Class BLLCursoAgora vamos definir variáveis globais que devem ser visíveis na classe:
Private _obj As DALCurso = NothingEm seguida temos os dois métodos definidos conforme o código a seguir:
Public Function
TodosCursos() As DataSet
Try _obj = New DALCurso() _dset = _obj.TodosCursos() Catch ex As Exception Throw ex Finally _obj = Nothing
End
Try
Return
_dset End Function
|
Public Shared
Function GetPrecoCurso(ByVal
CursoID As Integer)
As
Double
Dim _objc As DALCurso = Nothing
Try _objc = New DALCurso() _preco = _objc.getCursoPreco(CursoID) Catch ex As Exception Throw ex Finally _objc = Nothing End Try Return _precoEnd Function |
Observe que o método TodosCursos retorna um dataset e que instancia a classe DALCurso(), que ainda vamos criar, e chama o método TodosCursos.
O método GetPrecoCurso também cria uma instância da classe DALCurso() e usando o método getCursoPreco() que retorna o preço do curso, um valor do tipo Double.
Veja a continuação deste artigo em : VB .NET - Criando uma aplicação em camadas (de novo) II
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