OO: Service layer (camada de serviços)

17/05/2017

0

boa tarde amigos do fórum

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

Gladstone Matos

Responder

Post mais votado

29/05/2017

E aí, Gladstone. Beleza?

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

Joel Rodrigues
Responder

Mais Posts

29/05/2017

Gladstone Matos

bom dia Joel! Perfeito o seu ponto de vista, iluminou minha visão em varios aspectos! Muito obrigado por compartilhar tanto conhecimento com a comunidade! :D
abracos!
Responder

30/05/2017

Pedro Mello

Olá, Gladstone.

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.

:)
Responder

30/05/2017

Gladstone Matos

wow muito obrigado por compartilhar esse conhecimento Pedro! :D
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar