Preface

 

ASP.NET has a long history—Microsoft released the first version in 2002 as part of the original .NET Framework 1.0. Since then, it’s been through multiple iterations, each version bringing added features and extensibility. But each iteration was built on the same underlying framework provided by System.Web.dll. This library is a part of the .NET Framework, and so comes pre-installed in all versions of Windows.

This brings mixed blessings. On the one hand, the ASP.NET 4.X framework is a reliable, battle-tested platform for building modern applications on Windows. On the other hand, it’s also limited by this reliance—changes to the underlying System.Web.dll are far-reaching and, consequently, slow to roll out. It also fundamentally excludes the many developers building on and deploying to Linux or macOS.

When I first began looking into ASP.NET Core, I was one of those developers. A Windows user at heart, I was issued with a Mac by my employer, and so was stuck working on a virtual machine all day. ASP.NET Core promised to change all that, allowing me to develop natively on both my Windows machine and Mac.

I was relatively late to the party in many respects, only taking an active interest just before the time of the RC2 release of ASP.NET Core. By that point, there had already been eight (!) beta releases, many of which contained significant breaking changes; by not diving in fully until RC2, I was spared the pain of dodgy tooling and changing APIs.