
Teilen Sie:
Guillaume ist ein Senior .Net Developer Advocate bei Vonage. Er arbeitet seit fast 15 Jahren in .Net und hat sich in den letzten Jahren auf die Förderung von Software Craftsmanship konzentriert. Zu seinen Lieblingsthemen gehören Codequalität, Testautomatisierung, Mobbing und Code Katas. Außerhalb der Arbeit verbringt er gerne Zeit mit seiner Frau und seiner Tochter, treibt Sport oder spielt Spiele.
Vereinfachung der Dependency Injection in .NET
Lesedauer: 2 Minuten
Hallo, liebe Entwicklerfreunde!
Wir haben einige aufregende Neuigkeiten über unser .NET SDK zu verkünden! Wir haben gerade eine fantastische neue Funktion eingeführt, die Ihr Leben viel einfacher machen wird. Sie wissen doch, dass die Initialisierung des Clients immer ein wenig mühsam war, oder? Nun, keine Angst mehr!
Seit der Version v6.4.0haben wir eine Lösung integriert, die diesen Prozess vereinfacht. Jetzt können Sie eine coole Erweiterungsmethode verwenden, um unseren Client im ASP.NET-Standard-Container für Dependency Injection zu registrieren. Sind Sie neugierig geworden? Lesen Sie weiter und erfahren Sie mehr!
Standard-Client-Initialisierung
Stellen Sie sich vor, wir würden gerne die Meetings API Funktionen nutzen. Wir müssten eine Instanz des Hauptclients initialisieren (VonageClient) initialisieren, um die spezifischen MeetingsClient.
Credentials credentials = ...
VonageClient vonageClient = new VonageClient(credentials);
IMeetingsClient meetingsClient = vonageClient.MeetingsClient;Es ist in der Tat recht einfach, da der Client nur erwartet, dass ein Credentials Objekt erstellt werden soll. Soweit nichts Neues; das kennen Sie ja schon.
Auch wenn es relativ einfach ist, hat es ein paar Nachteile:
Sie müssen eine
VonageClienterstellen, während Sie nur eineIMeetingsClientSie schaffen eine unnötige Kopplung an die
VonageClientImplementierung, wodurch Ihr Code schwieriger zu testen ist
Und das ist noch nicht alles: Wenn Sie einen unserer Clients injizieren wollen, müssen Sie alle in Ihrem Container registrieren. Manuell.
Es gibt definitiv noch Raum für Verbesserungen.
Betritt unsere DI-Registrierung!
Okay, kommen wir zu den guten Dingen! Mit unserer neuen Erweiterungsmethode müssen Sie das nicht mehr tun.
Prüfen Sie, wie einfach es zu bedienen ist:
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);
// ...
}Das war's!
Es stützt sich auf ASP.NET DI Container von Microsoft.Extensions.DependencyInjectionauf, was bedeutet, dass es kompatibel ist, solange Sie mit einer IServiceCollection Instanz. Dies wird standardmäßig auf ASP.NET WebApi und WebApp bereitgestellt, aber Sie können es auch in ConsoleApps und Services integrieren.
Sie haben die Wahl zwischen zwei ServiceLifetime Optionen:
Transient: Objekte sind immer unterschiedlichScoped: Die Objekte sind für eine bestimmte Anfrage gleich, unterscheiden sich aber bei jeder neuen Anfrage
Durch den Aufruf von services.AddVonageClient{lifetime}teilen Sie dem DI-Container mit, dass er die VonageClient für Sie einrichtet.
Sie können nun mit dem Hauptmandanten oder einem beliebigen Untermandanten Abhängigkeiten auflösen:
[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;
}
Einpacken
Wir sind stolz darauf, Ihnen als Entwickler mit neuen Qualitätsverbesserungen den Weg zu ebnen. Es war noch nie so einfach, unser SDK in Ihre .NET Applications zu integrieren.
Und wissen Sie was? Ihr Feedback und Ihre Beiträge zählen für uns!
Sie können also gerne unser GitHub-Repository besuchen, um Probleme zu melden, Verbesserungen vorzuschlagen oder sogar eigene Pull-Requests einzureichen. Wenn Sie Fragen haben, schließen Sie sich uns auf dem Vonage Entwickler-Slackund wir werden uns bei Ihnen melden.
Viel Spaß beim Coding, Freunde!
Teilen Sie:
Guillaume ist ein Senior .Net Developer Advocate bei Vonage. Er arbeitet seit fast 15 Jahren in .Net und hat sich in den letzten Jahren auf die Förderung von Software Craftsmanship konzentriert. Zu seinen Lieblingsthemen gehören Codequalität, Testautomatisierung, Mobbing und Code Katas. Außerhalb der Arbeit verbringt er gerne Zeit mit seiner Frau und seiner Tochter, treibt Sport oder spielt Spiele.