Course Code: taildotnet
Duration: 21 hours
Course Outline:

Session 1 - C# .NET for Front End Developers

Topics:

  • Brief this is .Net overview (5 - 10 minutes) to highlight the .Net ecosystem
  • Key differences between C# and Typescript/Javascript, including unique language features and syntax (e.g., static typing and features that aren't easily replicated in TS)
  • Introduction to nullable reference types and their importance

Hands-on:

  • Create a simple console app to explore C# syntax differences and experiment with nullable reference types

Session 2 - Building a ASP.NET Core Web API

Topics:

  • Overview of ASP.NET Core Web API project structure and MVC patterns
  • How dependencies are managed (compagin Angular's DI with ASP.NET Core's built-in DI)

Hands-on:

  • Create a new ASP.NET Core Web API project
  • Build a simple controller with basic CRUD endpoints
  • Test endpoints using tools like Postman or Swagger

Session 3 - Designing APIs: versioning and contract management

Topics:

  • Strategies for API versioning and maintaining backward compatibility
  • Managing API contracts: handling changes (adding vs. removing properties) and the impact on client applications

Hands-on:

  • Implement API versioning in your sample API
  • Simulate changes in data contracts and test versioned endpoints

Session 4 - Architectural patterns and configuration

Topics:

  • Introduction to the repository pattern and service-to-service communication
  • Introduction to configuration in general

Hands-on:

  • Refactor your API from Session 2 to introduce a service layer and repository pattern
  • Configure DI to register services with different lifetimes

Session 5 - Asynchrony and configuration management

Topics:

  • Best practices for asynchronous programming: using async/await and cancellation tokens
  • Managing application configuration: appsettings.json vs. appconfiguration and binding settings to objects

Hands-on:

  • Enhance API endpoints to support async operations and implement cancellation tokens
  • Bind configuration settings to a custom settings class within your service

Session 6 - Testing, DevOps & Deployment: Containerization and Beyond

Topics:

  • Writing unit tests for Web APIs using xUnit and FluentAssertions
  • Optional: Introduction to containerizing .NET Core applications using Docker
  • Overview of deployment strategies
  • Brief discussion on integrating with DevOps pipelines

Hands-on:

  • Create and run unit test for controllers and services
  • Optional: Containerize the API built in previous sessions using Docker
  • Simulate a blue-green deployment scenario (using local or mock environments)