Você está na página 1de 49

Aplicaes em N Camadas com ASP.

NET
Aplicaes em n camadas so desenvolvidas de forma distribuda, onde cada camada tem sua responsabilidade dentro do contexto. Para um modelo de aplicao Web so comumente usadas 3 camadas: Presentation(Apresentao), Business(Lgica do negcio) e Data(Responsvel pelas transaes com o banco da dados). Para este artigo, iremos usar uma camada a mais chamada Entity(nossa biblioteca de entidades). Vamos criar um controle de clientes simples, onde nosso objetivo focar no aprendizado de aplicaes em n camadas.

Figura 1: Exemplo de aplicao em N Camadas. Para comear o desenvolvimento, iremos abrir o Visual Studio 2008 ou 2010 e criar um novo projeto do tipo Blank Solution.

Figura 2: Criando uma soluo em branco. Com a soluo criada, hora de criar as camadas. Vamos comear com a camada que ser a biblioteca de entidades. nela que definiremos todas as entidades que vamos usar nesse exemplo. Para adicionar a camada ao projeto, vamos clicar com o boto direito na soluo e adicionar um novo projeto.

Figura 3: Adicionando um novo projeto a soluo (Add > New Project). Esse novo projeto vai ser do tipo Class Library, pois ser apenas a biblioteca de entidades.

Figura 4: Projeto do tipo Class Library. Com o projeto adicionado a soluo, podemos agora trabalhar na entidade principal que ser a classe Cliente.

Figura 5: Projeto criado.

Por padro, j criada no projeto uma nova classe onde voc poder delet-la, pois iremos utilizar um timo recurso do Visual Studio chamado View Class Diagram, responsvel em gerenciar as classes do projeto conforme mostra a figura a baixo:

Figura 6: Visualizando o diagrama de classes da camada de entidades (View Class Diagram). Pronto, com o diagrama de classes aberto vamos criar a classe Cliente de maneira muito fcil:

Figura 7: Adicionando uma nova classe ao diagrama (Add > Class). Essa a visualizao da classe Cliente dentro do diagrama.

Figura 8: Visualizao da classe Cliente dentro do diagrama. Dando continuidade, iremos adicionar os atributos e as propriedades necessrias para manipular a entidade Cliente. Como o foco estudar aplicaes em n camadas, vamos trabalhar com atributos simples pra no prolongar muito nosso tempo. Mais uma vez vamos contar com recursos do Visual Studio para facilitar nossa vida:

Figura 9: Adicionando atributos na classe Cliente (Add > Field). Crie mais esses atributos seguindo os passos acima: cpf, email, id, telefone. Vamos encapsular os atributos para manter a segurana na persistncia das entidades do projeto.

Figura 10: Encapsulando os atributos da classe Cliente (Add > Encapsulate Field > Ok > Apply). Faa isso para todos os atributos utilizados na entidade Cliente. O resultado final ser esse:

Figura 11: Classe Cliente com todos os atributos e propriedades definidas

Para visualizar o cdigo da entidade Cliente, basta dar um duplo clique na classe:

Figura 12: Cdigo da classe Cliente. Com a classe Cliente definida, temos nossa camada de entidades concluda utilizando apenas uma entidade nesse exemplo. Na segunda parte desse artigo vamos criar a camada de dados (Data) que ficar responsvel pelas transaes SQL com o banco de dados. Iremos adicionar a camada Data juntamente com a primeira parte criada neste artigo. Uma de suas grandes vantagens que atravs dela, podemos mudar a qualquer momento nosso sistema de banco de dados, sem prejudicar a lgica do negocio. Para adicionar a camada ao projeto, vamos clicar com o boto direito na soluo e adicionar um novo projeto.

Figura 2: Adicionando um novo projeto a soluo (Add > New Project). Esse novo projeto vai ser do tipo Class Library, pois aqui sero criadas somente as classes responsveis pela comunicao com o banco de dados.

Figura 3: Projeto do tipo Class Library. Com o projeto adicionado a soluo, podemos agora trabalhar na camada Data da qual receber uma entidade atravs da camada business, executando as transaes com o banco de dados.

Figura 4: Projeto criado. Vamos utilizar a opo View Class Diagram, para criar a classe Clientes da maneira que aprendemos na primeira parte deste artigo:

Figura 5: Visualizando o diagrama de classes da camada de Data (View Class Diagram). A classe Clientes vai conter apenas um atributo e os mtodos responsveis pelas transaes SQL, j que nossa entidade foi definida na camada Entity. Como aprendemos na primeira parte deste artigo, vamos criar um atributo que ir receber a string de conexo com o banco de dados: connectionString

Este um atributo de uso exclusivo da classe Clientes, no sendo preciso criar uma propriedade para acess-lo, pois o mesmo j est encapsulado. Mais uma vez vamos contar com recursos do Visual Studio para facilitar nossa vida para a criao dos mtodos:

Figura 6: Adicionando mtodos na classe Clientes (Add > Method). Crie mais esses mtodos seguindo os passos acima: Alterar, Excluir, Obter, Listar. O resultado final ser esse:

Figura 7: Classe Clientes com todos os mtodos e atributos definidos. Para visualizar o cdigo da classe Clientes, basta dar um duplo clique na classe.

Figura 8: Visualizao do cdigo da classe Clientes. Como podemos ver na Figura 8, os mtodos da classe Clientes foram criados, porm no esto implementados. Neste caso, como o foco estudar aplicaes em n camadas, vamos agora implementar cada mtodo sem a preocupao de estudar ADO.NET, onde no final do artigo voc encontra referncias para aprofundar os conhecimentos sobre o mesmo.

Para a camada Data reconhecer uma entidade da camada Entity, necessrio adicionar a referencia da camada Entity na camada Data.

Figura 9: Adicionando referencia da camada Entity na camada Data (Add Reference > Projects > OK). Agora vamos adicionar na classe Clientes os namespaces, System.Data e System.Data.SqlClient do Framework para trabalharmos com as classes do ADO.NET.

Figura 10: namespace System.Data e System.Data.SqlClient adicionados a classe Clientes.

Vamos atribuir a string de conexo ao atributo connectionString.

Figura 11: atributo connectionString recebendo a string de conexo com o banco. Vamos implementar agora os mtodos da classe Clientes, acompanhe abaixo: Inserir:

Figura 12: implementao do mtodo Inserir. Alterar:

Figura 13: implementao do mtodo Alterar. Excluir:

Figura 14: implementao do mtodo Excluir. Obter:

Figura 15: implementao do mtodo Obter. Listar:

Figura 16: implementao do mtodo Listar.

Conclumos que ao final de mais uma etapa, teremos a classe Clientes definida juntamente com a camada Data finalizada. Na terceira parte desse artigo vamos criar a camada de negcio (Business) que ficar responsvel pela comunicao e validao dos dados, entre a apresentao (Presentation) e a camada de dados (Data). Iremos adicionar a camada Business juntamente com a segunda parte criada neste artigo. Uma de suas grandes vantagens que atravs dela, podemos validar algumas informaes e enviar a entidade para camada de dados, executando assim as transaes com o banco. Para adicionar a camada ao projeto, vamos clicar com o boto direito na soluo e adicionar um novo projeto.

Figura 2: Adicionando um novo projeto a soluo (Add > New Project). Esse novo projeto tambm ser do tipo Class Library, assim como as camadas Data e Entity.

Figura 3: Projeto do tipo Class Library. Com o projeto adicionado a soluo, podemos agora trabalhar na camada Business da qual receber uma entidade atravs da camada Presentation, executando as validaes necessrias e enviando a entidade para a camada Data.

Figura 4: Projeto criado. Vamos utilizar a opo View Class Diagram para criar a classe Clientes, realizada da mesma maneira da qual aprendemos na primeira parte deste artigo. A classe Clientes vai conter apenas os mtodos responsveis pelas validaes de dados e pela transferncia da entidade para a camada Data. Recomendo que os mtodos que vo transportar as entidades para a camada Data, tenham o mesmo nome. Como aprendemos na segunda parte deste artigo, vamos criar agora os mtodos da classe Clientes.

Figura 5: Adicionando mtodos na classe Clientes (Add > Method). Crie mais esses mtodos seguindo os passos acima: Alterar, Excluir, Obter, Listar, FormataCpf. O resultado final ser esse:

Figura 6: Classe Clientes com todos os mtodos definidos. Para visualizar o cdigo da classe Clientes, basta dar um duplo clique na classe.

Figura 7: Visualizao do cdigo da classe Clientes. Como podemos ver na Figura 7, os mtodos da classe Clientes foram criados, mas no implementados. Vamos agora implementar cada mtodo de acordo com sua responsabilidade. Para a camada Business reconhecer uma entidade da camada Entity, assim como os objetos da camada Data, devemos adicionar as referencias das camadas Entity e Data na camada Business.

Figura 8: Adicionando referencias das camadas Entity e Data na camada Business (Add Reference > Projects > OK).

Segue abaixo a implementao dos mtodos da classe Clientes: FormataCpf Como o foco deste artigo o estudo de aplicaes em N camadas e suas respectivas responsabilidades, nessa terceira parte iremos utilizar o exemplo de uma implementao e formatao de CPF, para demonstrar como cada camada pode ser utilizada.

Figura 9: implementao do mtodo FormataCpf. Inserir

Figura 10: implementao do mtodo Inserir.

Alterar

Figura 11: implementao do mtodo Alterar.

Excluir

Figura 12: implementao do mtodo Excluir. Obter

Figura 13: implementao do mtodo Obter. Listar

Figura 14: implementao do mtodo Listar. Conclumos que ao final de mais uma etapa, teremos a classe Clientes definida juntamente com a camada de negcio (Business) finalizada. Na quarta e ltima parte deste artigo, vamos criar a camada de apresentao (Presentation) juntamente com a aplicao Web, que utilizar de todos os recursos das camadas construdas ao longo deste estudo. Participe desse artigo deixando seu comentrio. Iremos adicionar a camada Presentation em nosso projeto da mesma maneira que aprendemos a adicionar as outras camadas. Para adicionar a camada ao projeto, vamos clicar com o boto direito na soluo e adicionar um novo projeto.

Figura 2: adicionando um novo projeto a soluo (Add > New Project). Esse novo projeto no ser mais do tipo Class Library, e sim um projeto do tipo ASP.NET Web Application, que ser nossa aplicao. Como o foco desse artigo o entendimento de aplicaes em N camadas, vamos desenvolver a camada de apresentao utilizando um projeto do tipo ASP.NET Web Application, mas a mesma poderia ser desenvolvida utilizando outros tipos de projetos oferecidos pela tecnologia.

Figura 3: projeto do tipo ASP.NET Web Application.

Com o projeto adicionado a soluo, podemos agora trabalhar na camada Presentation.

Figura 4: projeto criado. Para evitar erros na hora da execuo da aplicao, vamos seta-l como StartUp de nosso projeto.

Figura 5: configurando o projeto como StartUp. Para a camada Presentation reconhecer uma entidade da camada Entity, assim como os objetos da camada Business, necessrio adicionar as referncias das camadas Entity e Business na camada Presentation.

Figura 6: adicionando referncias das camadas Entity e Business na camada Presentation (Add Reference > Projects > OK). A camada Presentation no precisa de uma referncia da camada Data, j que a camada Business responsvel pela comunicao entre elas. Listando dados A primeira coisa a ser feita construirmos uma pgina onde sero listados todos os clientes cadastrados no banco de dados. Essa pgina ser o WebForm Default.aspx que foi criado junto com o projeto, nesse WebForm vamos adicionar um componente GridView que ir receber como DataSource o mtodo listar da classe Clientes pertencente a camada Business.

Figura 7: adicionando o componente GridView ao WebForm Default.aspx (Tollbox > Data > GridView). Para que as colunas do GridView no sejam criadas automaticamente vamos atribuir na propriedade AutoGenerateColumns o valor "False". Vamos ento, customizar o GridView adicionando um BoundField para o Nome e outro para o Email, vamos adicionar um LinkButton com um link para edio do registro, para isso vamos utilizar o TemplateField. Vamos utilizar tambm no WebForm, um Button para adicionar um novo Cliente a base de dados. Depois disso o cdigo deve ficar assim:

Figura 8: visualizao do cdigo .aspx do WebForm Default.aspx. Para implementar a codificao da pgina tecle F7 com o WebForm Default.aspx aberto, a janela com o Code-Behind ser aberta.

Figura 9: implementao do WebForm Default.aspx. Vamos rodar a aplicao e se deu tudo certo at aqui, a pgina ser exibida:

Figura 10: visualizao da pgina Default.aspx. Visualizao detalhada do dados Para a edio e visualizao dos registros, vamos criar um novo WebForm, onde vamos ter os detalhes de cada Cliente cadastrado no banco.

Figura 11: Adicionando um novo WebForm ao projeto (Add > New Item > Web Form).

Com o WebForm criado, podemos adicionar os componentes que vamos utilizar na edio dos dados.

Figura 12: visualizao do cdigo .aspx do WebForm Cliente_Edit.aspx.

Para implementar as funcionalidades do WebForm vamos teclar F7. Page_Load

Figura 13: implementao do mtodo Page_Load.

Salvar

Figura 14: implementao do mtodo btnSalvar_Click.

Figura 15: visualizao do formulrio de edio executando uma insero. Alterar

Figura 16: implementao do mtodo btnAlterar_Click.

Figura 17: visualizao do formulrio de edio executando uma alterao. Excluir

Figura 18: implementao do mtodo btnExcluir_Click.

Figura 19: visualizao do formulrio de edio executando uma excluso. Conclumos que ao final de mais uma etapa, teremos todas as camadas implementadas e funcionando de forma independente. Lembrando que o objetivo desse artigo foi demonstrar o funcionamento de aplicaes em N camadas, alguns detalhes como tratamento de erros e outras funcionalidades foram deixadas de lado para no perdermos o foco do entendimento. Fica aqui ento a dica: Como voc implementaria cada camada de seu projeto? Tratamento de erros, o uso de boas prticas e outras funcionalidades que voc usaria no desenvolvimento de sua

aplicao em N camadas. Participe, escreva seu artigo e compartilhe conhecimento. Agradecimentos: A todos que acompanharam as outras partes deixando seu comentrio, aos meus amigos que apoiaram a idia e me ajudaram, ao amigo Ramon Dures pelo incentivo nessa caminhada para aprender cada vez mais, a comunidade Codificando.Net, a revista Codificando.Net e-Magazine e claro, a minha grande amiga Ana Clara Nogi que me ajudou com as correes do artigo.

http://comunidade.codificando.net/profiles/blogs/aplicacoes-em-n-camadas-com-4

Você também pode gostar