Skip to main content

Shared

Shared reúne capacidades técnicas usadas por mais de uma aplicação ou domínio. Ele ajuda o Portal 2 a tratar preocupações comuns de forma consistente, sem decidir regras específicas de negócio.

Por exemplo, um domínio pode usar logs e persistência compartilhados. Esses recursos oferecem uma capacidade técnica. Eles não decidem se uma operação de negócio é válida.

Quando uma capacidade pertence ao Shared

Uma capacidade é candidata a Shared quando atende a mais de um domínio, não contém decisão de uma área de negócio e pode ser usada sem conhecer o fluxo funcional que a consome.

CapacidadePor que pode ser compartilhada
Configuração e segredosMantém a inicialização consistente entre aplicações.
Logs, traces e métricasDá observabilidade sem mudar a regra de negócio.
Autenticação e controle de acessoFornece mecanismos técnicos usados por vários fluxos.
Comunicação HTTP e mensageriaPadroniza como módulos conversam com dependências externas.
Persistência e armazenamentoOferece acesso técnico a dados e arquivos.
Erros, paginação e objetos reutilizáveisEvita repetir contratos técnicos estáveis.

O que não pertence ao Shared

Não mova uma implementação para Shared apenas porque dois arquivos parecem semelhantes. Uma regra de negócio continua no domínio responsável, mesmo que apareça em mais de um fluxo.

Evite também criar utilitários genéricos sem consumidor real. Uma abstração compartilhada precisa reduzir acoplamento e tornar dependências explícitas. Se ela exige conhecer um contexto de negócio para funcionar, ela provavelmente não é compartilhada.

Módulos e bibliotecas

FormaQuando usar
Módulo compartilhadoO recurso precisa de configuração, ciclo de vida ou integração com a aplicação.
Biblioteca compartilhadaO código pode ser usado sem inicializar infraestrutura.

Próximos passos

Leia Domínios antes de extrair uma regra. Leia Pacotes para revisar a direção das dependências. Volte ao Guia do Portal 2.0 para ver como essas capacidades participam de uma operação completa.