.NET Core - Terminology you Need to Know
A significant problem with the new versions of ASP.NET and Entity Framework is that they aren’t backwards compatible with previous versions. This isn’t just a matter of having slightly different behaviors or APIs; this is essentially a complete rewrite with a significant amount of functionality being dropped.
So the current thought is that calling the frameworks ASP.NET 5.0 and Entity Framework 7.0 gives the false illusion that they are somehow bigger than ASP.NET 4.5 and Entity Framework 6.0 when in fact they are smaller. To eliminate this problem, Microsoft is starting the numbering scheme.
The new versions will be called ASP.NET Core 1.0 and Entity Framework Core 1.0 respectively. Likewise, the new cross-platform version of .NET will be called .NET Core 1.0 to indicate that is isn’t a superset of .NET 4.6.
Likewise, ASP.NET MVC 6 will instead be called ASP.NET MVC Core 1.0. Thus we no longer have the version number mismatch between ASP.NET, MVC, and WebAPI.
So far so good, but when you start assembling the pieces, the picture becomes a little bit more complicated. ASP.NET 4.6 runs on top of .NET 4.6. However, ASP.NET Core 1.0 can run on both .NET 4.6 and .NET Core 1.0. Other terms you need to know:
- Core FX: This is open source version of the .NET Base Class Library. Essentially this is your System.* classes. Core FX runs on both .NET 4.6 and .NET Core 1.0.
- Core CLR: This is the open source, cross platform runtime. It based on Silverlight’s CLR, but with significant changes.
- .NET Native: A runtime/framework and compiler stack that is used for ahead of time compilation of Universal Windows Platform applications.
- Core RT: This is an ahead of time compilation technology that will be used to support cross platform command line applications. It uses some pieces of .NET Native but isn’t the same thing.
- LLILC: Another (potentially) ahead of time compiler for .NET that is being developed and is based on the popular LLVM. https://github.com/dotnet/llilc
- .NET Core CLI: The .NET Command Line Interface, which is billed as the “new command line experience” for building and deploying cross platform .NET applications.
Note: The abbreviation CLI also refers to Common Language Infrastructure, the name of the ECMA/ISO standard that includes the .NET type system, metadata, common language specification, and virtual execution system.
Correction: An eariler version incrorrectly stated that .NET Native and Core RT were the same runtime. Our thanks to Matthew Whilden for the clarification.