I purchased ASP.NET Core 2 High Performance a while ago - here’s a short review …
Chapter 1 - What’s New in ASP.NET Core 2
The book starts off by going through the recent performance features added into the .NET Core 2.0 data structure classes such as
List before moving on to the recent enhancements in ASP.NET Core. The chapter also covers other nice features added to C#6 and C#7 such as string interpolation and literals.
Chapter 2 - Why Performance Is a Feature
This chapter starts by convincing us of the importance of performance. It then moves on to the different types of performance problems from latency to responsiveness. It then goes on to how hardware impacts this and how it can be used to scale a system.
Chapter 3 - Setting Up Your Environment
This chapter goes through setting up our development environment on windows, macOS as well as Linux. The chapter also goes though deployment using Docker.
Chapter 4 - Measuring Performance Bottlenecks
This chapter covers a wide range of great tools that help us profile SQL, our ASP.NET Core code, HTTP traffic as well as general network traffic.
Chapter 5 - Fixing Common Performance Problems
A wide range of common problems are covered in this chapter such as the “Select N+1” issue in SQL and oversized images. As you would hope, each problem comes with a detailed solution.
Chapter 6 - Addressing Network Performance
This chapter focuses on network, covering topics such as HTTP/2 through to CDNs.
Chapter 7 - Optimizing I/O Performance
The chapter starts by covering the various categories of I/O and then moves on to various I/O optimisation techniques. Batching API requests as well as database query optimisation are covered in detail in this chapter.
Chapter 8 - Understanding Code Execution and Asynchronous Operations
This chapter focuses on the execution of our code. It starts by going through the many different data structure classes and their performance characteristics. The chapter then moves on to parallel code with the TPL and finishes with some coding practices to be wary of.
Chapter 9 - Learning Caching and Message Queuing
The chapter starts off by going through the many different types of caching from a redis server side cache to leveraging service workers to implement a client side cache. The chapter moves on to message queues and how these can help a system scale.
Chapter 10 - The Downside of Performance-Enhancing Tools
This chapter covers various topics such as using frameworks and good architectural patterns to manage complexity. The chapter also covers how to get our team and company to invest time on making our apps more performant.
Chapter 11 - Monitoring Performance Regressions
The chapter covers profiling tools and how they help us to monitor our apps. The chapter then moves on to useful testing we can do such as load testing and A/B testing.
Chapter 12 - The Way Ahead
The final chapter summaries the previous chapters as well as other topics like machine learning and big data and their role with regards to system performance.
The book takes a very broad look at performance - it isn’t solely focused on ASP.NET Core. Personally I like this because it’s important to have a holistic view when developing apps and diagnosing issues. As developers we often forget that hardware and networking play a part in performance as well as the software we write.
At just over 300 pages, the book is readable within a weekend.
So, if you’re a .NET developer, getting into ASP.NET Core and care about performance, this book is good resource.