This sudden change of name must be resulted from a heated debate within the Microsoft since if you look at the milestone of releases from Beta to RC, you will notice the trend of inevitable change from just merely for enhancing the ASP.NET 4.6 to completely focusing on supporting the cross-platform development on the .NET Core, a complete new framework that was rewritten completely from scratch (no code copying from .NET Framework 4.6). This tight turn was resulted from the release of Beta7 on 9/27/2015 and onward. This decision might be painful and could cause confusion, undesired development issues, and potential negative impact to developers by changing from ASP.NET 5 to ASP.NET Core 1.0. For example, it disrupts the continuity of using the versioning-based NuGet packages since the name has changed. It may also affect all the libraries in the framework due to namespacing changes. Inside the Microsoft, they have to do a major refactoring by renaming their internal namespacing before they can release the product and expect to be prefect and error-free. It is a daunting task to be completed within a short period of time and at the last stage of releasing a major product.
In the recent years, the ecosystem of various mobile devices continues to strive in a very fast pace. Microsoft not only needs to adapt the changes in the ecosystem, but also quickly to innovate its products in order to stay competitive. Since November 2014, Microsoft introduces the .NET Core designed to be the foundation of all future .NET platforms with a unprecedented implementation of the open-source development model. It's a new era where Microsoft has begun to join the communities and offers its modern .NET stack in full open source condition. The .NET Core is a new .NET framework build from ground up and it is built with the independent of platform in mind and need to be open source. In addition, due to complicated issues of license and patent in the existing .NET framework since first version, this brand new framework is unable to just borrow the existing code from old framework to the new framework. It has to have a complete new codebase if this needs to implement as a full open source framework! Furthermore, since the purpose is to be the cross-platform framework, it must also revamp the process of compilation and execution. In the old framework, the source code is compiled into Compiled CIL (Common Intermediate Language) code and stored in the CLI (Common Language Infrastructure) assemblies in the format of DLL and EXE files. Upon execution, the platform-specific CLR (Common Language Runtime) compiles the CIL to machine-readable codes that can then be executed. In the new framework, .NET Core, instead of using the CLR, it uses CoreCLR to do the execution for the cross-platform .NET programs due to its modular design to work with all platforms including, Linux, Mac OS X, and Universal Windows Platform. By using NuGet, you can download the CoreCLR runtime along with its CoreFX libraries and then package and deploy them with your application. In addition, you can optimize the deployment by including only the CoreFx libraries that you need. This is a great leap since your runtime environment can be at minimal file size and it seems promising for the future tiny devices with unknown file size limit.
Consequently, the renaming of ASP.NET 5.0 to ASP.NET Core 1.0 is a must and reasonable. Besides it is completely new and deserves to have its own timeline, it has a different architectural design which is no longer based on System.Web.dll, the mother of traditional ASP.NET, and it is designed and optimized for the cross-platform and cloud-ready environments. You can even deploy your ASP.NET web app directly to a Docker platform, a containers-as-a-Service architecture. The change should be good on all levels. Now it is just like the old time when ASP.NET came aboard to replace the classic ASP in order to build web applications and not just web sites. ASP.NET Core is slowly replacing ASP.NET in order to build applications that can run on all platforms, and not just on Microsoft platforms. Nevertheless, it may be a short-term pain for the confusion and extra works for the developers, but from a long-term perspective, it should be good.
For the future, it is appropriate to ask "Will there be ASP.NET 4.7?" since ASP.NET 4.6 is a mature framework while ASP.NET Core 1.0 does not contain SignalR or Web Pages (a replacement of Web Form) and has only a subset of full framework. It would be interesting to see if it becomes a dilemma at all. On the one hand, you have ASP.NET Core 1.0 wants to replace the traditional ASP.NET track, but its framework is a strip-down version and lack of full featured like the ASP.NET 4.6. On the other hand, you don't want to continue to maintain the traditional ASP.NET track since the cross-platform is the future way of application development. We look forward to see if the ASP.NET 4.6 is kept alive and continues on its traditional path or to be retired soon.
The Unpredictable Microsoft Number
This is not the first time Microsoft has hard time to decide its version number. For example, all of sudden, Windows 10 was released without going from Windows 9. How about ASP.NET vNext? Have you heard it before? I heard and was informed by the Microsoft team during a dev conference. It was two years ago, about May of 2014, the vNext was suppose to be the next generation of .NET with a design mindset of unifying existing Microsoft technologies like ASP.NET MVC and Web API and hopefully be cross platform. Anyways, Microsoft quietly dropped "vNext" and renamed to ASP.NET 5. Well, I guess when everyone cannot agree on things, it's time to hit the reset button. I believed that ASP.NET Core 1.0 will be permanent and stay with us for a long time.
Here are the details of the changes:
- ASP.NET 5 is now ASP.NET Core 1.0
- .NET Core 5 is now .NET Core 1.0
- Entity Framework 7 is now Entity Framework Core 1.0