Depois de tantas aplicações do tipo console, treinando OOP, chegou a hora de praticar e fazer uma aplicaçãozinha em ASP.NET.
Ainda não sei o que ela pode virar, mas dei o nome de Agnade. Foi um jeito rápido de juntar o nome das minhas gatas para gerar um nome para um programa que nem sei ainda o que poderá ser, mas que será um estudo muito importante para mim.
A escolha e a estrutura inicial
Optei pelo ASP.NET Core Web API e tive que fazer a criação da controller CepController e das classes Service.cs e Model.cs.
A analogia da cafeteria
Eu gostaria muito de utilizar alguma outra analogia, mas vou ter que assumir o mainstream e dizer que a do restaurante me ajudou muito a entender esses conceitos básicos. Como eu gosto de café, vou usar a analogia da cafeteria:
Program.cs — o gerente geral da cafeteria
Model.cs — os pedidos do menu e os tipos de café que são fornecidos
Service.cs — a cozinha da cafeteria, que vai preparar o café quentinho e o pão de queijo crocante
Apesar de ter muita coisa pra falar, quero entrar em mais detalhes aqui sobre Injeção de Dependência, que foi algo um tanto novo e desafiador para o meu entendimento.
Injeção de Dependência
Program.cs é o gerente desta cafeteria, pois nele temos todas as permissões de quais recursos acessar. Assim, com os containers de DI estabelecidos, é como se tivéssemos diversas "receitas" (receita de café mooca gelado ou de cappuccino quentinho) de como executar uma funcionalidade, entregando também os objetos determinados.
Por exemplo:
csharpbuilder.Services.AddHttpClient();
Com essa injeção de dependência no Program.cs, as classes podem realizar chamadas HTTP de forma eficaz e gerenciada, pois ali o gerente possui toda a receita e os objetos para que isso possa ocorrer.
O ASP.NET gerencia o ciclo de vida dos objetos, e temos três tipos existentes:
Transient
Utilizado para serviços leves e sem estado. É criada uma nova instância toda vez que o serviço é solicitado, mesmo que ocorra dentro da mesma requisição.
Na analogia da cafeteria, é a própria colherzinha descartável fornecida ao consumidor, onde ele a utiliza e ela é descartada.
Scoped
Cria uma instância por requisição HTTP. Toda classe que solicitar CepService dentro da mesma requisição, por exemplo, vai compartilhar a mesma instância, o que evita que requisições simultâneas acabem compartilhando estado entre si.
Na analogia da cafeteria, o scoped é como a comanda que cada mesa tem: cada requisição HTTP pode ser uma mesa diferente, com sua própria comanda.
Singleton
É criada uma única instância para toda a aplicação, utilizada por diversas requisições ao longo do tempo de vida do processo. Muito usado para serviços sem estado mutável por requisição, como configuração, cache em memória ou clientes HTTP reutilizáveis.
O singleton é, propriamente, a máquina de café daquela cafeteria, ou seja, uma só compartilhada por todo mundo.
Nesse ecossistema complexo que é a programação e o mundo da tecnologia, quando me deparo com alguns conceitos, principalmente com muitos detalhes, eu busco entender com base em coisas que eu gosto: gatos, café e cafeteria. Sei que ficou meio bagunçado, já que a aplicação é de busca de CEP, mas seguimos aprendendo e tentando aumentar o ritmo de estudos sem desanimar.
Esta foi só uma pequena parte de muita coisa que aprendi, e como estou desenvolvendo essa capacidade de compartilhar, em breve falarei um pouco mais sobre como será a Agnade, até que eu consolide bem o que ela será.
Top comments (0)