ASP.NET 5 is getting closer and closer to release. The more I see, the more excited I get. However, for over a decade now, ASP.NET developers have become somewhat comfortable with new releases of ASP.NET: Since Release 1.1, changes have been evolutionary. ASP.NET 5, in contrast, promises to be totally revolutionary. As such, developers will need to be familiar with some of the changes that ASP.NET 5 will bring.
The ASP.NET 5 Revolution: Everything (and Nothing) Changes
While it’s true that ASP.NET 5 will bring some revolutionary changes into play, it’s also worth pointing out that the ASP.NET team has put forth a tremendous amount of effort to make the transition to the new features in ASP.NET 5.0 as painless as possible. Or, in other words, we’re going to see pretty powerful backward compatibility with the release of ASP.NET 5.0--in the sense that developers are really going to have to opt in explicitly to use the new features. As such, a great way to think about ASP.NET 5--at a high level--is to think of it in terms of “everything changes” for developers who want to “strike out into newer territory.” At the same time, ASP.NET 5 will be a bit of a minor evolutionary release--much as ASP.NET 1.1 was to 1.0--in terms of existing code, support and developer skill sets.
The problem, though, is that this is a bit hard to spot or decipher with some of the alphabet soup going on in terms of versions and version numbers. For example, an immediate source of potential confusion is that ASP.NET 5.0 will be able to run on .NET 4.6, while also offering the option to unify MVC, Web API and Web Pages into a single, unified framework called MVC 6. Needless to say, that’s going to create the potential for some initial confusion among developers. But, by the same token, ASP.NET MVC has always had or run under a bit of a different version than the underlying .NET Framework (i.e., MVC 1.0 ran atop .NET 3.5, and MVC 5.0 currently runs atop .NET 4.0/4.5). So, in many ways, there’s not as much confusion here as it might initially seem.
ASP.NET 5 Is Really About Two Things: Hosting and Agility
ASP.NET 5 really becomes revolutionary, and hopefully less confusing, when it comes to two main concerns: hosting options and release cycles.
In short, ASP.NET 5.0 continues to be a sort of evolutionary release if and when you consider hosting it on .NET 4.6--the next version of .NET. Or, in other words, if you look at ASP.NET 5 as an incremental release that will continue to be hosted upon the entirety of the .NET Framework, then ASP.NET 5 really isn’t much of a revolution at all.
On the other hand, if you take note of the fact that the goal of ASP.NET 5 is to allow developers to target new or optimized hosting platforms, then ASP.NET 5.0 becomes completely revolutionary--especially when targeted platforms include Linux and OS X (or the ability to target and even develop on cross-platform hosts). The key point to call out, though, is that in order to take advantage of these new hosting platforms--including an optimized version of the CLR called the Core CLR (which Microsoft has closely linked to cloud hosting)--developers will have to target these hosting platforms (or distinct versions of the runtime) explicitly.
Furthermore, to take advantage of the Core CLR or the ability to target cross-platform versions of the CLR, developers will have to write ASP.NET apps without making use of System.Web and all of the bulk and "cruft" that this massive assembly has introduced over the years. To put that into context, if developers want to deploy their ASP.NET 5.0 apps to the traditional Windows stack with the full version of the .NET Framework (i.e., System.Web and associated dependencies), they can expect to require over 200 MB of supporting binaries and .dlls. Whereas, if developers want to target the Core CLR, they can potentially get away with as few as 11 MB worth of supporting binaries. (They also have to opt in or explicitly add in any dependencies or other libraries that they want or need to use.)
To me, the option of being able to run ASP.NET MVC 6 applications on as little as 12 MB of supporting libraries and .dlls (which can be bin deployed) is nothing short of revolutionary. It’ll also mean that ASP.NET apps can and should become more stable or less subject to many of the issues of “DLL Hell,” as I’ve written about before.
Another key benefit of creating a new, optional version of the ASP.NET Framework that can run without System.Web is that the ASP.NET team will no longer be tied into releases of ASP.NET that have to coincide with new versions of the .NET Framework. Instead, we can and should see more frequent releases--or an increase in agility, enabling the ASP.NET team to be able to respond to market trends and needs in a much more timely fashion. (And without them needing to back-check every new feature against more than 200 MB worth of supporting library code in the .NET Framework. This, again, makes it clear why ASP.NET 5 will be a revolutionary release.)
All of that said, it’s important to remember that Microsoft will continue to provide ongoing support for “traditional FULL CLR” applications that are targeted against .NET 4.6. In fact, by default, Visual Studio 2015 will target ASP.NET Applications against the FULL .NET CLR, such that developers who want to target “leaner and meaner” Core CLR platforms or Cross-Platform CLR hosts will need to target these versions of the framework explicitly.
Catch the VIsion
To truly catch the vision of what Microsoft’s attempting here with ASP.NET 5, make sure you check out An Introduction to ASP.NET vNext by Daniel Roth if you haven’t done so already. Yes, that presentation is a bit dated (an updated presentation is here), but it’s a fantastic overview of the revolutionary changes the ASP.NET Team is currently working on.
And, if targeting an optimized version of the .NET Framework or running your apps from Linux of OS X hosts isn’t your cup of tea, then just remember that Microsoft’s vision is to provide continued support for the kinds of Full .NET CLR apps that ASP.NET developers have been building for the past decade or more.
Once you’ve gained a vision of what ASP.NET 5 is, make sure to take a look at this recent ASP.NET 5 Overview, which covers some of the concepts I’ve outlined here in greater detail. Other great resources you should check out include the ASP.NET Team’s official vNext website and a fantastically curated list of ASP.NET 5 links and resources managed by Tugberk Ugurlu in his Ultimate Guide of Exciting Things about ASP.NET vNext.