Get in Touch
 Duration 35 hours

Course Outline

Transitioning from Language Proficiency to Solution Design

  • Advanced C# capabilities and their impact on design choices.
  • Extracting design intent from legacy or existing codebases.

Analyzing Requirements and Modeling the Domain

  • Defining use cases, user stories, and acceptance criteria.
  • Establishing domain models and a ubiquitous language.

Core Software Design Principles

  • Applying SOLID principles within .NET solutions.
  • Managing coupling, cohesion, and dependency directions.

Design Patterns for .NET Ecosystems

  • Selecting appropriate creational, structural, and behavioral patterns.
  • Identifying patterns and anti-patterns in current code structures.

Architectural Styles and Strategic Decision-Making

  • Comparing layered, hexagonal, and clean architecture approaches.
  • Creating architecture decision records and conducting trade-off analyses.

Structuring the Solution

  • Organizing solutions and projects for large-scale codebases.
  • Choosing between modular monoliths and service-oriented boundaries.

Leveraging Modern C# for Maintainability

  • Utilizing pattern matching, records, and nullable reference types.
  • Exploring generics, LINQ, and functional composition techniques.

Managing Exceptions, Logging, and Observability

  • Defining exception strategies and error contracts.
  • Implementing structured logging, correlation tracking, and health checks.

Reflection, Attributes, and Metaprogramming

  • Designing with attributes and applying reflection use cases.
  • Using source generators and compile-time code generation.

ASP.NET Core Essentials

  • Understanding hosting models, dependency injection, and configuration.
  • Navigating the request pipeline, middleware, and filters.

Architecting REST APIs

  • Modeling resources and adhering to HTTP semantics.
  • Implementing versioning, validation, and error handling.
  • Defining API contracts using OpenAPI.

Enhancing .NET Application Security

  • Implementing authentication and authorization via OpenID Connect.
  • Managing policy-based authorization and secrets securely.

Threat Modeling and Secure Design Practices

  • Applying STRIDE modeling and defining trust boundaries.
  • Conducting secure design reviews prior to implementation.

Data Access via Entity Framework Core

  • Mapping entities and defining relationships.
  • Managing DbContext lifetimes and migration strategies.

Optimizing Query Performance and Data Architecture

  • Reviewing loading strategies and avoiding eager loading issues.
  • Handling transactions, concurrency tokens, and bypassing EF when necessary.

Handling Concurrency and Asynchronous Code

  • Mastering Tasks, the TPL, and async/await best practices.
  • Implementing synchronization, cancellation, and thread safety.

Performance Tuning

  • Conducting profiling and benchmarking using BenchmarkDotNet.
  • Managing memory allocations and garbage collection.
  • Developing caching strategies and performing load testing.

Multi-Layer Testing Strategies

  • Defining boundaries for unit, integration, and end-to-end testing.
  • Building testable architectures and utilizing test doubles.

Deployment and Operational Preparation

  • Managing containers, configuration, and CI/CD pipelines.
  • Ensuring production diagnostics and release safety.

Capstone Project: Design Review and Build

  • Conducting an architecture review of a case study application.
  • Implementing and refactoring a specific feature slice.

Requirements

  • Practical programming experience with C#
  • Proficiency in object-oriented programming concepts
  • Familiarity with SQL and relational database systems

Target Audience

  • .NET developers
  • Software engineers and technical leads
  • Developers transitioning into application design roles

Number of participants


Price per participant

Testimonials (4)

Upcoming Courses

Related Categories