Questão de Arquitetura de Software — WebServices — FGV 2023
- Código
- fg071492
- Banca
- FGV
- Órgão
- TCE-SP
- Ano
- 2023
- Nível
- Superior
- Cargo
- Agente da Fiscalização - TI
- Aaplicação;
- Bporta primária;
- Cporta secundária;
- Dadaptador primário;
- Eadaptador secundário.
GabaritoD — adaptador primário;
Gabarito: letra D. O novo frontend desenvolvido por Marcos é um adaptador primário, pois consome a API web (porta primária) para interagir com o núcleo da aplicação, sem desativar o frontend antigo. Na arquitetura hexagonal, adaptadores primários são implementações que conduzem interações externas (como uma interface de usuário) para o interior do sistema por meio das portas primárias.
A arquitetura hexagonal (ports and adapters) visa isolar o núcleo da aplicação (domínio) das tecnologias externas. As portas são interfaces que definem as interações; os adaptadores são implementações concretas dessas interfaces. As portas primárias são aquelas que o núcleo expõe para ser acionado por agentes externos (ex.: API REST). Os adaptadores primários são os componentes que implementam essas portas para viabilizar a comunicação (ex.: um controlador web ou um frontend que chama a API).
No cenário, a API do backend já existia – era a porta primária. O novo frontend é uma nova implementação que consome essa mesma API, ou seja, um novo adaptador primário. Ele não cria uma nova porta, nem uma nova aplicação; também não é um adaptador secundário, pois não se trata de uma interação com sistemas externos no sentido de saída (como banco de dados ou serviços externos).
Conceito | Definição | Exemplo no Cenário | Relação com o Núcleo |
|---|---|---|---|
Aplicação | Núcleo do domínio, contendo as regras de negócio. | Backend já existente. | Não foi adicionado; já existia. |
Porta Primária | Interface que o núcleo expõe para ser acionado por agentes externos (entrada). | API web do backend. | Não foi criada; já existia. |
Porta Secundária | Interface para interações de saída do núcleo (ex.: banco de dados). | Não se aplica ao frontend. | Não se aplica. |
Adaptador Primário | Implementação que consome a porta primária para conduzir interações externas ao núcleo. | Novo frontend que consome a API. | Adicionado por Marcos. |
Adaptador Secundário | Implementação de uma porta secundária (ex.: driver de banco de dados). | Não se aplica ao frontend. | Não se aplica. |
A aplicação (núcleo do domínio) não foi adicionada; ela já existia no backend. O novo frontend é um adaptador que se conecta a ela.
A porta primária é a interface (API) que já existia. Marcos não criou uma nova interface; ele apenas implementou um novo consumidor para ela.
A porta secundária é uma interface para interações de saída (ex.: repositório). O frontend é uma interação de entrada, portanto não se enquadra.
O novo frontend é um adaptador primário: ele implementa o papel de conduzir as ações do usuário para o núcleo da aplicação por meio da API existente (porta primária), permitindo a coexistência com o frontend antigo.
Adaptadores secundários são implementações de portas secundárias, usadas para integrar o núcleo com sistemas externos como bancos de dados ou serviços de terceiros. O frontend é uma interface com o usuário (entrada), não uma integração de saída.
A banca tenta confundir porta primária (a interface/API) com adaptador primário (a implementação que a consome). Marcos não criou uma nova interface, mas sim uma nova forma de consumir a já existente – portanto, é um adaptador. Lembre: a porta é o contrato; o adaptador é a concretização que conduz a interação.
Gabarito: letra D.
Link permanente: /questoes/fg071492