Dependency injection

Geschreven door: op dinsdag 26 juni 2018

Leestijd:

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

  • HTML tips voor mail templates

    Geschreven door: op zaterdag 10 november 2018

    Bij het bouwen van een e-mail template binnen HTML komen er veel dingen kijken, ik leg in deze post een aantal basiselementen uit hoe je om moet gaan met de HTML van een mail template, en hoe wij daar ...

    Bekijk het artikel »
  • Documenteer je code

    Geschreven door: op zaterdag 27 oktober 2018

    Documenteren van je code is uiteraard een best practice. De code op zich mag zo beschrijvend mogelijk zijn, zodat de documentatie impliciet is, maar bijvoorbeeld een uitleg over het waarom van een bep ...

    Bekijk het artikel »
  • 5 tips voor een succesvolle website

    Geschreven door: op vrijdag 5 oktober 2018

    Binnen een gestroomlijnd B2B sales proces spelen websites en online strategieën een essentiële rol. Met de juiste aanpak bereikt u als ondernemer de doelgroep. Maar hoe creëert u het juiste effe ...

    Bekijk het artikel »
Bel 072 5345 888
Meer dan 40 bedrijven vertrouwen op ons
Allrig is de alles in een leverancier binnen de energie-industrie
Aliancys is een toonaangevend wereldwijd bedrijf actief in de verkoop van kwaliteitsharsen
ERIKS is een toonaangevende en innovatieve leverancier aan de procesindustrie en aan machinebouwers, die zowel de rol van specialist als die van brede MRO-leverancier vervult
Industrieel dienstverlener Heinen & Hopman Engineering uit Bunschoten is dé wereldwijde specialist op het gebied van klimaatbeheersing
Handicare is een internationale organisatie die ouderen helpt om hun dagelijks leven gemakkelijker te maken door het produceren van hoogwaardige trapliften
Onze Middelen en Technologieën
microsoft silver partner
Adobe partner
fd-gazellen-2018.jpg
Google analytics
partners-logo.jpg