Hexagonal Architecture Flashcards

1
Q

O que é Hexagonal Architecture?

A

Hexagonal Architecture é um modelo de arquitetura de software que promove a separação entre a lógica de negócio e as dependências externas através de portas e adaptadores.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Quais são os principais componentes da Hexagonal Architecture?

A

Os principais componentes são:
- Domínio (Entities)
- Portas (Ports)
- Adaptadores (Adapters)
- Infraestrutura

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

O que são as entidades na Hexagonal Architecture?

A

As entidades representam o domínio central da aplicação e contêm as regras de negócio.

public class Cliente
{
    public int Id { get; set; }
    public string Nome { get; set; }
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

O que são as portas na Hexagonal Architecture?

A

As portas são interfaces que definem as operações disponíveis para os casos de uso e servem como contrato entre o domínio e os adaptadores.

public interface IClienteService
{
    void AdicionarCliente(Cliente cliente);
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

O que são os adaptadores na Hexagonal Architecture?

A

Os adaptadores são implementações concretas das portas que interagem com serviços externos como bancos de dados, APIs e interfaces de usuário.

public class ClienteService : IClienteService
{
    private readonly IClienteRepositorio _repositorio;
    
    public ClienteService(IClienteRepositorio repositorio)
    {
        _repositorio = repositorio;
    }
    
    public void AdicionarCliente(Cliente cliente)
    {
        _repositorio.Adicionar(cliente);
    }
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Como a Hexagonal Architecture lida com a infraestrutura?

A

A infraestrutura implementa os adaptadores necessários para conectar o domínio a tecnologias externas, garantindo a flexibilidade do sistema.

public class ClienteRepositorio : IClienteRepositorio
{
    private readonly DbContext _context;
    
    public ClienteRepositorio(DbContext context)
    {
        _context = context;
    }
    
    public void Adicionar(Cliente cliente)
    {
        _context.Clientes.Add(cliente);
        _context.SaveChanges();
    }
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly