Questão de Arquitetura de Software — SOA (Service-oriented architecture) — FGV 2024
Arquitetura de Software›SOA (Service-oriented architecture)
Código
fg100835
Banca
FGV
Órgão
TRF - 1ª REGIÃO
Ano
2024
Nível
Superior
Cargo
Analista Judiciário - Área Apoio Especializado - Especialidade: Análise de Sistemas de Informação
O sistema TRF1Web possui um módulo orientado a eventos, chamado TRF1Sync. No TRF1Sync, há um objeto central que implementa um loop síncrono, responsável por receber eventos de indicação. Ao receber um evento, o objeto central dispara a operação associada mediante um objeto manipulador de evento. Esse comportamento do TRF1Sync é resultado direto da aplicação do seguinte padrão da Pattern-Oriented Software Architecture:
Areactor;
Bproactor;
Cproactor;
Dobjeto ativo;
Eobjeto monitor.
Revelar gabarito e comentário▾
GabaritoA — reactor;
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Padrão Reactor em arquitetura orientada a eventos
Gabarito: letra A. O comportamento descrito — objeto central com loop síncrono que recebe eventos e os despacha para manipuladores — corresponde exatamente ao padrão Reactor, um dos padrões de arquitetura de software da Pattern-Oriented Software Architecture (POSA) para lidar com múltiplas requisições de forma síncrona e eficiente.
A questão testa a capacidade de diferenciar padrões de concorrência em sistemas orientados a eventos. O principal distrator é o Proactor, que realiza o mesmo papel mas de forma assíncrona, enquanto os demais padrões (Objeto Ativo, Objeto Monitor) têm propósitos distintos.
Alternativa A — ✅ Correta ⟵ GABARITO
O Reactor é um padrão síncrono no qual um demultiplexador de eventos (objeto central) fica em loop aguardando eventos, e ao recebê-los, invoca o manipulador associado. É exatamente o que o TRF1Sync faz: "objeto central que implementa um loop síncrono, responsável por receber eventos de indicação" e "dispara a operação associada mediante um objeto manipulador de evento".
Alternativas B e C (Proactor) — ❌ Incorretas
Ambas apontam Proactor, que é o padrão assíncrono equivalente. No Proactor, o loop de eventos é assíncrono — a operação é iniciada e o manipulador é chamado quando a operação completa, sem bloquear o despachante. O enunciado explicita "loop síncrono", o que invalida o Proactor.
NÃO CAIA NESSA!
A banca explora a semelhança entre Reactor (síncrono) e Proactor (assíncrono). O termo "síncrono" no enunciado é a chave para descartar o Proactor. Decore: Reactor = síncrono (bloqueante); Proactor = assíncrono (não bloqueante).
Alternativa D (Objeto Ativo) — ❌ Incorreta
O Active Object (Objeto Ativo) desacopla a execução do método da invocação, utilizando uma fila de requisições e um scheduler próprio. Não há um loop central aguardando eventos externos; o objeto ativo gerencia suas próprias threads internas. Não corresponde ao descrito.
Alternativa E (Objeto Monitor) — ❌ Incorreta
O Monitor Object (Objeto Monitor) é um padrão de sincronização de threads, usado para garantir exclusão mútua e coordenação de acesso a recursos compartilhados. Não tem relação com despacho de eventos externos.