Questão de Programação — .Net — FUNDATEC 2025
Programação.Net
- Código
- qg475000
- Banca
- FUNDATEC
- Órgão
- PROCERGS
- Ano
- 2025
- Nível
- Superior
- Cargo
- Analista em Computação/Ênfase em Programação de Sistemas na Tecnologia Microsoft
À luz das boas práticas de DI e lifetimes no ASP.NET Core, qual conjunto de correções alinha o projeto com dependências explícitas, testáveis e seguras para concorrência?
- AManter ProcessingService e EmailSender como Singleton, trocando IOptionsSnapshot por IOptionsSnapshot (inalterado) e guardando um IServiceProvider interno para criar AppDbContext sob demanda; seguir com HttpClient direto e property injection em EmailSender.
- BTornar tudo Transient para evitar estado compartilhado; injetar HttpClient estático por desempenho; manter Service Locator no controlador porque "flexibiliza" a resolução.
- CUsar injeção por construtor em todas as classes; registrar ProcessingService como Scoped; substituir HttpClient por IHttpClientFactory; usar IOptionsMonitor em singletons IOptionsSnapshot apenas no escopo da requisição; no SyncWorker, criar um escopo por iteração com IServiceScopeFactory e resolver serviços Scoped dentro dele; em cenários de background que e precisam de EF, preferir IDbContextFactory; remover property injection obrigatória e o Service Locator do controlador.
- DPromover AppDbContext a Singleton para casar com ProcessingService singleton; substituir IOptionsSnapshot por valores lidos de IConfiguration diretamente; manter HttpClient direto injetar o ProcessingService no SyncWorker sem criação de escopos.
- ETrocar ProcessingService para Scoped, mas manter IOptionsSnapshot dentro de EmailSender Singleton; continuar com Service Locator apenas nos controladores e usar HttpClient direto, pois o AddHttpClient já foi chamado.