There have been so many exciting changes in the .NET world lately that are likely to have very big implications on Microsoft’s development ecosystem for years to come. Microsoft wants to make developing cross-platform software, from any platform, as easy and modular as something like Node.js. It all starts with .NET Core, a rewrite of the .NET Framework. It supports multiple application models such as ASP.NET Core (also a rewrite), and has a smaller footprint from being able to include only the dependencies you need, as well as a smaller memory footprint. It’s also open source with contributions from over 10,000 developers.
The tried and true .NET Framework isn’t going away, at least for now. This was a very confusing thing for me at first; the classic one called simply .NET Framework, and the new one is called .NET Core.
Here’s a quick list of some key attributes, none of which apply to the .NET Framework:
- Developers can target a single common set of libraries that are supported by multiple platforms (Linux, OS X, Windows)
- Developers can build applications from any platform
- You can use only the libraries you need within an application, and the libraries (CoreFX) have been built to have minimal dependencies. These two things mean a smaller footprint.
- The smaller footprint reduces the impact of upgrades since only those packages used are affected. It makes it appealing for mobile apps that need a small footprint, and cloud-based apps that need many small applications running side-by-side.
- The smaller footprint also makes .NET Core up to 10x faster than the .NET Framework.
Not all functionality in the .NET Framework is included in the lighter .NET Core.
Microsoft very recently changed the names and versions of the new .NET Core 5 to .NET Core 1, ASP.NET 5 to ASP.NET Core 1.0, and Entity Framework 7 to Entity Framework Core 1.0. Thus, the production release has been delayed and is currently slated TBD in 2016 (don’t let that stop you from trying it out!).
Because of this, it’s been hard to keep track of all the developments and changes, and decipher where some of it stands. So, I’d like to aggregate the key components to hopefully help you get a clearer picture.
Full .NET Framework
These are components of the battle tested framework you’re used to:
|ASP.NET 4.5.2||Current release|
|Entity Framework 6.1.3||Current release|
|.NET 4.6||RTM release|
.NET Core Framework name and version changes
These new, cross-platform, open source components, that some say will be the future of .NET development.
|.NET Core||Description||Key Components|
|ASP.NET 5 to ASP.NET Core 1.0||
|Entity Framework 7 to Entity Framework Core 1.0||
|.NET Core 5 to .NET Core 1.0||
|DNX into CLI||Cross-platform command-line interface for creating and managing .NET projects||N/A|
The changes in the framework to 1.0 largely reflects that these are not the next versions of their respective components, but rewrites. Some functionality is shared between .NET Core and the full .NET Framework. Some are not. For example, .NET Core doesn’t have functionality for working with multiple GUI frameworks (i.e. XAML-based UIs) and Windows-specific APIs. .NET Core has other functionality that is not in the full .NET Framework, such as cross-platform capabilities.
DNX merged into the CLI
If you have been following the evolution of .NET Core and ASP.NET 5, you likely have heard of or used the DNX (.NET Execution Environment). This has undergone major changes as well and has been swallowed up by the .NET Core CLI.
DNX was .NET’s new “.NET Execution Environment”. It was then merged onto the CLI, the .NET command-line interface, with functionality the team had around building native applications on .NET Core. The CLI is for creating and managing .NET projects, including compilation, NuGet package management, launching a debugging session.
The CLI makes it easy to install .NET Core on your PC, Mac or Linux machine and start building an application, all from the command line. You can try installing .NET Core here. Then, build an ASP.NET Core on Windows, Linux, OS X or Docker. Pretty cool!
Here are some resources to help you go further,
- The .NET Core CLI documentation on the GitHub site
- NET Docs – Introducing .NET Core
- This excellent blog post from Scott Hanselman about the .NET toolchain
- A blog explaining the rename by Jeffrey T. Fritz
- For more in-depth information on the name and version changes, and on the components of .NET Core such as the CoreCLR and CLI, watch the NET Community Standup from January 19th, 2016 where are explained well by Damian Edwards
- MSDN Magazine – .NET Core – .NET Goes Cross-Platform with .NET Core