Course Outline
Bridging Code and Solution Design
- Evaluating strategic design choices that must precede coding.
- Extracting and understanding design intent from legacy codebases.
Analyzing Requirements and Modeling Domains
- Defining use cases, user stories, and clear acceptance criteria.
- Constructing domain models and establishing a ubiquitous language.
Core Software Design Principles for .NET
- Applying SOLID principles to practical, real-world scenarios.
- Managing coupling, cohesion, and the direction of dependencies.
Practical Application of Design Patterns
- Choosing appropriate creational, structural, and behavioral patterns.
- Identifying valid patterns and recognizing anti-patterns in existing code.
Comparing Architecture Styles and Analyzing Trade-offs
- Comparing layered, hexagonal, and clean architecture approaches.
- Creating architecture decision records and defining modular boundaries.
Essentials of ASP.NET Core
- Understanding the hosting model, dependency injection, and configuration management.
- Navigating the request pipeline, middleware, and filters.
Architecting REST APIs
- Modeling resources and adhering to correct HTTP semantics.
- Implementing versioning, input validation, and structured error responses.
- Defining API contracts and generating documentation using OpenAPI.
Robust API Error Handling and Observability
- Establishing exception strategies and consistent error response contracts.
- Implementing structured logging, request correlation, and health checks.
Efficient Data Access via Entity Framework Core
- Modeling entities, relationships, and value objects effectively.
- Managing DbContext lifetimes, change tracking, and migration strategies.
Optimizing Query Performance and Data Architecture
- Selecting optimal loading strategies and avoiding common eager loading pitfalls.
- Handling transactions, concurrency tokens, and utilizing raw SQL when necessary.
Enhancing .NET Application Security
- Implementing authentication and authorization using OpenID Connect.
- Configuring policy-based authorization and managing secrets securely.
Threat Modeling and Secure-by-Design Approaches
- Applying STRIDE modeling, identifying trust boundaries, and mapping data flows.
- Addressing OWASP API security risks within the architectural design.
Mastering Concurrency and Asynchronous Programming
- Working with Tasks, the TPL, and avoiding common async/await issues.
- Implementing cancellation mechanisms, synchronization, and ensuring thread safety.
Advanced Performance Optimization
- Conducting profiling and benchmarking using BenchmarkDotNet.
- Optimizing memory allocations, garbage collection, and caching strategies.
Capstone Project: Architecture Review and Real-World Implementation
- Conducting a comprehensive design review of a case study application.
- Implementing and refactoring a specific slice of API functionality.
Requirements
- Practical programming experience with C#
- Solid working knowledge of object-oriented programming concepts
- Fundamental understanding of SQL and relational database systems
Target Audience
- .NET developers
- Software engineers and technical leads
- Developers transitioning into application design roles
Testimonials (3)
It was 1-on-1 so the training was specialized to my specific needs. Shane highlighted elements of WPF/C# that could potentially be beneficial to my development projects.
Warren Nolan - Northrop Grumman
Course - Programming in WPF
The explanations and interactivity of the trainer, he really brought the subject well; and even-though I was probably not experienced enough, I did learn a lot from it!
Pieter Bruynseels - Spot Buy Center BV
Course - Design Patterns
Nice and friendly. Very knowledgeable. Would recommend Shane to others.