Layer != Tier
Tier
Divisão Física
(Client/Server)
Layer
Divisão Lógica
(que também poderia ser física)
Camadas
Apresentação Domínio Database
Interação Regras de Comunicação
do Software Negócio, com outros
com o Usuário Cálculos e sistemas e
ou Serviço Validações Persistência
Cliente
As camadas de domínio
e dados não devem ser
dependentes da
apresentação.
Fowler
O que aconteceria se você
tivesse que substituir seu
banco de dados por um
arquivo XML?
E se tivesse que criar
um cliente para
iPhone ao invés de
HTML?
Um procedimento que recebe
dados da camada de apresentação,
processa com validações e
cálculos, armazena no banco de
dados, e invoca operações de
outros sistemas, então replica
mais dados para a apresentação
Um procedimento único
para cada ação
do Usuário
Pode ser separado
em sub-rotinas e
que podem ser
compartilhadas por
diferentes scripts.
Divisão
Uma abordagem comum que divide a
camada de domínio em duas.
API
A camada de
apresentação interage
com o domínio apenas
através do Service
Layer que atua como
uma API da
aplicação
Service
Excelente para inserir
Segurança e Controle de
Transações.
Recomendável que
aja como um Façade
sem comportamento
próprio.
Regras de Negócio
Domain Model Controller-Entity
Apenas Style Transaction
Segurança e Comportament Script
Transações no o comum em
Service Layer, objetos, Anemic
Comportament específico em Domain
o todo no transaction Model
Domain Model scripts.
Domain Service
“Minha preferência é por
ter a Service Layer mais
magra que for possível”
Martin Fowler