Course Outline
Introduction to the Modern .NET Platform
- Overview of the .NET 8 runtime, SDK, and unified platform
- Comparative analysis of .NET Framework, .NET Core, and the evolution to .NET 8+
- Project structures, target frameworks, and fundamentals of multi-targeting
- Configuration of the development environment and associated tooling
Modern C# and Future-Oriented Language Practices
- Utilizing records, init-only setters, and immutability patterns
- Enhanced pattern matching and switch expressions
- Implementation of nullable reference types and compiler-driven safety
- Best practices for Async/await and memory-efficient streaming
- Generic math, static abstracts in interfaces, and performance-oriented APIs
- Preparing codebases for upcoming C# 12/13 features on the .NET 8 platform
ASP.NET Core Fundamentals and Application Bootstrap
- Host builder, middleware pipeline, and request lifecycle management
- Decision criteria for Minimal APIs versus controller-based APIs
- Configuration providers, environment-specific settings, and secrets management
- Handling static files, routing, and endpoint conventions
- Configuring the dependency injection container and managing service lifetimes
REST API Design and Implementation
- REST maturity model, resource modeling, and URI design principles
- Application of HTTP methods, status codes, and content negotiation
- Request validation, model binding, and integration with FluentValidation
- Versioning strategies for both public and internal APIs
- Generating documentation using OpenAPI and Swagger UI
- Conducting integration testing of APIs with TestServer and WebApplicationFactory
Enterprise Dependency Injection and Inversion of Control
- Constructor injection, service lifetimes, and management of captive dependencies
- Implementing decorator and factory patterns within the built-in container
- Integrating Scrutor and third-party dependency injection libraries
- Modular service registration and feature-based organization
- Addressing cross-cutting concerns via middleware and filters
Logging, Configuration, and Centralized Error Handling
- Structured logging using Microsoft.Extensions.Logging and Serilog
- Managing log levels, scopes, enrichment, and sink configuration
- Implementing exception middleware and global error handling pipelines
- Utilizing ProblemDetails and RFC 7807-compliant error responses
- Setting up health checks, telemetry, and observability hooks
- Preparation for correlation IDs and distributed tracing
Software Architecture for Enterprise .NET Solutions
- Principles of layered, hexagonal, and clean architecture
- Domain-driven design building blocks in the .NET ecosystem
- Implementing CQRS and mediator patterns using MediatR
- Applying repository and unit-of-work patterns with EF Core
- Vertical slice architecture for enhanced feature cohesion
- Evaluating trade-offs between monolith, modular monolith, and microservices
Security for Web Applications and APIs
- Authentication schemes: JWT, OAuth2, OpenID Connect, and cookie-based flows
- Authorization policies, claims-based access, and resource-based guards
- Enforcing HTTPS, HSTS, and secure header middleware
- Input sanitization, output encoding, and mitigation of OWASP Top 10 threats
- Implementing rate limiting, CORS policies, and anti-forgery token handling
- Managing secrets with Azure Key Vault and environment-driven rotation
Code Quality, Maintainability, and Best Practices
- Establishing coding standards, utilizing EditorConfig, and dotnet format
- Performing static analysis with Roslyn analyzers and integrating SonarQube
- Conducting unit testing with xUnit and mocking using Moq or NSubstitute
- Implementing integration and contract testing within CI pipelines
- Refactoring techniques for long-lived legacy modules
- Best practices for documentation, API contracts, and knowledge sharing
Modernization Strategy: Assessing Legacy .NET Framework Code
- Portfolio analysis: classifying applications by criticality, complexity, and business value
- Utilizing the .NET Upgrade Assistant and compatibility analyzer
- Identifying deprecated APIs, platform-specific dependencies, and third-party gaps
- Considering Windows-specific APIs and WCF migration implications
- Developing a migration roadmap with risk-based prioritization
Progressive Migration and Coexistence Techniques
- Applying the Strangler Fig pattern to incrementally replace legacy subsystems
- API-first migration: exposing .NET Framework domains through REST facades
- Message-based bridging using RabbitMQ, Azure Service Bus, or Kafka
- Strategies for shared database coexistence and schema versioning
- Running .NET Framework and .NET 8 side-by-side within the same infrastructure
- Containerizing modern components while retaining legacy systems on IIS
Hands-On Migration Lab and Review
- Applying the Upgrade Assistant to a representative legacy project
- Refactoring Web Forms or WCF services into ASP.NET Core APIs
- Implementing dependency injection, logging, and centralized error handling in the migrated solution
- Adding authentication and authorization to the new API surface
- Verifying coexistence through end-to-end integration testing
- Final review, Q&A session, and guidance for post-training modernization planning
Requirements
- Proficiency in C# programming and object-oriented design principles
- Familiarity with core web development concepts, including HTTP, HTML, CSS, and basic JavaScript
- A foundational understanding of relational databases and SQL
- Prior exposure to .NET Framework or ASP.NET is beneficial but not mandatory
Target Audience
- .NET developers and architects preparing to modernize legacy .NET Framework applications
- Software engineers transitioning into enterprise .NET development roles
- Technical leads overseeing platform migration and coexistence planning
- DevOps and infrastructure specialists supporting .NET application lifecycles
Testimonials (2)
Interactivity and on-the-fly code solutions
Eduard-Emanuel Zaharia - Kruk Italia
Course - Advanced Blazor
chance to do hands-on and patience of trainer