Dependency injection header image

Dependency injection

dinsdag 26 juni 2018 ·Leestijd: 2 minuten
contacteer auteur:

Vanuit een programmeer standpunt gezien is indeling van code een van de belangrijkste aspecten van het programmeren. Een rommelige werkomgeving maakt het lastig om te vinden wat je nodig hebt. Het opruimen hiervan mag dan wel wat extra tijd kosten maar uiteindelijk maakt het je werk makkelijker en sneller. Zo ook in code, als alles netjes is ingedeeld verkleint dit de kans op fouten en zijn de fouten die nog wel bestaan veel sneller en gemakkelijker op te lossen.

Tegenwoordig wordt programmeercode vaak ingedeeld in classes. Hiermee wordt alle code die over eenzelfde onderdeel op bijvoorbeeld een site gaat bij elkaar gezet. Zo zijn er bijvoorbeeld een aantal functies van een knop die bij elkaar staan. De actie van de knop moet echter worden doorgestuurd naar een ander onderdeel of een andere pagina. Hiervoor moeten dus verbindingen gemaakt worden tussen de verschillenden onderdelen.

Een connectie leggen tussen twee onderdelen is vrij simpel. Overigens komen er in grotere projecten steeds meer en meer connecties bij. Hiermee kan de code alsnog onoverzichtelijk en slecht beheerbaar worden. Een onderdeel kan afhankelijk zijn van een 2e onderdeel welke op zijn beurt weer een 3e classe nodig heeft etc.

Hiervoor is de dependency injection structuur bedacht. Hierbij worden alle beschikbare classes geregistreerd in de code als services. Wanneer een van deze services benodigd is hoeft deze alleen maar opgevraagd te worden. Het programma regelt achter de schermen dat de benodigde functionaliteit op de juiste plaats komt.

Praktijk

Wanneer het programma start wordt een lijst met alle beschikbare code componenten ingeladen. Dit gebeurt in de configure service functie. Welke standaard in de Startup class beschikbaar is.


public void ConfigureServices(IServiceCollection services)
{
    services.AddSingleton<Service, Service>();
    services.AddTransient<Service, Service>();
    services.AddScoped<Service, Service>();
}

Deze services bevatten de code die vanaf een andere plaatsen toegankelijk moeten zijn. Het opvragen van deze services gebeurt vervolgens via de constructor. Wanneer een nieuw stuk code wordt geschreven wordt aangegeven welke services er benodigd zijn. Het programma herkent dit en geeft bij het aanroepen van de code de correcte services mee waar gebruik van kan worden gemaakt.


public OperationService(Service service)
{
    ...
}

Dit maakt het beheren van code gemakkelijker en ook overzichtelijker.


Andere blogartikelen

B2B E-commerce… Wakker worden!
Geschreven door
op dinsdag 28 juni 2022
Veel B2B-bedrijven in blijven hangen in; nauwelijks vindbare, verouderde B2B e-commerce websites met minimale conversiemogelijkheden en een betreurenswaardige gebruikerservaring. Zonde!
B2B Leadgeneratie: Alles wat je altijd al wilde weten!
Geschreven door
op maandag 27 juni 2022
B2B online leadgeneratie is het proces van het identificeren van de ideale klanten voor uw product of dienst, en hen vervolgens overhalen tot aankoop. Het is een essentiële activiteit voor B2B sales- en marketingteams.
Wat maakt een B2B webshop succesvol?
Geschreven door
op zondag 26 juni 2022
De opmars van de B2B webshop neemt toe. Regelmatig krijgen wij de vraag of er een groot verschil is tussen een consumentgerichte webshop en een puur B2B gedreven webshop. In deze blog leggen wij u uit hoe een B2B webshop succesvol kan zijn en worden.
Open Nieuwsbrief Inschrijving Footer

E-book

Zo wordt uw website een lead generator 
In 3 stappen uw website van visitekaartje naar salesfunnel

Download het E-book â€º