DESENVOLVIMENTO EM 3 CAMADAS
Estou desenvolvendo um Programa em VB.NET e me deparei com o desenvolvimento em 3 camadas, pesquisei muito sobre o assunto e comecei a desenvolver.
Gostaria da opinião de todos sobre o meu desenvolvimento, para ver se estou seguinto corretamente o devenvolvimento em 3 camadas.
Minha Primeira Camada chama Apresentação:
Deixo somente o que o usuario possa interarir no meu caso os Forms.
Minha Segunda Camada chama Dados:
Deixo somente uma classe chamada Conexao ou faço todas as minhas Manipulações com o Banco de Dados(Insert,Update,Delete) e a minha Conexao.
Minha Terceia Camada chama Negocios:
Onde tenho tenho todas regras de negocio(o que pode ou nao ficar em branco e etc)
Funciona assim:
o Usuario digita um novo cliente
No botaão incluir instacio a Classe Cliente e faço todos os procedimentos de Regras de Negocios, estando tudo certo monto uma string(Insert) com os meus paramentros e instacio a Classe Conexao e incluo no Banco de Dados.
Esta correto pensar assim ?
PS: Cada camada é um projeto
Gostaria da opinião de todos sobre o meu desenvolvimento, para ver se estou seguinto corretamente o devenvolvimento em 3 camadas.
Minha Primeira Camada chama Apresentação:
Deixo somente o que o usuario possa interarir no meu caso os Forms.
Minha Segunda Camada chama Dados:
Deixo somente uma classe chamada Conexao ou faço todas as minhas Manipulações com o Banco de Dados(Insert,Update,Delete) e a minha Conexao.
Minha Terceia Camada chama Negocios:
Onde tenho tenho todas regras de negocio(o que pode ou nao ficar em branco e etc)
Funciona assim:
o Usuario digita um novo cliente
No botaão incluir instacio a Classe Cliente e faço todos os procedimentos de Regras de Negocios, estando tudo certo monto uma string(Insert) com os meus paramentros e instacio a Classe Conexao e incluo no Banco de Dados.
Esta correto pensar assim ?
PS: Cada camada é um projeto
Leandro,
o meu ponto de vista é BEM PESSOAL e por isso deverá ser lido com cautela, muito mais como uma abordágem diferente do que como qualquer conceito acadêmico.
Ai vai: Na 1a camada eu costumo colocar somente o FRONT-END, sem acesso a dado algum, ou seja, somente tela. Na segunda camada, em um servidor diferente, costumo colocar a camada de acesso a negocios e dados e, por último, na 3a camada coloco a camada de DADOS junto com REGRAS DE NEGOCIOS.
A 3a camada está sempre no servidor de SQL e as regras de negócio são sempre PROCEDURES do SQL, uma vez que tento parametrizar as regras e, sendo assim, como todas ficam em tabelas no BD, o acesso aos mesmos fica incrivelmente mais rápido se feito no próprio BD.
Fica, entretando, a idéia de que hoje até já se fala em desenvolvimento em 4 camadas, principalmente quando os dados estão num servidor (normalmente Mainframe), as regras de negócio em outro (e só ela acessa a camada de dados e normalmente está em Mainframe também), a camada de acesso em outro (negocia os objetos da camada de negócios) e finalmente a camada de client (FRONT), que cuida do visual e utilização junto ao usuário.
Analisa o perfil do seu cliente para decidir. Cada caso é um caso. Tem casos em que instalar mais de 2 camadas pode fazer um rato virar uma motanha, sem necessidade.
o meu ponto de vista é BEM PESSOAL e por isso deverá ser lido com cautela, muito mais como uma abordágem diferente do que como qualquer conceito acadêmico.
Ai vai: Na 1a camada eu costumo colocar somente o FRONT-END, sem acesso a dado algum, ou seja, somente tela. Na segunda camada, em um servidor diferente, costumo colocar a camada de acesso a negocios e dados e, por último, na 3a camada coloco a camada de DADOS junto com REGRAS DE NEGOCIOS.
A 3a camada está sempre no servidor de SQL e as regras de negócio são sempre PROCEDURES do SQL, uma vez que tento parametrizar as regras e, sendo assim, como todas ficam em tabelas no BD, o acesso aos mesmos fica incrivelmente mais rápido se feito no próprio BD.
Fica, entretando, a idéia de que hoje até já se fala em desenvolvimento em 4 camadas, principalmente quando os dados estão num servidor (normalmente Mainframe), as regras de negócio em outro (e só ela acessa a camada de dados e normalmente está em Mainframe também), a camada de acesso em outro (negocia os objetos da camada de negócios) e finalmente a camada de client (FRONT), que cuida do visual e utilização junto ao usuário.
Analisa o perfil do seu cliente para decidir. Cada caso é um caso. Tem casos em que instalar mais de 2 camadas pode fazer um rato virar uma motanha, sem necessidade.
Bom Seguinte
Quando falamos no Conceito MVC(Multi View ....) não falamos em 3 camadas.
o MVC e um pattern que se aplica separando seu projeto em camadas a serem definidas.
Como a maioria das aplicações e mais simples, utiliza-se 3 Camadas(DAL,BLL,PLL).
porem quando surge a necessidade do WCF, utiliza-se 5 camadas geralmente.
Se sua aplicação e ainada mais robusta, e ussa WCF voce tem quase 8 camadas.
Entoa quando se fala em 3 camadas, e o Patern MVC implementado em 3 Camadas.
Em principio, funciona da seguinte maneira.
Cada camadas tem sua funcao bem definida no projeto, sendo que cada uma nao sobrepoe a outra.
Um exemplo, na BLL vc nao tem Datatables.
entao deve-se pensar muito antes de sair codificando.
Outra coisa.
A camada DAL (Data Access Layer) e a camada de dados, e nela possui uma Unica classe de acesso real aos dados.todas as demais acessam os dados fornecidos por ela.
Na camada DAL, voce transforma os dados vindos desta classe em listas, ou dicionary ou hashtables de uma entidade da qual representa.
Uma entidade e uma classe so de atributos.
e estes dados devem ser serializaveis.
Na camada dal, voce transforma as informacoes em parametros para acessar as procedures.
Voce pode achar com certeza sql nativo no codigo, com certeza quem fez e porco.
e se voce por acaso vai fazert assim, ojgue tudo fora e use POG que combina mais.
Na Camada BLL (Business Layer) se concentra TODA sua regra de negocio.
e aqui que voce manipula os dados de acordo com sua regra, trata regras enfim.
e na PLL(Presentation Layer)
e onde ficam seus forms, web forms, users controls.
NELA SOMENTE HA A INTERAÇÃO COM FORM..
AS UNICAS VALIDACOES QUE DEVEM TER NELAS, SAO VALIDAÇÕES REFERENTES AO FORM(ESCONDER BOTAO, MUDAR COR, VER CAMPO VAZIO)
NUNCA DEVE TER REGRA E JAMAIS ACESSO AO BANCO.
Podem surgir outras camadas de acordo com sua necessidade (WCF, TLL- Transport Layer) mas quem define isso e o arquiteto.
Quando falamos no Conceito MVC(Multi View ....) não falamos em 3 camadas.
o MVC e um pattern que se aplica separando seu projeto em camadas a serem definidas.
Como a maioria das aplicações e mais simples, utiliza-se 3 Camadas(DAL,BLL,PLL).
porem quando surge a necessidade do WCF, utiliza-se 5 camadas geralmente.
Se sua aplicação e ainada mais robusta, e ussa WCF voce tem quase 8 camadas.
Entoa quando se fala em 3 camadas, e o Patern MVC implementado em 3 Camadas.
Em principio, funciona da seguinte maneira.
Cada camadas tem sua funcao bem definida no projeto, sendo que cada uma nao sobrepoe a outra.
Um exemplo, na BLL vc nao tem Datatables.
entao deve-se pensar muito antes de sair codificando.
Outra coisa.
A camada DAL (Data Access Layer) e a camada de dados, e nela possui uma Unica classe de acesso real aos dados.todas as demais acessam os dados fornecidos por ela.
Na camada DAL, voce transforma os dados vindos desta classe em listas, ou dicionary ou hashtables de uma entidade da qual representa.
Uma entidade e uma classe so de atributos.
e estes dados devem ser serializaveis.
Na camada dal, voce transforma as informacoes em parametros para acessar as procedures.
Voce pode achar com certeza sql nativo no codigo, com certeza quem fez e porco.
e se voce por acaso vai fazert assim, ojgue tudo fora e use POG que combina mais.
Na Camada BLL (Business Layer) se concentra TODA sua regra de negocio.
e aqui que voce manipula os dados de acordo com sua regra, trata regras enfim.
e na PLL(Presentation Layer)
e onde ficam seus forms, web forms, users controls.
NELA SOMENTE HA A INTERAÇÃO COM FORM..
AS UNICAS VALIDACOES QUE DEVEM TER NELAS, SAO VALIDAÇÕES REFERENTES AO FORM(ESCONDER BOTAO, MUDAR COR, VER CAMPO VAZIO)
NUNCA DEVE TER REGRA E JAMAIS ACESSO AO BANCO.
Podem surgir outras camadas de acordo com sua necessidade (WCF, TLL- Transport Layer) mas quem define isso e o arquiteto.
Entendi,
Agradeço a resposta.
Agradeço a resposta.
Tópico encerrado , respostas não são mais permitidas