A few months from the RTM of the new version of ASP.NET, Microsoft changed the name: what it 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 change name:
- .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 where just looking at the whole thing from time to time and not following all the evolution.
Why this is a good move
Calling the next version v5, v6 and v7 (respectively for ASP.NET, MVC and EF) would have lead 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 was: a compiletely new product, wrote 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, same goes with 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’d 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 farther, and I would have called completely differently: Foo 1.0.
But this would have had also pro and cons:
- the main point in favour is that we’d finally getting rid of the legacy of “Active Server Pages” and losing 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 build over 20 years.
How all the new parts stack up after the name change
Let’s try to clear up things 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 before in DNX. This runs on all OS.
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 and 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 looses 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 some of the posts I found around the net.
What do you think? Like, dislike, love, hate? Let me know in the comments