Course Outline
Advancing from Syntactic Proficiency to Architectural Design
- Leveraging advanced C# capabilities to inform robust system design.
- Reconstructing intended architectural strategies from legacy codebases.
Requirements Assessment and Domain Modeling
- Defining operational use cases, user scenarios, and precise acceptance criteria.
- Establishing domain-specific models and a shared ubiquitous language.
Core Software Design Principles
- Implementing SOLID principles within the .NET ecosystem.
- Managing component coupling, internal cohesion, and dependency flow.
Strategic Application of Design Patterns in .NET
- Selecting appropriate creational, structural, and behavioral patterns.
- Identifying and remedying pattern misuse in existing systems.
Architectural Styles and Informed Technical Decision-Making
- Evaluating layered, hexagonal, and clean architecture approaches.
- Documenting architectural decisions and analyzing associated trade-offs.
Structural Planning for Complex Solutions
- Organizing solutions and projects to accommodate large-scale codebases.
- Distinguishing between modular monoliths and service-oriented boundaries.
Modern C# Features for Code Maintainability
- Utilizing pattern matching, record types, and nullable reference types.
- Applying generics, LINQ, and functional composition techniques.
Exception Management, Logging, and System Observability
- Establishing exception strategies and defining error contracts.
- Implementing structured logging, correlation tracking, and health monitoring.
Reflection, Attributes, and Metaprogramming Techniques
- Designing attribute-driven solutions and identifying reflection use cases.
- Leveraging source generators for compile-time code synthesis.
ASP.NET Core Foundational Concepts
- Configuring hosting models, dependency injection, and settings management.
- Managing the request pipeline, middleware, and request filters.
RESTful API Design Best Practices
- Modeling resources and adhering to HTTP semantic standards.
- Implementing versioning, data validation, and standardized error responses.
- Defining API contracts using OpenAPI specifications.
Securing .NET Application Environments
- Implementing authentication and authorization via OpenID Connect.
- Managing policy-based access controls and secret handling.
Threat Modeling and Secure-by-Design Protocols
- Applying STRIDE methodology and defining trust boundaries.
- Conducting secure design reviews prior to code implementation.
Data Access Implementation with Entity Framework Core
- Modeling entities and defining relational structures.
- Managing DbContext lifetimes and migration strategies.
Query Optimization and Data Architecture
- Selecting loading strategies and avoiding eager loading inefficiencies.
- Handling transactions, concurrency tokens, and raw database access.
Concurrency Management and Asynchronous Programming
- Mastering Tasks, TPL, and avoiding async/await pitfalls.
- Implementing synchronization, cancellation, and thread-safe patterns.
Performance Optimization Techniques
- Conducting profiling and benchmarking using BenchmarkDotNet.
- Optimizing memory usage, allocations, and garbage collection impact.
- Developing caching strategies and conducting load testing.
Multi-Layer Testing Strategies
- Defining boundaries for unit, integration, and end-to-end testing.
- Designing testable architectures and utilizing test doubles.
Deployment and Operational Readiness
- Managing containers, configuration, and CI/CD pipelines.
- Implementing production diagnostics and ensuring release safety.
Capstone: Comprehensive Design Review and Implementation
- Conducting an architectural review of a representative case application.
- Executing and refactoring a specific feature slice.
Requirements
- Practical experience in C# programming
- Proficient working knowledge of object-oriented programming concepts
- Fundamental understanding of SQL and relational database management
Target Audience
- .NET Developers
- Software Engineers and Technical Leads
- Professionals 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.