Microservices, ASP.NET Core and Docker

Course Description

Microservices provide an architectural pattern that allows applications to be written in a more flexible and re-usable manner.  They offer several benefits such as better re-use, simplified maintenance, ability to handle change requests and business rules changes more easily, independent versioning and deployment of services, increased productivity for new and existing team members, the option to scale out one or more application features, integration between multiple technologies, and much more. These benefits and several others will be discussed throughout the course so that students understand the overall goals of Microservices and where they work well in enterprise-scale applications. Challenges associated with Microservices are also discussed since we believe it's critical to understand not only the pros, but also the cons and associated challenges.

The course starts out with an introduction to Microservices and focuses on key concepts that developers and architects need to know before applying Microservices in their applications. Docker concepts and commands are then covered including the role of images and containers, the need for volumes, and key commands that can be used to work with Docker. From there a discussion of ASP.NET Core MVC and Web API is covered and students will learn how to run ASP.NET Core applications in both Linux and Windows containers. Finally, all of the concepts covered in the course are brought together to show the process of converting a Monolithic application to a Microservices application using ASP.NET Core, RESTful service concepts, and Docker images and containers. This includes actively using Docker commands, writing custom Dockerfiles, creating Docker Compose .yml files to build images and orchestrate containers, running Linux and Windows containers, and more. By the end of the course students will understand the case for Microservices and how they can be implemented.

If you're looking to bring your team up-to-speed quickly on Microservices and get a robust look at how they work with ASP.NET Core and Docker then this course is for you! 

This course is taught by Dan Wahlin (a member of the Microsoft MVP and Regional Directors as well as Docker Captains groups).


Dan Wahlin

Course Length

4 Days

You Will Learn

  • Learn what Microservices are and how they can be used
  • Understand benefits and challenges that Microservices present
  • Learn how to move Monolithic applications to Microservices
  • Understand the role of containers and how they can be used with Microservices
  • Learn how to work with Docker Community Edition
  • Use Docker commands to work with images and containers
  • Understand how to create custom Dockerfiles
  • Convert Dockerfiles into custom images
  • Work with and use Docker volumes
  • Create docker-compose.yml files
  • Build multiple images using Docker Compose
  • Orchestrate multiple Docker containers using Docker Compose
  • Work with Docker container registries
  • Learn about ASP.NET Core MVC and Web API features
  • Understand the role of Entity Framework Core
  • Create ASP.NET Core Linux and Windows containers
  • Kubernetes core concepts


Attendees must have prior experience working with C# to take this class. A minimum of 6-months of hands-on C# experience is recommended to get the most out of the course. Prior experience with ASP.NET Web Forms, MVC or Web API is highly recommended.


This course is designed for .NET developers looking to use Microservices and Docker containers in their ASP.NET Core applications.

Course Outline

  1. The Case for Microservices
    • Overview of Microservices
    • Microservices vs. SOA
    • Pros and Cons of Microservices
    • Client-side vs. Server-side Routing
    • Planning for Microservices
    • Microservices Reference Application

  2. Getting Started with Docker
    • Application Deployment
    • Shipping with Containers
    • Getting Started with Docker
    • Benefits to Developers and DevOps
    • Overview of Images and Containers
    • Layered File System
    • Containers vs Virtual Machines
    • Docker and Microservices

  3. Docker Images and Containers
    • Container Registries
    • Working with Images
    • Working with Containers
    • Getting Started with a Custom Dockerfile
    • Building an Image
    • Updating an Image
    • Pushing an Image to a Registry

  4. Containers and Volumes
    • Components Overview
    • Source Code and Containers
    • Introduction to Volumes
    • Creating a Volume
    • Inspecting Volumes
    • Defining a volume in a Dockerfile
    • Local Source Code and Containers

  5. Orchestrating Containers with Docker Compose
    • Container Orchestration
    • Getting Started with Docker Compose
    • The docker-compose.yml File
    • Docker Compose Commands

  6. Getting Started with ASP.NET Core
    • Getting Started with ASP.NET Core
    • Configuration and Middleware Pipeline
    • Controllers and Views
    • RESTful Services with Web API
    • Data Access with Entity Framework Core
    • OS X Cross Platform Development

  7. ASP.NET Core and Docker
    • ASP.NET Core Docker Images
    • Creating ASP.NET Core Linux Images
    • Creating ASP.NET Core Windows Images
    • Visual Studio Docker Features
    • "Containerizing" .NET Framework Applications
    • Running and Debugging Containers

  8. Monolithic to Microservices
    • Monolithic Applications Review
    • Microservices Review
    • Communicating with Microservices
    • Converting a Monolithic Feature to a Microservice
    • Creating Dockerfiles and Images
    • Communication with Microservices
    • Fault Handling
    • Health Checks

  9. Microservices Orchestration and Monitoring Tools Overview
    • Docker Swarm
    • Kubernetes
    • Marathon
    • cAdvisor
    • SysDig

  10. (Bonus) Introduction to Kubernetes
    • Why Kubernetes
    • Kubernetes Overview
    • The Master
    • Nodes and Pods
    • Services and Deployments
    • Files and Commands

Private Onsite/Online Pricing for Development Teams

Class pricing is based on the number of class days and number of students in class. We normally allow up to 24 students per class.

The course pricing includes student access to an electronic version of the course manual, lab manual, sample code and lab code. Courses can also be customized if you'd like to run a shorter or longer version of the course.

If you'd like more information on pricing or want to schedule a class for your development team please contact us and we'll be happy to provide addition details.

Contact Us

Public Classes

We don't offer public classes or one-on-one classes for individuals. For public classes we partner with Interface Technical Training and they offer instructor-led classes in Phoenix, AZ or online through their RemoteLive technology.

Training Courseware

Contact Us about licensing our courseware (slides, course manual, lab manual and code) for your own training courses.


Join Our Development Newsletter!