.NET Core - Fork In The Road

What is .NET Core?


.NET Core is a new Microsoft platform, which is modular, cross-platform, open source and has a better support for the Cloud. .NET Core will continue to run on Windows devices, as well as on Linux and Mac OS X. In addition, unlike the .NET 4.6, which is installed machine-wide as single large block, Windows-only runtime environment, .NET Core can be used to create modular libraries and the Applications   that can target multiple platforms and be deployed (per-Application), along with the Application itself.

Why .NET “Core?”

Microsoft’s vision of .NET platform evolved over the past 15 years and many technology enthusiasts, leaders and others wanted .NET to be open-source, available to other platforms like Linux and Mac, in addition to currently and widely supported Microsoft Windows.

To accomplish such a large goal and vision, it was necessary to have a “fork in the road” and create a fresh and new version of “.NET” which is named as “.NET Core 1.0”.
.NET Core

Hence, developing the Application, using “.NET Core 1.0” will enable and empower developers to write Applications with one platform; for instance, Microsoft Windows, and when everything is ready, it can run on the multiple platforms. In this case; it is Mac, Linux and Windows of course.

Why Version “1.0?”

The current and latest .NET Framework version is 4.6.x and so the next major release version was supposed be “5” and initially it was called .NET Core 5. Similarly, the next version of ASP .NET 4.5 was named ASP .NET 5 and the next version of Entity Framework 6.1.x was named Entity Framework 7.

This numbering order conveyed the message that these are just the next version of the same framework and technology; whereas the reality is different. “.NET Core” concept is totally new, YES! It's a brand new concept. Hence, the numbering has to be re-started. Therefore:
  • .NET Framework 5.0 is now known as “.NET Core 1.0”
  • ASP .NET 5.0 is now knows as “ASP .NET Core 1.0”
  • MVC 6 is now known as “ASP .NET Core MVC”
  • Entity Framework 7 is now known as “Entity Framework Core 1.0”

.NET Ecosystem

With the new launch of .NET “Core” wave of framework and technology, old version .NET 4.6 (which is mature and fully grown) will continue to co-exist. .NET Core can be installed on the same machine. However, .NET Core will have its very own personalized core libraries etc.

.NET Ecosystem

.NET Core includes CoreCLR, a more lightweight run time, that provides the basic Services to your Application, which includes automatic memory management and garbage collection, along with a basic type library, unlike .NET 4.6, which has such a large footprint for the same.

.NET Core also includes CoreFx, a set of modular assemblies, that you can add to your project/Application, as per your demand, unlike the .NET Framework 4.x, which always had to make the entire .NET Framework Class Library alias BCL (base class library) available. With .NET Core, you can select only the assemblies that you need. i.e. Windows doesn’t need Web and vice-versa.

.NET Core implementations

Following technologies are currently available in .NET Core wave.

  • ASP.NET Core

    ASP.NET Core is a modular version of ASP.NET, that combines ASP.NET MVC and the ASP.NET Web API. It runs on both .NET Framework 4.6 and .NET Core 1.0. It is custom designed for building high-performance Cloud Applications. ASP .NET Core should not be considered and taken as a replacement to ASP.NET 4.6 in the .NET Framework 4.6.

  • .NET Native

    .NET Native is a compilation and the deployment technology for Universal Windows Platform (UWP) apps, written in C# and Visual Basic .NET. “.NET Native” compiles apps to the native code and links into an Application's assemblies only those code elements from .NET Core libraries and other third-party libraries, that are actually used.

  • Universal Windows Platform (UWP) apps

    The Universal Windows platform allows you to build a single app, that can run on the Windows desktop, Windows Tablet devices and Windows Phone. These apps can also be placed in the Windows Store. UWP apps are compiled to native code for their target. platforms by .NET Native.

Supported Environments

.NET Core is supported by Microsoft on Windows, MAC OS and Linux. On Linux, Microsoft primarily supports .NET Core running on Red Hat Enterprise Linux (RHEL) and Debian distribution families.

.NET Core currently supports X64 CPUs. On Windows, X86 is also supported. ARM64 and ARM32 are in progress.

A wide array of all the supported platforms are shown in the Table below:

Environments

Which one to choose .NET 4.6 or .NET Core

.NET Core is not yet mature. Until it’s fully mature and time-tested; in my view, it’s not advisable to start building Enterprise LOB (line of business) Applications, using .NET Core. Hence, .NET 4.6 and ASP .NET 4.6 are more mature and time-tested until .NET Core becomes mature.

The Future of .NET

“.NET Core” is certainly the future of the .NET platform, but we are not there yet. It will be a while until this is widely accepted and the industry really starts to mold and accept its advantages, in order to become more open to build light-weight, cross-platform applications, using .NET. However, Microsoft envisions to continue with ASP .NET 4.6, as well. ASP .NET Core 1.0 is not an end for .NET 4.6 /ASP .NET 4.6. Instead, it’s a new beginning.