Modern C# Development
Modern C# 14 en .NET 10
Over deze training
In deze intensieve 5-daagse hands-on training leer je hoe je programmeert in C# 14 en .NET 10. Naast de basis concepten van C# en Object Oriënted Programming, worden ook de allernieuwste advanced features behandeld en is er aandacht voor Clean Code, Software Architecture, Test Driven Development, Containerization en Azure Deployment.
Na afloop van de training ben je in staat om efficiënte, onderhoudbare en moderne applicaties te bouwen met C# 14 en .NET 10.
Duur: 5 dagen Vorm: Instructor-led, hands-on labs Taal: Nederlands of Engels Niveau: Intermediate
Doelgroep
De training is met name geschikt voor software developers die ervaring hebben met programmeren en zich verder willen ontwikkelen in C# en .NET.
Modules
Module 01 .NET essentials
- Introduction to the .NET ecosystem
- .NET vs .NET Framework
- .NET architecture: CLR, CLI, IL
- .NET CLI: dotnet commands
- Project and solution structure
- NuGet package management
Module 02 IDE: Visual Studio, Visual Studio Code, JetBrains Rider
- Overview of popular IDEs for .NET development
- Introduction to Visual Studio
- Introduction to Visual Studio Code and C# Dev kit
- Introduction to JetBrains Rider and ReSharper integration
- IntelliSense, Code navigation, Refactoring, and Code snippets
- Debugging tools: Breakpoints, Debug windows
- Integrated Git source control
Module 03 AI-Assisted coding with GitHub Copilot
- Introduction to GitHub Copilot
- Set up / Configure GitHub Copilot
- Inline code suggestions and completions
- Writing effective prompts for AI-assisted coding
- Ask / Explore / Agent modes
- Limitations and best practices for using GitHub Copilot
Module 04 C# language essentials
- Program structure, Main, Top-level statements
- Namespaces and using directives
- Data types and variables
- Value Types vs Reference types
- Control flow: if, switch, loops
- Nullability, Null-coalescing
- Working with strings
Module 05 Classes
- Defining classes and creating objects
- Constructors and object initialization
- Access modifiers and encapsulation
- Object lifetime: the garbage collector
Module 06 Class members
- Fields and constants
- Properties
- Methods and method overloading
- Expressions-bodied members
- Static members
Module 07 Inheritance & Interfaces
- Inheritance fundamentals: base and derived classes
- Constructor chaining
- Polymorphism: virtual, override
- Abstract classes and methods
- Sealed classes and methods
- Interfaces
- Inversion of Control
- Type casting in a Class Hierarchy
Module 08 Arrays & Collections
- Arrays in C#
- Lists, Dictionaries, HashSets
- Queues and Stacks
- Collections vs Arrays
- Spans and Memory
Module 09 Generics
- Introduction to Generics
- Generic classes and methods
- Generic constraints
- Generic interfaces
- Covariance and contravariance
- Practical patterns: generic repositories, factories
Module 10 Delegates, Lambda expressions & LINQ
- Delegates
- Anonymous methods and lambda expressions
- Func<>, Action<> and Predicate<> delegates
- LINQ fundamentals
- LINQ query syntax and method syntax
- LINQ operators: filtering, projection, aggregation
Module 11 Tuples & Records
- Tuples
- Deconstructing tuples
- Records
- Value-based equality and immutability
- Classes vs Records vs Structs
Module 12 Pattern matching
- Switch expressions
- Type patterns
- Property patterns
- Positional patterns
- List patterns and slice patterns
Module 13 Asynchronous programming
- The Task Parallel Library
- Asynchronous programming
- Running work concurrently
- Async / Await
- Cancellation and timeouts
- Parallel programming
Module 14 Secure Coding practices
- Common vulnerabilities in a .NET context
- Input validation and sanitization
- Preventing injection attacks
- Secrets management
- Dependency security
Module 15 ASP.NET Core WebApi essentials
- Introduction to ASP.NET Core
- Building RESTful APIs with ASP.NET Core
- Endpoints: controllers vs. Minimal APIs
- Middleware
- Dependency injection and service lifetimes
- Configuration and options pattern
- API documentation with OpenAPI/Swagger
Module 16 Entity Framework Core essentials
- Relational databases and ORMs
- Introduction to Entity Framework Core
- Code-first vs Database-first approaches
- Modeling with DbContext and entity classes
- Querying data with LINQ-to-Entities
- Change tracking and saving data
- Migrations and database updates
Module 17 Blazor essentials
- Introduction to Blazor
- Render modes: Blazor Server vs Blazor WebAssembly
- Components and component lifecycle
- Razor syntax and directives
- Data binding and event handling
- Dependency injection in Blazor
Module 18 Aspire essentials
- Microservices architecture overview
- Introduction to Aspire
- App host and orchestration
- Integrations: databases, caches, and messaging
- Service discovery and communication
- Aspire dashboard, logging, metrics, and tracing (OpenTelemetry)
Module 19 Test Driven Development with xUnit
- TDD fundamentals
- The Red-Green-Refactor cycle
- The Arrange-Act-Assert pattern
- Writing unit tests with xUnit
- Facts and Theories
- Mocking/Stubbing dependencies
Module 20 Clean Code principles
- Meaningful naming
- Comments and documentation
- Code smells & Anti-patterns
- Refactoring techniques
- S.O.L.I.D principles
Module 21 Architecture essentials
- Introduction to software architecture
- Clean Architecture
- N-layered architecture
- Vertical slice architecture
- Domain Driven Design (DDD)
- CQRS
Module 22 Containerization with Docker
- Virtualization vs Containerization
- Introduction to Docker
- Docker images and containers
- The Docker CLI
- Dockerfiles and building images
- Docker Compose
- Pushing images to an image registry
Module 23 Azure App Services, Azure Functions
- Introduction to Azure
- Azure App Services overview
- Deploying .NET applications to Azure App Services
- Azure Functions overview
- Building serverless applications with Azure Functions
- Monitoring and diagnostics with Azure Application Insights
Voorkennis
Basiskennis van programmeren is een vereiste, kennis van C# en .NET is een pré maar niet noodzakelijk.
Interesse?
Neem contact op voor meer informatie, beschikbaarheid of een offerte op maat.