.NET

3 abr, 2013

Aplicação em 3 camadas com ASP.NET C#

Publicidade

Olá! Você já deve ter escutado muito sobre desenvolvimento em camadas, mas antes de entrar no assunto, vamos entender o que são camadas:

  • Camada, em inglês layer, significa camada lógica, que é a organização do código de uma aplicação.
  • Camada, em inglês tier, significa camada física, que é onde o código irá ser executado (hardware, servidores, etc..).

O desenvolvimento em camadas é sobre divisão de camadas lógicas, então apesar de delayer e tier possuirem o mesmo significado em português, devemos estar sempre atento ao contexto. As camadas do modelo em três camadas são:

  1. Camada de apresentação (User interface/Presentation): É a camada onde iremos exibir informações e coletar dados do usuário, em ASP.NET são as páginas *.aspx.
  2. Camada de negócio (Business logic layer): É onde escrevemos a lógica e as regras de negócio da aplicação. Ela é a camada intermediária entre o usuário e o back-end.
  3. Camada de acesso a dados (Data access layer): Camada responsavel pela comunicação direta da aplicação com o back-end, realizando transações, como inclusão e consulta a dados.

Criando um projeto em três camadas no Visual Studio

A melhor forma para criar uma aplicação em camadas em ASP.NET é criar um projeto diferente para cada camada, agrupando-os em uma solution. Vamos criar três projetos:

  • Um projeto do tipo Web/ASP.NET web application, chamado Website, que será a camada de apresentação.
  • Um projeto do tipo Windows/Class library, chamado Bll, que será a camada de negócio.
  • Um projeto do tipo Windows/Class library, chamado Dal, que será a camada de acesso a dados.

Vamos utilizar como exemplo uma página de cadastro de usuários, que será “Usuario.aspx” na camada de apresentação Website. Para representar as outras camadas dessa página, devemos criar uma classe “Usuario.cs” na camada de negócio Bll, e outra classe “Usuario.cs” na camada de acesso a dados Dal.

A nossa solução ficará assim:

11 (1)

Após criar as camadas, é necessário adicionar as referências entre elas para que haja a comunicação:

  • Projeto Website adicionar a referência do projeto Bll (Camada de apresentação -> Camada de negócio).
  • Projeto Bll adicionar a referência do projeto Dal (Camada de negócio -> Camada de acesso a dados).

Para adicionar a referência em seu projeto, vá a janela Solution Explorer, clique com o botão direito no item References do projeto, e selecione a opção Add Reference…

21

Na janela que irá abrir, selecione o projeto que você deseja adicionar como referência na guia Projects.

3 (1)

Pronto, agora você já pode trabalhar com sua aplicação em camadas no Visual Studio.

Escrevendo o código do cadastro de usuário em três camadas

Continuando o exemplo, vamos criar os campos Nome e E-mail, com um botão Salvar na página “Usuário.aspx” da camada de apresentação (projeto Website), e quando o usuário clicar em Salvar, vamos mandar os dados para a camada de negócio Bll.

Website/Usuario.aspx

<asp:TextBox ID="txtNome" runat="server"></asp:TextBox>
<asp:TextBox ID="txtEmail" runat="server"></asp:TextBox>
<asp:Button ID="btnSalvar" runat="server" Text="Salvar" OnClick="btnSalvar_Click" />

<%
    void btnSalvar_Click(object sender,EventArgs e)
    {
        //Envia os dados do formulário
        //para a camada de lógica da aplicação(BLL)
        Bll.Usuario bllUsuario = new Bll.Usuario();
        bllUsuario.Salvar(txtNome.Text,txtEmail.Text);
    }
%>

Na camada de negócio Bll receberemos os dados vindos da camada de apresentação. Vamos fazer todas as regras de negócios antes de enviar os dados para a camada de acesso a dados.

Bll/Usuario.cs

namespace Bll
{
    public class Usuario
    {
        public void Salvar(String Nome, String Email)
        {
        //Realiza a lógica com os dados recebidos
        //da camada de apresentação, e envia para
        //a camada de acesso a dados (DAL)
            if (Nome != "" && Email != "")
            {
                Dal.Usuario dalUsuario = new Dal.Usuario();
                dalUsuario.Salvar(Nome, Email);
            }
        }
    }
}

Finalmente os dados irão chegar a camada de acesso a dados Dal, onde será salvo o usuário no banco de dados através de uma Stored Procedure.

Dal/Usuario.cs

namespace Dal
{
    public class Usuario
    {
        public void Salvar(String Nome, String Email)
        {
        //Recebe os dados recebidos da camada de lógica (BLL)
        //e salva os dados no banco de dados (back-end)
            SqlCommand cmd = new SqlCommand("SalvarUsuario", conexao);
            cmd.CommandType = CommandType.StoredProcedure;

            cmd.Parameters.AddWithValue("@Nome", Nome);
            cmd.Parameters.AddWithValue("@Email", Email);
            cmd.ExecuteNonQuery();
        }
    }
}

Conclusão

Trabalhar com camadas em uma aplicação nos trás grandes benefícios, principalmente quanto a organização do código, separando as responsabilidades em áreas diferentes. Também deixamos nossa aplicação muito mais flexível, pois caso precisamos trocar a forma onde gravamos os dados ou mudar uma página, todo o código das outras camadas é mantido, poupando assim muito trabalho.