Enterprise ASP.NET Core 3 Development

4 Days

This ASP.NET Core training focuses on the patterns and practices necessary for building
enterprise-class web applications and services with ASP.NET Core 3. The hands-on exercises
completed during the course include the development of a containerized microservice-based architecture. Special attention is given to topics such as asynchronous communication, high
availability, and resiliency.

Goals
  1. Learn how to configure a development environment to support multiple .NET Core versions and deployment environments
  2. Understand the architecture and configuration of an ASP.NET Core application
  3. Acquire hands-on experience with using the ASP.NET Core routing to support a RESTful API design
  4. Learn about several different data access technologies (including Dapper and EF Core) and design patterns such as CQRS, Repository, and Unit of Work
  5. Understand the key aspects of a Microservice architecture and how to apply the principles of Domain-Driven Design (DDD)
  6. Use to Docker to containerize and deploy a microservice-based application
  7. Learn about the several microservice communication styles including asynchronous message-based and event-based patterns
  8. Gain hands-on experience designing for high-availability and resiliency
  9. Understand how to secure a Web API using token-based authentication with policy-based authorization
  10. Learn how to use Microsoft’s new Blazor technology for implementing client-side functionality with C#
Outline
  1. Setting up a Development Environment
    1. .NET Core SDK
    2. Visual Studio vs. VS Code
    3. Version Management with global.json
    4. Docker for Windows/macOS
    5. Remote Development using SSH
  2. ASP.NET Core Application Architecture
    1. NuGet Packages and Metapackages
    2. Application Startup
    3. Hosting Environments (Dev, Test, Stage, Prod)
    4. Middleware and the Request Processing Pipeline
    5. Services and Dependency Injection
  3. Application Configuration
    1. Configure and ConfigureServices
    2. Configuration Providers and Sources
    3. Configuration API
    4. Options Pattern
    5. HTTPS and HTTP/2
  4. Request Routing
    1. RESTful Services
    2. Endpoint Routing
    3. Attribute-Based Routing
    4. Route Templates
    5. Route Constraints
  5. Controllers
    1. Responsibilities
    2. Requirements and Conventions
    3. Explicit Dependencies Principle
    4. Action Results
  6. Data Access
    1. Persistence Ignorance
    2. Object-Relational Mapping
    3. ADO.NET vs. Dapper vs. EF Core
    4. Command Query Responsibility Segregation (CQRS)
    5. Repository and Unit of Work Patterns
  7. Web APIs
    1. ApiController Attribute
    2. CRUD Operations
    3. Content Negotiation
    4. Bad Requests
    5. Cross-Origin Resource Sharing (CORS)
  8. Using Docker
    1. Advantages of Containerized Applications
    2. Containers vs. Virtual Machines
    3. Microsoft ASP.NET Core Images
    4. Multi-Stage Builds
    5. Deploying a Monolithic Application
  9. Microservice Architecture
    1. Service-Oriented Architecture
    2. Domain-Driven Design (DDD)
    3. Data Sovereignty and the Bounded Context Pattern
    4. Polyglot Microservices
    5. API Gateway Pattern and Ocelot
    6. Container Orchestration
  10. Microservice Communication
    1. Communication Styles
    2. Container Networking
    3. Addressability and the Service Registry
    4. Eventual Consistency
    5. Asynchronous Message-Based Communication
    6. Asynchronous Event-Driven Communication
  11. Resiliency
    1. Handling Partial Failures
    2. Retires and Exponential Backoff
    3. Circuit Breaker Pattern
    4. Health Monitoring and Alerts
  12. Security and Authentication
    1. Token-Based Authentication
    2. Policy-Based Authorization
    3. IdentityServer
    4. Application Secrets
  13. Client-Side Development with Blazor
    1. Server-Side Blazor vs. Client Side Blazor
    2. Browser Support
    3. Forms and Validation
    4. Routing
    5. Authentication
  14. Conclusion
Class Materials

Each student in our Live Online and our Onsite classes receives a comprehensive set of materials, including course notes and all the class examples.

Class Prerequisites

Experience in the following is required for this ASP.NET class:

  • Extensive experience using the C# language.
  • Previous experience developing applications with ASP.NET Core or ASP.NET MVC.
  • Some familiarity with HTML, CSS, and JavaScript.

Experience in the following would be useful for this ASP.NET class:

  • Some knowledge of Docker is recommended but not required.