Aplicações multicamadas em .NET - Parte 2

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (8)  (0)

O desenvolvimento de sistemas em camadas é uma prática que prioriza a implementação de aplicações em um formato bem estruturado, enfatizando a separação dos diferentes componentes de uma aplicação em partes lógicas.

Artigo do tipo Tutorial
Recursos especiais neste artigo:
Artigo no estilo Curso Online
Porque esse artigo é útil
O desenvolvimento de sistemas em camadas é uma prática que prioriza a implementação de aplicações em um formato bem estruturado, enfatizando a separação dos diferentes componentes de uma aplicação em partes lógicas. Na primeira parte deste artigo discutimos tais conceitos, além de iniciarmos a construção de uma aplicação multicamadas. Para isto, foram codificados os tipos empregados na manipulação de informações (DTOs), assim como definidas as classes da camada de Acesso a Dados. Nesta edição estaremos finalizando este exemplo, através da implementação das camadas de Negócios e de Apresentação (com esta última baseando-se na utilização do framework ASP.NET MVC).

Quando o processo de implementação é conduzido de uma forma organizada e em conformidade com boas práticas, a execução de atividades de implementação acontece quase sempre sem maiores dificuldades; tais aspectos ainda continuam válidos ao considerar tarefas que envolvam a manutenção de funções pré-existentes.

Vários são os tipos de abordagens que fornecem meios para conseguir uma maior qualidade no código que define um sistema. Todas essas técnicas possuem em comum características como uma forte ênfase no reuso de funcionalidades genéricas, além de priorizarem todo um esforço em evitar a duplicação de trechos de código ao longo de uma aplicação. Um bom exemplo de prática em conformidade com estes conceitos é o desenvolvimento de aplicações em camadas.

Em termos práticos, uma camada nada mais é do que uma parte lógica que agrupa classes e outras estruturas que possuam um comportamento semelhante. Um típico sistema implementado sob este paradigma pode contar com as camadas de Apresentação, Negócios e Acesso a Dados; a comunicação entre tais camadas pode ser feita por meio de classes conhecidas como DTOs (Data Transfer Objects), estruturas estas destinadas à transferência de informações.

A camada de apresentação corresponde à interface gráfica de um sistema. Dentro da plataforma .NET, diversas tecnologias como ASP.NET Web Forms, ASP.NET MVC e Windows Forms podem ser utilizadas na implementação desta parte de uma aplicação. Já a camada de Negócios é acessada a partir de elementos da camada de Apresentação, centralizando todas as regras de negócios de um software. Por fim, caberá à camada de Acesso a Dados (invocada pela camada de Negócios) a interação com algum tipo de repositório visando a manipulação e/ou o armazenamento de informações; o comum é que esta parte do sistema seja implementada a partir do uso de um banco de dados relacional, com o processo de comunicação ocorrendo através de recursos como o ADO.NET ou algum mecanismo ORM (BOX 1).

Nesta segunda parte do artigo sobre desenvolvimento de aplicações multicamadas estaremos finalizando o projeto iniciado na última edição. Isto será feito a partir da implementação das camadas de Negócios e de Apresentação (com esta última sendo construída sob a forma de um site ASP.NET MVC).

BOX 1. ORM

Frameworks ORM (Mapeamento objeto-relacional) permitem a representação de estruturas de um banco de dados relacional sob a forma de classes. Alguns exemplos de mecanismos ORM bastante populares no mundo .NET são o Entity Framework (o qual também integra a plataforma .NET), o NHibernate (ferramenta gratuita baseada no Hibernate da plataforma Java) e o Enterprise Library (solução open source também disponibilizada pela Microsoft).

Concluindo a implementação da aplicação de exemplo

Na primeira parte deste artigo iniciamos a construção de uma aplicação multicamadas, a fim de demonstrar os diferentes conceitos que envolvem este tipo de abordagem. O sistema em questão consiste, basicamente, em um cadastro para o gerenciamento de dados de profissionais de Tecnologia vinculados a uma empresa hipotética.

Criamos uma solução chamada TesteMultiCamadas, sendo que dentro desta já foram definidos os seguintes projetos:

· TesteMultiCamadas.DTO: Class Library em que estão definidas as classes empregadas na transferência de informações entre as diferentes camadas da aplicação;

· TesteMultiCamadas.DAL: corresponde à camada de Acesso a Dados.

Nesta edição finalizaremos a Solution TesteMultiCamadas, através da implementação de dois projetos:

· TesteMultiCamadas.BLL: camada de Negócios da aplicação, contendo classes que fazem uso das estruturas de acesso a dados, além de regras de negócio;

· TesteMultiCamadas.MVC: camada de Apresentação, sendo uma aplicação baseada no framework ASP.NET MVC.

Nota: A aplicação foi criada a partir do Visual Studio 2012 Professional, fazendo uso do .NET Framework 4.5, da versão 4.0 do ASP.NET MVC e de uma base de dados gerada a partir do SQL Server 2012. A solução TesteMultiCamadas poderá ser baixada a partir do site da DevMedia.

Implementando a camada de Negócios

A implementação da camada de Negócios será feita a partir de um projeto do tipo Class Library chamado “TesteMultiCamadas.BLL” (o termo “BLL” corresponde à abreviação do nome em inglês desta camada, no caso “Business Logic Layer”). Para isto, clique com o botão direto do mouse sobre a solução TesteMultiCamadas, selecionando em seguida “Add” e, por fim, “New Project”.

Dentro da janela “Add New Project”, marque o item “Class Library” da seção “Visual C#”, preenchendo em “Name” o valor “TesteMultiCamadas.BLL”. Para finalizar clique em “OK”.

Antes de iniciar a codificação dos tipos que farão parte da Class Library TesteMultiCamadas.BLL, será necessário adicionar referências a esta biblioteca que apontem para os projetos TesteMultiCamadas.DTO e TesteMultiCamadas.DAL. Dentro da janela Solution Explorer, clique com o botão direito do mouse sobre o item “References” de TesteMultiCamadas.BLL e, a partir disto, acione a opção “Add References” no menu que irá aparecer; localize então as bibliotecas TesteMultiCamadas.DTO e TesteMultiCamadas.DAL, selecionando as mesmas e clicando em seguida no botão “OK” (Figura 1).

abrir imagem em nova janela

Figura 1. Adicionando referências aos projetos TesteMultiCamadas.DTO e TesteMultiCamadas.DAL

A primeira das classes a ser implementada no projeto TesteMultiCamadas.BLL é o tipo OcupacaoBO (o sufixo “BO” é uma abreviação de “Business Object”, nomenclatura em inglês utilizada para designar classes empregadas na geração de objetos de negócios). Essa estrutura tem o objetivo de retornar informações das ocupações que poderão ser desempenhadas por profissionais de TI.

Para criar a classe clique, dentro do Solution Explorer, com o botão direito do mouse sobre a Class Library TesteMultiCamadas.BLL, escolhendo no menu de atalho a opção “Add”, subopção “New Item”. Aparecerá então a tela “Add New Item”; preencha no campo Name o valor “OcupacaoBO.cs”, gerando o arquivo em que constará a definição do tipo OcupacaoBO.

Na Listagem 1 está a implementação da classe OcupacaoBO. Foi definido neste tipo um método chamado ListarOcupacoes (linha 12), o qual devolve como resultado de sua execução uma coleção com todas as ocupações cadastradas na base de dados.

Como é possível observar, a operação ListarOcupacoes aciona um método de mesmo nome a partir de uma instância da classe OcupacaoDAO (linha 14), delegando a essa estrutura a tarefa de manipular as informações armazenadas na base de dados de testes (BOX 2).

Listagem 1. Classe OcupacaoBO

  01 using System;
  02 using System.Collections.Generic;
  03 using System.Linq;
  04 using System.Text;
  05 using TesteMultiCamadas.DTO;
  06 using TesteMultiCamadas.DAL;
  07
  08 namespace TesteMultiCamadas.BLL
  09 {
  10     public class OcupacaoBO
  11     {
  12         public List<OcupacaoDTO> ListarOcupacoes()
  13         {
  14             return new OcupacaoDAO().ListarOcupacoes();
  15         }
  16     }
  17 }
"

A exibição deste artigo foi interrompida :(
Este post está disponível para assinantes MVP

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?