Skip to content
Felipe Castanon de Oliveira edited this page Jan 26, 2015 · 30 revisions

Table of Contents

Suri-CDI

O que é?

No desenvolvimento de uma aplicação Java web nos deparamos com uma série de desafios como:

  • Como integrar todos os frameworks harmoniosamente?
  • Como contornar os comportamentos indesejados de alguns frameworks?
  • Como garantir a segurança?
  • Como prover e/ou reaproveitar classes facilitadoras das nossas camadas?
  • Como prover e/ou reaproveitar uma série de componentes (CPF e etc)?
  • Etc

A arquitetura Suri-CDI surge justamente na tentativa de resolver esses problemas que sempre enfrentamos nos projetos, otimizando no tempo de codificação, reaproveitando códigos e ajudando a produzir aplicações mais seguras e com menos erros.

Além disso, é premissa da arquitetura ser o menos intrusiva o possível, fornecendo a flexibilidade ao desenvolvedor de utilizar o que desejar e quando desejar, sem engessar!

Conceito

A arquitetura Suri-CDI não quer reinventar a roda propondo uma série de camadas e nem diz que é obrigatório seguir as camadas que serão sugeridas, tão pouco que você não possa introduzir camadas se desejar.

Enfim, no nosso cotidiano vimos que basicamente 3 camadas são importantes e muitas vezes suficientes, são elas:

Persistência (Repository)
Responsável pela manipulação dos dados junto ao seu local de persistência
Negócio (Service)
Responsável pela regra de negócio da aplicação e controle transacional
Visão (Controller + views)
Responsável pela interface com o usuário

Em alguns casos, pode ser necessário acoplar outras características ao software que impliquem em novas camadas arquiteturais. Esses são os casos de agendar serviços do sistema (ex: jobs) ou expor funcionalidades (ex: web services). Embora não sejam partes fundamentais da arquitetura, estão prevista e podem ser normalmente utilizadas:

Jobs (Batch)
Agendamento de serviços do sistema para serem executados de tempos em tempos. Serão controlados pelo framework Quartz e armazenados em banco de dados
Web services
Interfaces expostas por serviços do sistema via REST ou SOAP


Seguindo esse modelo de camadas, a arquitetura encontra-se modularizada em:

Core
Engloba a camada de Persistência, a camada de Negócio e a camada de Web Services, para os projetos que necessitarem. Não define a tecnologia da camada de visão que será utilizada. Ou seja, se o seu projeto não utiliza JSF, utilize apenas o módulo Core.
Tecnologias que são utilizadas no módulo:
Faces
Camada de apresentação, com a definição de que a tecnologia JSF deverá ser utilizada.
Tecnologias que são utilizadas no módulo:
Scheduler
Infraestrutura para agendar serviços e audita-los quando necessário.
Tecnologias que são utilizadas no módulo:

Quickstart

Confira o exemplo que preparamos para utilização da arquitetura Suri-CDI que encontra-se na pasta example na raiz do projeto.

Caso queira já partir para criação de seu projeto, comece pela guia de Configuração.

Clone this wiki locally