Patterns of Enterprise Application Architecture
Padrões de Arquitetura de Aplicações Corporativas · Martin Fowler
0/60tópicos concluídos
0/3provas aprovadas
0%progresso total
Como estudar
- Olhe a ilustração. Leia o resumo (máx. 5 linhas).
- Tente responder as perguntas-chave antes de abrir.
- Faça os 5 exercícios. Acertar 3 ou mais conclui o tópico.
- No fim, faça as provas (mínimo 70%).
- Tudo concluído: emita o certificado.
- 0Introdução: Arquitetura e Aplicações Corporativas
Arquitetura = decisões difíceis de mudar. Aplicação corporativa = muitos dados, persistentes, concorrentes.novo - 1Camadas (Layering)
Apresentação → Domínio → Fonte de dados. Dependência só para baixo.novo - 2Organizando a Lógica de Domínio
Transaction Script, Table Module ou Domain Model. Escolha pela complexidade.novo - 3Mapeando para Bancos de Dados Relacionais
Objetos ≠ tabelas. Escolha o padrão de acesso, depois resolva comportamento e estrutura.novo - 4Apresentação Web
MVC separa modelo da UI. Controladores de entrada + padrões de visão.novo
- 5Concorrência
Atualização perdida e leitura inconsistente. Transação de sistema ≠ transação de negócio.novo - 6Estado de Sessão
Servidor sem estado escala. Sessão fica no cliente, no servidor ou no banco.novo - 7Estratégias de Distribuição
Primeira lei dos objetos distribuídos: não distribua seus objetos!novo - 8Juntando Tudo
Comece pelo domínio; ele dita a fonte de dados e o resto.novo
- 9.1Transaction Script
Um procedimento por requisição: lê, calcula, grava.novo - 9.2Domain Model
Objetos de domínio com dados + comportamento, colaborando entre si.novo - 9.3Table Module
Uma instância por tabela trata todas as linhas dela.novo - 9.4Service Layer
Fronteira da aplicação: operações disponíveis, transações e coordenação.novo
- 12.1Identity Field
Guarde a chave primária do banco dentro do objeto.novo - 12.2Foreign Key Mapping
Referência entre objetos vira chave estrangeira entre tabelas.novo - 12.3Association Table Mapping
Muitos-para-muitos via tabela de ligação.novo - 12.4Dependent Mapping
O dono mapeia seus dependentes; eles não têm mapper próprio.novo - 12.5Embedded Value
Objeto pequeno vira colunas na tabela do dono.novo - 12.6Serialized LOB
Grafo de objetos serializado em um campo BLOB/CLOB.novo - 12.7Single Table Inheritance
Toda a hierarquia em uma tabela com coluna discriminadora.novo - 12.8Class Table Inheritance
Uma tabela por classe da hierarquia, ligadas pela chave.novo - 12.9Concrete Table Inheritance
Uma tabela por classe concreta, com todos os campos herdados.novo - 12.10Inheritance Mappers
Estrutura de mappers que espelha a hierarquia de classes.novo
- 14.1Model View Controller
Modelo independente; visão exibe; controlador recebe a entrada.novo - 14.2Page Controller
Um controlador para cada página ou ação do site.novo - 14.3Front Controller
Um ponto de entrada único despacha para comandos.novo - 14.4Template View
HTML com marcadores que são trocados por dados.novo - 14.5Transform View
Percorre os dados do domínio e transforma cada elemento em HTML.novo - 14.6Two Step View
Dados → tela lógica → HTML. Layout global em um só lugar.novo - 14.7Application Controller
Ponto central que decide o fluxo de telas e comandos.novo
- 16.1Optimistic Offline Lock
Detecta conflito ao gravar comparando a versão.novo - 16.2Pessimistic Offline Lock
Bloqueia o dado antes de editar; só um por vez.novo - 16.3Coarse-Grained Lock
Um único bloqueio para um grupo de objetos relacionados.novo - 16.4Implicit Lock
O framework bloqueia por você; ninguém esquece.novo
- 18.1Gateway
Objeto que encapsula o acesso a um sistema ou recurso externo.novo - 18.2Mapper
Objeto que faz a comunicação entre dois subsistemas independentes.novo - 18.3Layer Supertype
Superclasse comum para todos os tipos de uma camada.novo - 18.4Separated Interface
Interface em um pacote, implementação em outro: inverte a dependência.novo - 18.5Registry
Objeto bem conhecido para achar serviços e objetos comuns.novo - 18.6Value Object
Objeto pequeno, comparado pelo valor, imutável.novo - 18.7Money
Valor monetário = quantia + moeda, com aritmética segura.novo - 18.8Special Case
Subclasse com comportamento padrão para casos especiais (ex.: Null Object).novo - 18.9Plugin
Liga a implementação por configuração, não por compilação.novo - 18.10Service Stub
Implementação falsa de um serviço externo para testes e desenvolvimento.novo - 18.11Record Set
Representação em memória de dados tabulares.novo