O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.
Arquitetura de Camadas em Java™ Enterprise Edition™ Phillip Calçado
<ul><li>Descrever e conceituar Arquitetura de Camadas em JEE™ </li></ul><ul><li>Apresentar e discutir técnicas para criaçã...
<ul><li>Orientação a Objetos, Java™, Java EE™, Web... o de sempre ! </li></ul>Pré-Requisitos (Pentium IV, 512 MB RAM DDR,....
(A gente veio aqui pra beber ou conversar?) <ul><li>Quem é Você? </li></ul><ul><li>O que são Camadas </li></ul><ul><li>Cam...
<ul><li>Phillip Calçado,  a.k.a.   Shoes </li></ul><ul><li>Programador desde 1996 </li></ul><ul><li>Com Java desde 2003  (...
(Por que esse povo de Java fala tanto em camadas?) O que são Camadas
(Por que esse povo de Java fala tanto em camadas?) O que são Camadas <ul><li>Divisão Lógica de componentes de software (la...
(Por que esse povo de Java fala tanto em camadas?) O que são Camadas <ul><li>Algumas Vantagens: </li></ul><ul><li>Reduzem ...
<ul><li>Formada por nós que se comunicam </li></ul><ul><li>Um nó nesse contexto é uma unidade de processamento: </li></ul>...
(Das geladeiras pretas aos celulares) Camadas Físicas - Evolução <ul><li>Fase 1: Mainframes </li></ul><ul><ul><li>Tudo no ...
<ul><li>2, 3, 4 ou N Camadas?  </li></ul><ul><li>Camada de Apresentação  é a Interface </li></ul><ul><li>Camada de Aplicaç...
(“Ah, as famosas três camadas. Massa, recheio e cobertura. A culinária francesa em geral  me decepciona, mas as sobremesas...
(O pecado original) A maioria esmagadora dos sistemas construídos usando  Java™ EE™ não são e  nunca serão  altamente dist...
(Em VB não tem essas frescuras...) Camadas Lógicas em Java EE™ - Exemplos
(Ou: Não Fale com Estranhos) <ul><li>Camadas deveriam ser empilhadas, mais básicas abaixo, mais especificas acima </li></u...
(Como perder dinheiro fácil) <ul><li>Golden Hammer:  Camadas para Tudo e Todos </li></ul><ul><li>Queimando Etapas:  Interf...
(Quando a Sun vai atualizar aqueles diagramas?) Convidado Especial: DTOs Locais <ul><li>DTOs foram criados para reduzir cu...
(Do laod que se vê) Camada de Apresentação <ul><li>Interação entre usuário/subsistema e sistema </li></ul><ul><li>Pode ser...
(Ah, enfim algo produtivo...) Smart UI: A GUI que Sabe o que Faz Camada de Apresentação: Alternativas
(Ah, enfim algo produtivo...) Smart UI: A GUI que Sabe o que Faz Camada de Apresentação: Alternativas <ul><li>Chamadas à i...
(Toda vez que voce usa Struts, Deus mata um bebe foca. Pense nas pobres foquinhas, e parem de usar esse lixo. Por favooooo...
(Toda vez que voce usa Struts, Deus mata um bebe foca. Pense nas pobres foquinhas, e parem de usar esse lixo. Por favooooo...
(Alguém tem que controlar essa bagunça!) Camada de Aplicação <ul><li>Coordena Casos de Uso </li></ul><ul><li>Controla como...
(Não julgue um livro pela capa) Façade: Tudo na Interface Camada de Aplicação: Alternativas
(Não julgue um livro pela capa) Façade: Tudo na Interface Camada de Aplicação: Alternativas <ul><li>Expõe conceitos, não i...
(Back to the future) Commands: A Herança Camada de Aplicação: Alternativas
(Back to the future) Commands: A Herança Camada de Aplicação: Alternativas <ul><li>Fácil de entender </li></ul><ul><li>Atô...
(Let the Show begin!) Camada de Negócios <ul><li>Chamada também de  Camada de Domínio </li></ul><ul><li>Modela o domínio d...
(Já vi esse filme antes...) Transaction Script: Quase um Command Camada de Negócios: Alternativas
(Já vi esse filme antes...) Transaction Script: Quase um Command Camada de Negócios: Alternativas <ul><li>Simples </li></u...
(Orientação a Objetos é sobre o que mesmo?) Domain Model: Como no Livro Camada de Negócios: Alternativas
(Orientação a Objetos é sobre o que mesmo?) Domain Model: Como no Livro Camada de Negócios: Alternativas <ul><li>Melhor ma...
(Como assim?) Camada de Persistência <ul><li>Responsável por armazenar objetos </li></ul><ul><li>Não prevista num modelo p...
(“Objetos são tabelas que acham que são gente...” - DBA Anônimo) Active Record: Não dá para Esquecer Camada de Persistênci...
(“Objetos são tabelas que acham que são gente...” - DBA Anônimo) Active Record: Não dá para Esquecer Camada de Persistênci...
(Se era mais fácil usar um banco OO? NÃO!) Data Mapper: Ei, alguém sabe fazer isto! Camada de Persistência: Alternativas
(Se era mais fácil usar um banco OO? NÃO!) Data Mapper: Ei, alguém sabe fazer isto! Camada de Persistência: Alternativas <...
(Não era mais fácil usar um banco OO?) Active Mapped Record: O Melhor dos Dois Mundos Camada de Persistência: Alternativas
(Não era mais fácil usar um banco OO?) Active Mapped Record: O Melhor dos Dois Mundos Camada de Persistência: Alternativas...
(Canhões, moscas...ah, você sabe!) <ul><li>Não Compensa em: </li></ul><ul><ul><li>Aplicações simples que não fazem mais qu...
Conclusão <ul><li>Camadas != MVC </li></ul><ul><li>Na grande maioria das vezes, DTOs são inúteis </li></ul><ul><li>Não exi...
<ul><li>Craig Larman  – Applying UML and Patterns </li></ul><ul><li>Eric Evans  – Domain-Driven Design </li></ul><ul><li>B...
GUJ - Fórum de Design
Contato http://www.fragmental.com.br http://www.riojug.org http://www.guj.com.br [email_address]
Que Zahl os Acompanhe... Obrigado!
Próximos SlideShares
Carregando em…5
×

Arquitetura de Camadas em Java EE - Maraton4Java 2005

9.655 visualizações

Publicada em

Palestra sobre arquitetura de camadas em Java para o Maratona4Java de Brasília.Slides em PDF disponíveis.

Essa palestra originou o artigo Arquitetura de Camadas em Java EE publicado na revista Mundo Java número 15.

Apresentada em 19/11/2005.

http://blog.fragmental.com.br/wiki/index.php/Maratona4Java2005:_Arquitetura_de_Camadas_em_Java%E2%84%A2_Enterprise_Edition

Publicada em: Tecnologia
  • Hello! I can recommend a site that has helped me. It's called ⇒ www.WritePaper.info ⇐ So make sure to check it out!
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui
  • To get professional research papers you must go for experts like ⇒ www.WritePaper.info ⇐
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (2019 Update) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download Full EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download Full doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... ......................................................................................................................... ................................................................................................................................... eBook is an electronic version of a traditional print book THIS can be read by using a personal computer or by using an eBook reader. (An eBook reader can be a software application for use on a computer such as Microsoft's free Reader application, or a book-sized computer THIS is used solely as a reading device such as Nuvomedia's Rocket eBook.) Users can purchase an eBook on diskette or CD, but the most popular method of getting an eBook is to purchase a downloadable file of the eBook (or other reading material) from a Web site (such as Barnes and Noble) to be read from the user's computer or reading device. Generally, an eBook can be downloaded in five minutes or less ......................................................................................................................... .............. Browse by Genre Available eBooks .............................................................................................................................. Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, ......................................................................................................................... ......................................................................................................................... .....BEST SELLER FOR EBOOK RECOMMEND............................................................. ......................................................................................................................... Blowout: Corrupted Democracy, Rogue State Russia, and the Richest, Most Destructive Industry on Earth,-- The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company,-- Call Sign Chaos: Learning to Lead,-- StrengthsFinder 2.0,-- Stillness Is the Key,-- She Said: Breaking the Sexual Harassment Story THIS Helped Ignite a Movement,-- Atomic Habits: An Easy &amp; Proven Way to Build Good Habits &amp; Break Bad Ones,-- Everything Is Figureoutable,-- What It Takes: Lessons in the Pursuit of Excellence,-- Rich Dad Poor Dad: What the Rich Teach Their Kids About Money THIS the Poor and Middle Class Do Not!,-- The Total Money Makeover: Classic Edition: A Proven Plan for Financial Fitness,-- Shut Up and Listen!: Hard Business Truths THIS Will Help You Succeed, ......................................................................................................................... .........................................................................................................................
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (2019 Update) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download Full EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download Full doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... ......................................................................................................................... ................................................................................................................................... eBook is an electronic version of a traditional print book THIS can be read by using a personal computer or by using an eBook reader. (An eBook reader can be a software application for use on a computer such as Microsoft's free Reader application, or a book-sized computer THIS is used solely as a reading device such as Nuvomedia's Rocket eBook.) Users can purchase an eBook on diskette or CD, but the most popular method of getting an eBook is to purchase a downloadable file of the eBook (or other reading material) from a Web site (such as Barnes and Noble) to be read from the user's computer or reading device. Generally, an eBook can be downloaded in five minutes or less ......................................................................................................................... .............. Browse by Genre Available eBooks .............................................................................................................................. Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, ......................................................................................................................... ......................................................................................................................... .....BEST SELLER FOR EBOOK RECOMMEND............................................................. ......................................................................................................................... Blowout: Corrupted Democracy, Rogue State Russia, and the Richest, Most Destructive Industry on Earth,-- The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company,-- Call Sign Chaos: Learning to Lead,-- StrengthsFinder 2.0,-- Stillness Is the Key,-- She Said: Breaking the Sexual Harassment Story THIS Helped Ignite a Movement,-- Atomic Habits: An Easy &amp; Proven Way to Build Good Habits &amp; Break Bad Ones,-- Everything Is Figureoutable,-- What It Takes: Lessons in the Pursuit of Excellence,-- Rich Dad Poor Dad: What the Rich Teach Their Kids About Money THIS the Poor and Middle Class Do Not!,-- The Total Money Makeover: Classic Edition: A Proven Plan for Financial Fitness,-- Shut Up and Listen!: Hard Business Truths THIS Will Help You Succeed, ......................................................................................................................... .........................................................................................................................
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (2019 Update) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download Full EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download Full doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... ......................................................................................................................... ................................................................................................................................... eBook is an electronic version of a traditional print book THIS can be read by using a personal computer or by using an eBook reader. (An eBook reader can be a software application for use on a computer such as Microsoft's free Reader application, or a book-sized computer THIS is used solely as a reading device such as Nuvomedia's Rocket eBook.) Users can purchase an eBook on diskette or CD, but the most popular method of getting an eBook is to purchase a downloadable file of the eBook (or other reading material) from a Web site (such as Barnes and Noble) to be read from the user's computer or reading device. Generally, an eBook can be downloaded in five minutes or less ......................................................................................................................... .............. Browse by Genre Available eBooks .............................................................................................................................. Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, ......................................................................................................................... ......................................................................................................................... .....BEST SELLER FOR EBOOK RECOMMEND............................................................. ......................................................................................................................... Blowout: Corrupted Democracy, Rogue State Russia, and the Richest, Most Destructive Industry on Earth,-- The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company,-- Call Sign Chaos: Learning to Lead,-- StrengthsFinder 2.0,-- Stillness Is the Key,-- She Said: Breaking the Sexual Harassment Story THIS Helped Ignite a Movement,-- Atomic Habits: An Easy &amp; Proven Way to Build Good Habits &amp; Break Bad Ones,-- Everything Is Figureoutable,-- What It Takes: Lessons in the Pursuit of Excellence,-- Rich Dad Poor Dad: What the Rich Teach Their Kids About Money THIS the Poor and Middle Class Do Not!,-- The Total Money Makeover: Classic Edition: A Proven Plan for Financial Fitness,-- Shut Up and Listen!: Hard Business Truths THIS Will Help You Succeed, ......................................................................................................................... .........................................................................................................................
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui

Arquitetura de Camadas em Java EE - Maraton4Java 2005

  1. 1. Arquitetura de Camadas em Java™ Enterprise Edition™ Phillip Calçado
  2. 2. <ul><li>Descrever e conceituar Arquitetura de Camadas em JEE™ </li></ul><ul><li>Apresentar e discutir técnicas para criação e integração destas </li></ul><ul><li>Se divertir no processo </li></ul>Objetivos (Tentar dominar o mundo!) (Droga! Sabia que devia ter ido pro bar...) Não São Objetivos <ul><li>Mudar as suas convicções, sua cabeça, sua religião, seu time de futebol... </li></ul>
  3. 3. <ul><li>Orientação a Objetos, Java™, Java EE™, Web... o de sempre ! </li></ul>Pré-Requisitos (Pentium IV, 512 MB RAM DDR,...)
  4. 4. (A gente veio aqui pra beber ou conversar?) <ul><li>Quem é Você? </li></ul><ul><li>O que são Camadas </li></ul><ul><li>Camadas Físicas </li></ul><ul><li>Camadas Lógicas </li></ul><ul><li>Camadas em Java™ EE™ </li></ul><ul><li>Integração entre Camadas: Boas Praticas </li></ul><ul><li>Integração entre Camadas: Más Praticas </li></ul><ul><li>Camada de Apresentação: Alternativas </li></ul><ul><li>Camada de Aplicação: Alternativas </li></ul><ul><li>Camada de Negócios: Alternativas </li></ul><ul><li>Camada de Persistência: Alternativas </li></ul><ul><li>Conclusão </li></ul>Agenda
  5. 5. <ul><li>Phillip Calçado, a.k.a. Shoes </li></ul><ul><li>Programador desde 1996 </li></ul><ul><li>Com Java desde 2003 (“¡ adios, C++ !”) </li></ul><ul><li>Coordenador do GUJ </li></ul><ul><li>JUG Leader do RioJUG </li></ul><ul><li>Consultor, instrutor, coach </li></ul><ul><li>Diversos projetos open-source (alguns chegaram até a ter uma versão 1.0!) </li></ul><ul><li>Escritor ocasional (http://www.fragmental.com.br) </li></ul><ul><li>Aplicações para análise de risco, redes GSM, gestão de conteúdo, setor financeiro, biologia... A grande maioria utilizando Java EE </li></ul>Quem é Você?
  6. 6. (Por que esse povo de Java fala tanto em camadas?) O que são Camadas
  7. 7. (Por que esse povo de Java fala tanto em camadas?) O que são Camadas <ul><li>Divisão Lógica de componentes de software (layer) ou hardware (tier) </li></ul><ul><li>Separam componentes por responsabilidade comum </li></ul><ul><li>Se comunicam de cima para baixo (quase sempre) </li></ul><ul><li>Camadas Famosas: </li></ul><ul><ul><li>TCP/IP </li></ul></ul><ul><ul><li>Sistemas Operacionais </li></ul></ul><ul><ul><li>Java </li></ul></ul><ul><ul><li>.Net </li></ul></ul>
  8. 8. (Por que esse povo de Java fala tanto em camadas?) O que são Camadas <ul><li>Algumas Vantagens: </li></ul><ul><li>Reduzem complexidade </li></ul><ul><li>Reduzem dependência / acoplamento </li></ul><ul><li>Favorecem a coesão </li></ul><ul><li>Promovem reusabilidade </li></ul><ul><li>São um Padrão conhecido </li></ul><ul><li>Algumas Desvantagens </li></ul><ul><li>Limitadas pela tecnologia </li></ul><ul><li>Não existe um mercado de COTS </li></ul><ul><li>Apenas complicam um sistema muito simples </li></ul><ul><li>Arquitetos megalomaníacos adoram </li></ul>
  9. 9. <ul><li>Formada por nós que se comunicam </li></ul><ul><li>Um nó nesse contexto é uma unidade de processamento: </li></ul><ul><ul><li>JVM </li></ul></ul><ul><ul><li>Servidor </li></ul></ul><ul><ul><li>Computador Pessoal </li></ul></ul><ul><ul><li>Servidor de Aplicações </li></ul></ul><ul><ul><li>CPU </li></ul></ul>(Das geladeiras pretas aos celulares) Camadas Físicas
  10. 10. (Das geladeiras pretas aos celulares) Camadas Físicas - Evolução <ul><li>Fase 1: Mainframes </li></ul><ul><ul><li>Tudo no mesmo nó </li></ul></ul><ul><li>Fase 2: Cliente/Servidor </li></ul><ul><ul><li>Banco de dados separado </li></ul></ul><ul><ul><li>Interface separada </li></ul></ul><ul><ul><li>Regra de negócios acoplada com Interface ou Banco de Dados </li></ul></ul><ul><li>Fase 3: 3-Tier </li></ul><ul><ul><li>Um nó para persistência, um para Negócios e um ou mais para interface </li></ul></ul><ul><li>Fase 4: n-Tier </li></ul><ul><ul><li>Um nó por conceito </li></ul></ul>
  11. 11. <ul><li>2, 3, 4 ou N Camadas? </li></ul><ul><li>Camada de Apresentação é a Interface </li></ul><ul><li>Camada de Aplicação coordena casos de uso </li></ul><ul><li>Camada de Negócios é onde fica a Lógica de negócios </li></ul><ul><li>Camada de Persistência são os componentes que salvam o estado do objeto em algum lugar </li></ul><ul><li>... </li></ul>(“Ah, as famosas tres camadas. Massa, recheio e cobertura. A culinaria francesa em geral me decepciona, mas as sobremesas sao sempre otimas. “ – Carlos Villela - GUJ ) Camadas Lógicas
  12. 12. (“Ah, as famosas três camadas. Massa, recheio e cobertura. A culinária francesa em geral me decepciona, mas as sobremesas são sempre ótimas. – Carlos Villela - GUJ) Camadas Lógicas - Evolução <ul><li>Sistemas Operacionais </li></ul><ul><ul><li>I/O </li></ul></ul><ul><ul><li>Gerência de memória </li></ul></ul><ul><li>Bancos de Dados </li></ul><ul><ul><li>Gerência dos Dados </li></ul></ul><ul><li>Interfaces de Usuário </li></ul><ul><ul><li>Independência de Interface </li></ul></ul><ul><ul><li>Paradigma Web/HTTP </li></ul></ul><ul><li>Middleware </li></ul><ul><ul><li>RPC </li></ul></ul><ul><ul><li>Mensagens </li></ul></ul><ul><li>Regras de Negócio </li></ul><ul><ul><li>Funcional </li></ul></ul><ul><ul><li>OO </li></ul></ul>
  13. 13. (O pecado original) A maioria esmagadora dos sistemas construídos usando Java™ EE™ não são e nunca serão altamente distribuídos Camadas Físicas em Java EE™ <ul><li>Java EE pressupõe sistemas altamente distribuídos </li></ul><ul><li>EJBs foram criados para ambientes altamente distribuídos </li></ul><ul><li>Design Patterns Java EE™ são gambiarras para sistemas altamente distribuídos </li></ul><ul><li>Mas... </li></ul>
  14. 14. (Em VB não tem essas frescuras...) Camadas Lógicas em Java EE™ - Exemplos
  15. 15. (Ou: Não Fale com Estranhos) <ul><li>Camadas deveriam ser empilhadas, mais básicas abaixo, mais especificas acima </li></ul><ul><li>Dependência é sempre de cima para baixo </li></ul><ul><li>Utilize Depedency Injection para integrar Camadas </li></ul><ul><li>Camadas escondem as inferiores das superiores </li></ul><ul><li>A camada de cima conhece a i nterface da inferior, nunca sua implementação </li></ul>Integração entre Camadas: Boas Praticas
  16. 16. (Como perder dinheiro fácil) <ul><li>Golden Hammer: Camadas para Tudo e Todos </li></ul><ul><li>Queimando Etapas: Interface conecta com Persistência </li></ul><ul><li>Decomposição Funcional: Commands como Funções </li></ul><ul><li>Gordura Extra: Não expor operações de baixa granularidade </li></ul><ul><li>Despachante: Camada transparente que não faz nada </li></ul><ul><li>Mochileiro das Galáxias: Objeto vai do fundo ao topo das camadas,ou vice-versa </li></ul><ul><li>Data Transfer Objects (DTO/VO/TO) : entre camadas em mesmo nó </li></ul>Integração entre Camadas: Más Praticas
  17. 17. (Quando a Sun vai atualizar aqueles diagramas?) Convidado Especial: DTOs Locais <ul><li>DTOs foram criados para reduzir custo de chamadas RPC </li></ul><ul><li>Padrão VO/TO é para vencer os problemas dos Entity Beans </li></ul><ul><li>Não faz sentido dentro do mesmo nó </li></ul><ul><li>Provoca hierarquia de classes duplicada </li></ul><ul><li>Não faz sentido com Lazy-Loading </li></ul><ul><li>Pode fazer algum sentido para encapsular Camadas </li></ul>Integração entre Camadas: Más Praticas
  18. 18. (Do laod que se vê) Camada de Apresentação <ul><li>Interação entre usuário/subsistema e sistema </li></ul><ul><li>Pode ser gráfica, textual, XML, CSV... </li></ul><ul><li>Responde a estímulos do usuário e exibe seus resultados </li></ul><ul><li>Não contêm Lógica de Negócios </li></ul>
  19. 19. (Ah, enfim algo produtivo...) Smart UI: A GUI que Sabe o que Faz Camada de Apresentação: Alternativas
  20. 20. (Ah, enfim algo produtivo...) Smart UI: A GUI que Sabe o que Faz Camada de Apresentação: Alternativas <ul><li>Chamadas à interface realizam regras de negócio </li></ul><ul><li>Alta produtividade </li></ul><ul><li>Muito comum em Delphi/VB e demais </li></ul><ul><li>Desenvolvedores menos experiente se sentem confortáveis </li></ul><ul><li>Ferramentas RAD ajudam bastante </li></ul><ul><li>Código repetido aos montes </li></ul><ul><li>Alto acoplamento e baixa coesão </li></ul><ul><li>Programação Orientada a Telas, não a Objetos </li></ul><ul><li>Incompatível com um Domain Model </li></ul><ul><li>Integração entre aplicações extremamente complicada </li></ul>
  21. 21. (Toda vez que voce usa Struts, Deus mata um bebe foca. Pense nas pobres foquinhas, e parem de usar esse lixo. Por favooooooooooooooooooor. – Carlos Villela – GUJ) MVC: Subcamadas Camada de Apresentação: Alternativas
  22. 22. (Toda vez que voce usa Struts, Deus mata um bebe foca. Pense nas pobres foquinhas, e parem de usar esse lixo. Por favooooooooooooooooooor. – Carlos Villela – GUJ) MVC: Subcamadas Camada de Apresentação: Alternativas <ul><li>Apresentação dividida entre View e Controller </li></ul><ul><li>Separação de responsabilidades </li></ul><ul><li>Vários e vários frameworks e ferramentas </li></ul><ul><li>MVC para web não é MVC , é Front Controller </li></ul><ul><li>Costuma-se confundir MVC com Camadas </li></ul><ul><li>Modelo não é Persistência </li></ul>
  23. 23. (Alguém tem que controlar essa bagunça!) Camada de Aplicação <ul><li>Coordena Casos de Uso </li></ul><ul><li>Controla como os Objetos de Negócio são utilizados </li></ul><ul><li>Muitas vezes é diluída entre Camada de Apresentação e Camada de Negócios </li></ul>
  24. 24. (Não julgue um livro pela capa) Façade: Tudo na Interface Camada de Aplicação: Alternativas
  25. 25. (Não julgue um livro pela capa) Façade: Tudo na Interface Camada de Aplicação: Alternativas <ul><li>Expõe conceitos, não implementação </li></ul><ul><li>Controla bem Casos de Uso </li></ul><ul><li>Garante consistência: só é possível entrar o que foi planejado </li></ul><ul><li>Limita uso de Camada de Negócios </li></ul><ul><li>Pouca reusabilidade: e o que não foi previsto? </li></ul>
  26. 26. (Back to the future) Commands: A Herança Camada de Aplicação: Alternativas
  27. 27. (Back to the future) Commands: A Herança Camada de Aplicação: Alternativas <ul><li>Fácil de entender </li></ul><ul><li>Atômico </li></ul><ul><li>Se não formalizada uma Camada de Aplicação, facilmente implementado com MVC </li></ul><ul><li>Programação altamente Procedural </li></ul><ul><li>Explosão de Commands e baixíssima reusabilidade </li></ul><ul><li>Camada de Aplicação não é limitada a Request/Response </li></ul>
  28. 28. (Let the Show begin!) Camada de Negócios <ul><li>Chamada também de Camada de Domínio </li></ul><ul><li>Modela o domínio do problema </li></ul><ul><li>É o sistema! </li></ul>
  29. 29. (Já vi esse filme antes...) Transaction Script: Quase um Command Camada de Negócios: Alternativas
  30. 30. (Já vi esse filme antes...) Transaction Script: Quase um Command Camada de Negócios: Alternativas <ul><li>Simples </li></ul><ul><li>Rápido </li></ul><ul><li>Não recomendado para lógica de negócios que não seja só tira-e-põe do banco de dados </li></ul><ul><li>Programação Procedural sem objetos inteligentes </li></ul><ul><li>Incompatível com um Domain Model </li></ul><ul><li>Repetição de código </li></ul><ul><li>Baixa Reusabilidade </li></ul>
  31. 31. (Orientação a Objetos é sobre o que mesmo?) Domain Model: Como no Livro Camada de Negócios: Alternativas
  32. 32. (Orientação a Objetos é sobre o que mesmo?) Domain Model: Como no Livro Camada de Negócios: Alternativas <ul><li>Melhor maneira de modelar problemas em OOP </li></ul><ul><li>Eficaz para Lógica Complexa </li></ul><ul><li>Altamente Orientado a Objetos </li></ul><ul><li>Complexo demais para cosias muito simples </li></ul><ul><li>Baixa produtividade: programadores não estão acostumados </li></ul><ul><li>Tecnologia limita seu uso </li></ul>
  33. 33. (Como assim?) Camada de Persistência <ul><li>Responsável por armazenar objetos </li></ul><ul><li>Não prevista num modelo puramente OO, objetos seriam eternos </li></ul><ul><li>Geralmente utiliza SGBDR, o que complica seu uso </li></ul>
  34. 34. (“Objetos são tabelas que acham que são gente...” - DBA Anônimo) Active Record: Não dá para Esquecer Camada de Persistência: Alternativas
  35. 35. (“Objetos são tabelas que acham que são gente...” - DBA Anônimo) Active Record: Não dá para Esquecer Camada de Persistência: Alternativas <ul><li>Simples </li></ul><ul><li>Rápido </li></ul><ul><li>Quebra completamente camadas </li></ul><ul><li>Sem semântica: objeto é seu próprio repositório </li></ul><ul><li>Ruim para atualizações em lote </li></ul>
  36. 36. (Se era mais fácil usar um banco OO? NÃO!) Data Mapper: Ei, alguém sabe fazer isto! Camada de Persistência: Alternativas
  37. 37. (Se era mais fácil usar um banco OO? NÃO!) Data Mapper: Ei, alguém sabe fazer isto! Camada de Persistência: Alternativas <ul><li>Simples </li></ul><ul><li>Rápido </li></ul><ul><li>Mantêm Objetos de Negócio ignorantes sobre persistência </li></ul><ul><li>Facilita testes podendo ser substituído </li></ul><ul><li>Um passo “artificial” a mais em qualquer execução </li></ul><ul><li>Quando persistir? </li></ul><ul><li>Explosão de Classes </li></ul><ul><li>Sem um bom framework pode ser improdutivo </li></ul><ul><li>Sem lazy-loading fica complexo </li></ul>
  38. 38. (Não era mais fácil usar um banco OO?) Active Mapped Record: O Melhor dos Dois Mundos Camada de Persistência: Alternativas
  39. 39. (Não era mais fácil usar um banco OO?) Active Mapped Record: O Melhor dos Dois Mundos Camada de Persistência: Alternativas <ul><li>Simples </li></ul><ul><li>Rápido </li></ul><ul><li>Pode ser obtido com superclasses ou AOP </li></ul><ul><li>Não quebra Camadas </li></ul><ul><li>Não tem problema de “quando persistir?” </li></ul><ul><li>Objetos precisam (uma hora ou outra) saber que não são persistidos automaticamente </li></ul><ul><li>Não elimina Repositórios nem DAOs </li></ul><ul><li>Não funciona para grandes volumes de dados </li></ul><ul><li>Pode gerar inconsistência se o cliente não salvar o objeto </li></ul><ul><li>Experimental </li></ul>
  40. 40. (Canhões, moscas...ah, você sabe!) <ul><li>Não Compensa em: </li></ul><ul><ul><li>Aplicações simples que não fazem mais que tirar e colocar registros no banco </li></ul></ul><ul><ul><li>Protótipos </li></ul></ul><ul><ul><li>Partes da Aplicação com Relatórios Pesados </li></ul></ul><ul><li>Possíveis Soluções Menos Problemáticas: </li></ul><ul><ul><li>Groovy / BeanShell / Jython / jRuby </li></ul></ul><ul><ul><li>Ruby on Rails/ PHP </li></ul></ul><ul><ul><li>Shell Scripts / Ruby / Python / PERL </li></ul></ul><ul><ul><li>Ferramentas do SGBD </li></ul></ul><ul><ul><li>Ferramentas RAD </li></ul></ul>Quando Não Usar Camadas
  41. 41. Conclusão <ul><li>Camadas != MVC </li></ul><ul><li>Na grande maioria das vezes, DTOs são inúteis </li></ul><ul><li>Não existe “a maneira certa”, existe “a mais adequada” e esta varia com os requisitos </li></ul><ul><li>Flexibilidade é importante mas complexidade reduzida também (talvez mais) </li></ul><ul><li>A tecnologia ainda é fator limitante para o desenvolvimento OO </li></ul>
  42. 42. <ul><li>Craig Larman – Applying UML and Patterns </li></ul><ul><li>Eric Evans – Domain-Driven Design </li></ul><ul><li>Bertrand Meyer – Object-Oriented Software Construction </li></ul><ul><li>Martin Fowler – Refactoring, PEAI, Analysis Patterns... </li></ul><ul><li>Rod Johnson – J2EE Development Without EJB </li></ul><ul><li>Bruce Tate & Justin Gehtland – Better, Faster, Lighter Java </li></ul><ul><li>Meilir Page-Jones – Fundamentals of Object-Oriented Design Using UML </li></ul><ul><li>Andrew Hunt & David Thomas – The Pragmatic Programmer </li></ul>Autores Recomendados
  43. 43. GUJ - Fórum de Design
  44. 44. Contato http://www.fragmental.com.br http://www.riojug.org http://www.guj.com.br [email_address]
  45. 45. Que Zahl os Acompanhe... Obrigado!

×