
Compartilhar:
Guillaume é um ex-membro da equipe da Vonage. Ele atuou como Promotor Sênior de Desenvolvimento .NET na Vonage. Trabalha com .NET há quase 15 anos, tendo se dedicado, nos últimos anos, à promoção do Software Craftsmanship. Seus temas favoritos incluem qualidade de código, automação de testes, mobbing e code katas. Fora do trabalho, ele gosta de passar tempo com a esposa e a filha, malhar ou jogar videogame.
Simplificando a injeção de dependências no .NET
Tempo de leitura: 2 minutos
Olá, colegas desenvolvedores!
Temos novidades empolgantes para compartilhar sobre nosso SDK do .NET! Acabamos de lançar um novo recurso fantástico que vai facilitar muito a vida de vocês. Vocês sabem como a inicialização do cliente costumava ser um pouco chata, né? Pois é, não precisam mais se preocupar!
Desde a versão v6.4.0, integramos uma solução que simplifica todo o processo. Agora, você pode usar um método de extensão bacana para registrar nosso cliente no contêiner padrão de injeção de dependências do ASP.NET. Ficou curioso? Continue lendo para saber mais!
Inicialização padrão do cliente
Imagine que gostaríamos de usar Meetings API . Teríamos que inicializar uma instância do cliente principal (VonageClient) para buscar o MeetingsClient.
Credentials credentials = ...
VonageClient vonageClient = new VonageClient(credentials);
IMeetingsClient meetingsClient = vonageClient.MeetingsClient;É realmente bem simples, já que o cliente espera apenas que um Credentials objeto seja criado. Até agora, nada de novo; você já passou por isso.
Mesmo sendo relativamente fácil, isso tem algumas desvantagens:
Você deve criar um
VonageClientenquanto você só precisa de umIMeetingsClientVocê cria um acoplamento desnecessário à
VonageClientimplementação, o que torna seu código mais difícil de testar
E tem mais: se você quiser injetar qualquer um dos nossos clientes, precisa registrar todos eles no seu contêiner. Manualmente.
Definitivamente, há espaço para algumas melhorias.
Inscreva-se no nosso Registro DI!
Bom, vamos direto ao que interessa! Com nosso novo método de extensão, você não precisa mais fazer isso.
Veja como é fácil de usar:
using Microsoft.Extensions.DependencyInjection;
using Vonage;
using Vonage.Extensions;
// ...
public void ConfigureServices(IServiceCollection services)
{
//...
// Initialize credentials
Credentials credentials = ...
// Register our clients with a 'Transient' lifetime...
services.AddVonageClientTransient(credentials);
// Or a 'Scoped' lifetime
services.AddVonageClientScoped(credentials);
// ...
}É isso aí!
Ele depende de Contêiner de Injeção de Dependências (DI) do ASP.NET do Microsoft.Extensions.DependencyInjection, o que significa que é compatível desde que você esteja lidando com uma IServiceCollection instância. Isso é fornecido por padrão no ASP.NET WebAPI e WebApp, mas você também pode integrá-lo a ConsoleApps e Services.
Você pode escolher entre duas ServiceLifetime opções:
Transient: os objetos são sempre diferentesScoped: os objetos são os mesmos para uma determinada solicitação, mas diferem entre cada nova solicitação
Ao chamar services.AddVonageClient{lifetime}, você está instruindo o contêiner de DI a configurar o VonageClient para você.
Agora você pode aproveitar a resolução de dependências com o cliente principal ou com qualquer subcliente:
[ApiController]
[Route("[controller]")]
public class VonageController : ControllerBase
{
...
public VonageController(VonageClient client) => this.client = client;
}
[ApiController]
[Route("[controller]")]
public class VonageController : ControllerBase
{
...
public VonageController(IMeetingsClient client) => this.client = client;
}
Conclusão
Temos orgulho de tornar sua jornada como desenvolvedor mais tranquila com novas melhorias que facilitam o dia a dia. Nunca foi tão fácil integrar nosso SDK às suas aplicações .NET.
E adivinhem só? Seus comentários e contribuições são importantes para nós!
Então, fique à vontade para acessar nosso repositório no GitHub para relatar problemas, sugerir melhorias ou até mesmo enviar suas pull requests. Se tiver alguma dúvida, junte-se a nós no Slack dos desenvolvedores da Vonage, e entraremos em contato com você.
Boa programação, amigos!
Compartilhar:
Guillaume é um ex-membro da equipe da Vonage. Ele atuou como Promotor Sênior de Desenvolvimento .NET na Vonage. Trabalha com .NET há quase 15 anos, tendo se dedicado, nos últimos anos, à promoção do Software Craftsmanship. Seus temas favoritos incluem qualidade de código, automação de testes, mobbing e code katas. Fora do trabalho, ele gosta de passar tempo com a esposa e a filha, malhar ou jogar videogame.