Video Series: Modernizing .NET Apps for Developers

Elton Stoneman

Feb 20 2018

MTA for Devs

 Docker Enterprise Edition (EE)  is the container platform for modernizing your existing applications, and running them in the cloud or on-premises. You can take monoliths and run them in containers with no code changes, and that gets you portability, security and efficiency.

Running in Docker is also a great starting point for modernizing the application architecture. You can breaking down the monolith into smaller, independent components which makes it easier to deploy updates, manage scale and introduce new technologies.

This new video series covers app modernization, for .NET developers and architects. It walks through the evolution of a monolithic ASP.NET 3.5 app to a distributed application running across multiple containers, using the Docker platform to plug everything together and adding features with great open-source software from the Docker ecosystem.

This is not a full re-architecture to microservices – for large .NET apps that would be a 12 month project. This series uses a feature-driven approach, taking key features out of the monolith to fix performance issues, add new functionality and support fast application updates.

Part 1 introduces the series, talks about what “modernization” means and then gets started – this is a very demo-heavy video series, where you’ll see lots of code. You’ll learn in Part 1 how to run .NET Framework apps in containers on Windows – using Docker to compile and package the app, and how to share your apps on a registry like Docker Hub.

The demo application is an ASP.NET WebForms app which uses SQL Server for storage. Part 2 shows you how to run SQL Server databases in Docker containers on Windows, packaging the schema so containers start with the database already deployed. You’ll also see how to optimize Dockerfiles for deploying .NET apps, and how to integrate logging and configuration with the Docker platform – still without changing code.

Part 3 starts modernizing the application architecture, extracting the web application’s save feature into its own container. The web app publishes an event to a message queue when users save data, and a message handler listens for those events and saves the data to SQL Server. The monolith now has an event-driven architecture, with all the components running in Docker containers, and that supports independent scaling and updates for different features.

Part 4 takes advantage of the new event publishing mechanism to add self-service analytics for users, powered by the open-source Elasticsearch stack. The new reporting database and analytics UI are run in Docker containers, and there’s a new message handler which stores data in Elasticsearch. You’ll learn how Docker EE  lets you add features like this with a zero-downtime release to production.

The series ends with part 5, which looks at breaking up the web UI. The homepage for the app is taken out and run in a separate container, which means changes to the UI and UX of the homepage can be released without regression testing the monolith. You’ll learn how to break up UI components and see how Docker enables fast, safe application releases.

Modernizing .NET Apps for Developers shows you how to take an existing .NET application, run it in a container, and use Docker EE  to modernize the architecture. The source code for the app is on GitHub and all you need to follow along is Docker for Windows on Windows 10, or Docker EE on Windows Server 2016.

Every part of the series shows you how to run the app locally on your dev environment, and also shows you the path to production – deploying to a highly-available Docker Enterprise Edition cluster in the cloud. By the end of the series you’ll be ready to start using Docker to modernize your own .NET applications.

Learn More about Modernizing Traditional Apps with Docker EE:


4 thoughts on “Video Series: Modernizing .NET Apps for Developers

  1. Thanks a lot! Pleas upload them to YouTube too.

  2. Elton, I browsed to both and, no single code file.
    1st one redirects to where thers is only file, license and .gitignore, the 2nd landed me nowhere

Leave a Reply