A few months from the RTM of the new version of ASP.NET, Microsoft changed the name—what was originally referred to as ASP.NET vNext and later as ASP.NET 5, it’s now called ASP.NET Core 1.0.
Also, all the related libraries changed their names:
- .NET Core 5 becomes .NET Core 1.0
- ASP.NET MVC 6 becomes ASP.NET Core MVC 1.0
- Entitiy Framework 7 becomes Entitiy Framework Core 1.0
I personally think this is a great move as it was causing a lot of confusion in people that were just looking at the whole thing from time to time and not following the entire evolution.
Why This is a Good Move
Calling the next version v5, v6, and v7 (respectively for ASP.NET, MVC, and EF) would have led people to think that they were actually the next version of the various libraries and frameworks. But, they were not:
- ASP.NET 5 would have not been a replacement for ASP.NET 4.6 because it was lacking a lot of its features (WebForms above all.)
- ASP.NET MVC 6 was not a replacement of MVC 5 because you couldn’t run it on top of ASP.NET 4.6.
So, it’s a good move to reboot the version number to 1.0, and start a new product from scratch, because this is indeed what ASP.NET 5 is all about: a compiletely new product, written from scratch, without backward compatibility, and also running a different runtime.
Calling it 1.0 also opens the way to a future ASP.NET 5 running on the full framework and still supporting WebForms, for example.
Calling everything 1.0 also clears up the versioning mess of all the libraries that ran on top of ASP.NET: MVC 5, WebAPI 2, SignalR, Web Pages 2. Now, they’ll all be part of the Core family and will all go back to 1.0. And, will evolve together with the Core family.
Why I Don’t Like it That Much
But naming and versioning are hard, and also this naming has its faults: you can still run ASP.NET Core 1.0 on top of the "full" .NET Framework 4.6, and the same goes for EF Core 1.0. Will this lead to some confusion? I’m pretty sure it will. Also, if you search on Google for ASP.NET MVC 1.0, you have to make sure the v1.0 you are reading about is the the "Core" and not the old version of the "full" ASP.NET MVC.
Personally, I’d have gone even further and called it something completely different: Foo 1.0.
But, this would have also had pro and cons:
- The main point in favour is that we’d finally getting rid of the legacy of "Active Server Pages" and lose the bad connotation that ASP.NET WebForms have in the other communities. Also, any name would be better and more appealing than "ASP.NET Core 1.0 MVC" as this is getting very close to the long names that we had from Microsoft in the past.
- The disadvantage of the new name is that they’ll lose all the ASP branding that has been built over 20 years.
How All the New Parts Stack Up After the Name Change
Let’s try to clear things up a bit. As bottom level, we'll have:
- the "full" .NET Framework 4.6 which provides base class library and execution runtime for Windows
- .NET Core v1, which provides the base class library and many of the other classes. From RC2 it also provides the execution runtime and all related tools (packages, build, etc), everything that was in DNX before. This runs on all OSes.
Then as base web framework level:
- ASP.NET 4.6, runs on top of "full" .NET 4.6
- ASP.NET Core v1, runs on top of .NET Core v1 and on top of the "full" .NET 4.6
Then at higher web libraries level:
- ASP.NET MVC 5, Webforms, and so on run on top of ASP.NET 4.6
- ASP.NET Core v1 MVC, which runs on top of ASP.NET Core v1 (and in RC2 loses the execution runtime and CLI part of it)
- EF6 runs on top of "full" .NET 4.6
- EF Core runs on top of .NET Core v1 and on top of the "full" .NET 4.6
Many other member of the .NET community wrote about their views on this change. Here are some of the posts I found around the net.
- Official announcement from Scott Hanselman: ASP.NET 5 is dead - Introducing ASP.NET Core 1.0 and .NET Core 1.0
- Netcore Is Getting Easier by Sebastien Lambla
- ASP.NET Core Naming History and Reaction by Steve Smith
What do you think? Like, dislike, love, or hate it? Let me know in the comments.