Cursusaanbod
Inleiding tot het moderne .NET-platform
- .NET 8-runtime, SDK en een overzicht van de geïntegreerde platformmogelijkheden
- Vergelijking tussen .NET Framework, .NET Core en de evolutie naar .NET 8+
- Basisprincipes rond projectopbouw, doelgerichte frameworks en multi-targeting
- Het opzetten van een ontwikkelomgeving inclusief relevante tools
Moderne C#-technieken en toekomstbestendige taalpraktijken
- Gebruik van records, init-only setters en immuteerbare structuren
- Uitgebreide pattern matching-technieken en switch-expressies
- Nullable reference types ter voorkoming van fouten via slimme compilercontrole
- Beste manieren om asynchrone operaties te beheren en geheugengebruik te optimaliseren
- Generieke wiskunde, statische abstracts in interfaces en prestatief gerichte API’s
- Voorbereiden op C# 12/13-functies die binnen .NET 8 beschikbaar komen
Grondslagen van ASP.NET Core en het opstarten van applicaties
- Host builder, middleware-pijplijn en de algehele aanvraagverwerking
- Onderscheid tussen Minimal APIs en controller-gebaseerde API’s: wanneer welke te gebruiken
- Instellingen beheren via verschillende configuratieproviders, inclusief gegevens per omgeving en secretbeheer
- Behandeling van statische bestanden, routing en endpoint-configuraties
- Dependency injection: containerinstellingen en duur van servicegebruik bepalen
Ontwerp en implementatie van REST-API’s
- Methode voor het vaststellen van REST-volwassenheid, modellering van resources en ontwerp van URI’s
- Juist gebruik van HTTP-methoden, statuscodes en content negotiation
- Validatie van aanvragen, modelbinding en integratie met FluentValidation
- Mogelijkheden voor API-versiebeheer: zowel openbare als interne versies
- Dokumentatie realiseren via OpenAPI en Swagger UI
- API-testing uitvoeren met TestServer en WebApplicationFactory
Enterprise-grade dependency injection en inversie van controle
- Constructor-injectie, serviceduurregels en het voorkomen van verborgen afhankelijkheden
- Toepassing van decorator- en factory-patronen binnen de inbouwcontainer
- Gebruik van Scrutor of andere third-party DI-bibliotheken naast de standaardoplossing
- Logische segmentering bij serviceregistratie: per functiegroep en functionaliteit
- Implementatie van algemene aandachtspunten via middleware- en filterlagen
Logging, configuratie en centraal beheerde foutafhandeling
- Struktureel loggingbeheer via Microsoft.Extensions.Logging en Serilog
- Logniveau's instellen, scope-aanpassingen en uitgebreide logregistratie configureren
- Centrale exception-handling en beleid voor foutafhandeling in de gehele applicatie
- Overeenkomst met RFC 7807: standaardformaat voor errorberichten via ProblemDetails
- Zorgen voor gezondheidschecks, telemetrie en observability van systemen
- Inrichten van correlaterende IDs ter ondersteuning van distributed tracing
Softwarearchitectuur bij enterprise .NET-oplossingen
- Verschillende architectuuropties: lagenmodel, hexagonal en clean architecture
- Bouwstenen voor domain-driven design in de context van .NET
- CQRS-principes en het gebruik van MediatR voor mediatorpatronen
- Repository- en unit-of-work-patronen samen met Entity Framework Core
- Gebruik van vertical slice architecture om cohesieve features te realiseren
- Het evalueren van alternatieven zoals monolithische vs modulaire opzet of microservices aanpak
Beveiliging voor webapplicaties en API’s
- Mogelijke authenticatiemethoden: JWT, OAuth2, OpenID Connect en cookie-gebaseerde beheerstappen
- Autorisatieregels opstellen, claims-toepassing en regelgeving per resource-element
- Veiligheid optimaliseren via HTTPS-afdwinging, HSTS-registraties en veilige headerinstellingen
- Invoervalidering, outputcodering en aanpak van veelvoorkomende dreigingen uit de OWASP Top 10-lijst
- Limieten voor verzoekfrequentie, restricties op CORS toegang en technieken ter voorkoming van cross-site request forgery
- Geheime sleutels veilig bewaren via Azure Key Vault en dynamische wisselingsmechanismen
Codekwaliteit, onderhoudbaarheid en best practices
- Het volgen van vastgestelde codingstandaarden en gebruik van EditorConfig plus dotnet format tools
- Statische analyse uitvoeren via Roslyn-analyzers en integratie met SonarQube voor kwaliteitsbewaking
- Eenhedig testen bewerkstelligen met xUnit, samen met mock-oplossingen zoals Moq of NSubstitute
- Integratietesting en contracttesting implementeren binnen continue integratie-pipelines
- Praktische refactoringtechnieken toepassen bij oudere, langdurig gebruikte softwaremodules
- Effectieve documentatie maken en best practices voor kennisoverdracht implementeren
Migratiestrategie: evaluatie van bestaande .NET Framework-applicaties
- Basisanalyse: bepalen hoe belangrijk, complex en waardevol een applicatie is voor het bedrijf
- Het gebruik van de .NET Upgrade Assistant samen met compatibiliteitsscanners voor praktische ondersteuning
- Specifieke aandachtspunten zoals verouderde API’s, platformgebonden afhankelijkheden en derden-softwareverwachtingen identificeren
- Risicobeheer voor Windows-specifieke technologieën en eventuele overgang van WCF-services naar nieuwe formaten
- Realistische migratieroadmaps opstellen met een gebaseerd prioritering plan naar risico’s
Technieken voor geleidelijke migratie en samenwerking tussen systemen
- Toepassing van de ‘Strangler Fig’-benadering: stap-voor-stap vervangen van oude subsystemen
- Eerst focussen op API-ontwikkeling: oude .NET Framework-gebieden via REST-facades koppelen aan nieuwe systemen
- Communicatie tussen verscheidene componenten realiseren met messaging-technieken zoals RabbitMQ, Azure Service Bus of Kafka
- Het delen van databases en het beheren van verschillende schemaversies op een flexibele wijze
- Hetzelfde IT-infrastructuurplatform gebruiken om zowel .NET Framework als .NET 8-applicaties naast elkaar te laten draaien
- Moderne applicatieonderdelen in containers plaatsen terwijl bestaande legacy-systemen nog op IIS gebaseerd blijven
Praktische migratielabs en eindevaluatie
- Upgrade Assistant testen bij een representatief voorbeeld van een oude applicatieproject
- Een Web Forms- of WCF-service opnieuw vormgeven naar ASP.NET Core-API’s
- Dependency injection, logging en gecentraliseerde foutafhandeling toevoegen aan het vernieuwde systeem
- Toegankelijkheid van data beveiligen door juiste authenticatie- en autorisatiemaatregelen toe te voegen
- End-to-end integratietests uitvoeren om functionele compatibiliteit tussen nieuw en oud systeem te valideren
- Afsluitende vraag-en-antwoordronde, evaluatie van het geleerde en aanbevelingen voor verdere migratieplanning
Vereisten
- Ervaring met C#-programmeren en de beginselen van objectgeoriënteerd ontwerpen
- Bekendheid met basisconcepten uit webontwikkeling (HTTP, HTML, CSS, JavaScript)
- Grondige kennis van relationele databases en SQL is vereist
- Eerdere ervaring met .NET Framework of ASP.NET is handig maar niet verplicht
Doelgroep
- .NET-ontwikkelaars en -architecten die oude .NET Framework-applicaties willen moderniseren
- Softwareengineers die zich specialiseren in enterprise .NET-ontwikkeling
- Tech-leiders verantwoordelijk voor platformmigratie en strategische samenwerking tussen systemen
- DevOps- en infrastructuurspecialisten die betrokken zijn bij het levenscyclusbeheer van .NET-applicaties
Getuigenissen (2)
Interactiviteit en code-oplossingen op het moment zelf
Eduard-Emanuel Zaharia - Kruk Italia
Cursus - Advanced Blazor
Automatisch vertaald
vloeiende gesprekken, luisteren en aanpassing door de trainer
Mathieu - Cetim
Cursus - Visual Studio 2022 IDE
Automatisch vertaald