OO: Service layer (camada de serviços)
17/05/2017
0
Alguém aqui usa - para valer - o padrão de service layer?
https://martinfowler.com/eaaCatalog/serviceLayer.html
Caso sim, qual a experiência de vocês?
grande abraço
Gladstone Matos
Post mais votado
29/05/2017
Na minha opinião a camada de serviço é um padrão bem interessante para aplicações que possuem regras de negócio / fluxos de funcionamento complexos e, além disso, para aplicações que possuem diferentes interfaces para um mesmo conjunto de dados (aplicações web, web services, desktop, etc). Ao usar esse padrão passamos a ter um ponto bem claro na arquitetura em que vamos codificar regras de negócio complexas, como aquelas que envolvem várias entidades e ações distintas.
Por exemplo, imagine um sistema de gerenciamento escolar que conta com a funcionalidade de "trancamento de curso". Ao trancar o curso algumas regras devem ser aplicadas:
- O status do aluno deve ser alterado para INATIVO;
- Todas as disciplinas em que o aluno está matriculado devem ser também trancadas;
- O coordenador deve ser notificado do trancamento via e-mail.
Perceba que são regras que envolvem várias entidades (diferente de um simples CRUD) e ações específicas (enviar e-mail). Se tivéssemos uma aplicação MVC, a parte de acesso a dados já estaria no model, mas as regras de negócio talvez acabassem sendo implementadas no controller. Posteriormente, quando precisássemos criar um web servisse para permitir que essa funcionalidade seja acessada via app mobile, a lógica seria repetida e aí já teríamos um problema de duplicação de código. Como essa funcionalidade é comum para as diversas "interfaces" do sistema, podemos codifica-la na camada de serviço, que passaria a ser consumida pelas camadas superiores (camada de apresentação - web, serviços).
Que tal?
Abraço.
Joel Rodrigues
Mais Posts
29/05/2017
Gladstone Matos
abracos!
30/05/2017
Pedro Mello
Toda vez que se fala em arquitetura ou design tem-se uma coisa em mente comum a todas elas: A separação de códigos segundo seus propósitos.
Em uma arquitetura em camadas (layered) não é diferente. A arquitetura layered é uma outra forma de organizar a estrutura do seu projeto.
Em geral, há quatro principais categorias nessa arquitetura, que são: apresentação, aplicação, domínio e infraestrutura. Se olhar, essas quatro categorias estão presentes no desenho do Fowler.
O que o Joel respondeu acima está correto. Uma arquitetura layered permite um design baseado em fluxos, uma vez que a proposta desse design está no fato das dependências seguirem para uma única direção.
Esse design também nos possibilita trilhar um novo paradigma, a programação orientada a processos. Mas isso é um outro assunto.
:)
30/05/2017
Gladstone Matos
Clique aqui para fazer login e interagir na Comunidade :)