What is .NET Core (And Why You Should Be Excited About It)?

The .NET Runtimes and which version of the .NET Standard they support

It occurred to me, earlier today, that I’ve been talking about .NET Core since this blog’s inception

BWAAAAAAAAAAAAOOOOOOOWWWWWMMM!

Inception jokes, because they’re still relevant. Right?

Without actually talking about what it is, and why it’s so excting.

tl;dr (Too Long; Didn’t Read)

.NET Core is an open source implementation of the .NET Framework. It’s a subset (at the time of writing) of the .NET Framework, and precompiled binaries are available for may Operating Systems.

What Is .NET Core?

Just so that we’re all on the same level:

The .NET Framework is something that was released in early 2002 by Microsoft. It’s an application development framework that is designed to support RAD (Rapid Application Development) in a range of languages.

Technically, any language listed here is supported by the .NET Framework, via the Common Language Infrastructure.

It provided built in memory management (through the Garbage Collector) and a wide range of predefined data types (including Generics, Templating, and Collections).

Seriously, .NET Framework is pretty awesome and.NET Core is an open source, cross platform subset of the .NET Framework.

It was pretty awesome to begin with, but making it open source and cross platform? There’s your icing on the cake.

Open Source?

Yeah. So you can head over to GitHub and read through the entire source code for .NET Core. In fact, here’s a direct link to the repository: https://github.com/dotnet/core/

This means that anyone can contribute bug fixes and feature requests. The code can also be studied for research or teaching purposes, too.

But you probably knew that, if you know about open source software development

Multi-Platform?

At the time of writing, .NET Core is supported on the following Operating Systems and Linux distributions:

Yes, you read that correctly: Linux distributions

Red Hat Enterprise Linux 7.2

CentOS 7.1+

Debian 8.2+

Fedora 23, (Support for Fedora 24 coming soon)

Linux Mint 17.1+

OpenSUSE 13.2 & 42.1

Oracle Linux 7.1

Ubuntu 14.04 & 16.04

Mac OS X 10.11 & 10.12

Windows 7+ / Server 2012 R2+

Windows Nano Server TP5

Windows Server 2016

That’s a pretty impressive list.

And installing .NET Core on your machine or server is really simple. Just head on over to the official download page, pick your OS and run through the steps required.

And I’ve written about that in my second post on this blog, here is a link to that article in case you missed it.

Just over a decade ago, the .NET Framework was only available on Windows (although it was designed to be cross platform, just never developed in that direction). But now, as part of Microsoft’s big push to open source, it’s technically available anywhere.

What Can I Do With .NET Core?

Almost anything that you can do with the .NET Framework can be done with .NET Core.

Console Applications

Unit Tests

ASP.NET MVC Websites

Web API

I’m producing blog posts on MVC and Web API applications soon. Watch this space.

This means that, after a slight learning curve (for those who are already familiar to developing for with the .NET Framework on Windows, and who have no experience with Unix-like operating systems), you can easily convert any pre-existing .NET application to .NET Core – thus allowing it to run on a non-Microsoft OS, if you so wish.

Or just to take advantage of the benefits of the re-write of .NET.

Pro tip: it’s a LOT faster than .NET, in a lot of ways. Especially Kestrel (the basis of the MVC and WebAPI web server that comes as part of .NET Core)

For example, Orchard2 is build entirely with .NET Core – and that’s a full fledged CMS.

Where Do I Start?

I’ve written about this, too.

Are you sensing a pattern yet?

In my first post on this blog, I wrote about places to go to get information about .NET Core. You can read it here.

Let’s Build Something

Again, I’ve written about this already. Go check it out, here.

Talk about super lazy writing. All I’m doing it providing links to other pages on my blog.

In slight seriousness though, you should check out that link. It’s super easy to build stuff with .NET Core

What’s Next for .NET Core?

The currently stable version of .NET Core is version 1.0. This is the only version (at the time of writing) that Microsoft recommends using for production, even though a preview of version 1.1 dropped a few days ago (again, at the time of writing – and you can read my breakdown of the announcement here).

.NET Core and the .NET Framework both adhere to the .NET Standard. The .NET Standard is meant to document how the .NET (both Framework and Core) APIs work across all possible platforms and runtimes that .NET supports.

As you can see, the current version of .NET Framework (4.6.2) adheres to .NET Standard version 2, whereas the current version of .NET Core adheres to .NET Standard 1.6.

.NET Core has a bit of a journey ahead of it, but it’s a massive open source undertaking from Microsoft. It’s going to be around for a long time, and will probably end up supplanting Mono as the cross platform .NET implementation (even though Microsoft own Mono now, it would be a bad idea for them to kill it off).

It’s not going to take long for .NET Core to take off and in a big way, especially since there are already products out there which use it. We live in exciting times, and it’ll be fun to see where Microsoft takes .NET Core.

I mean, it already runs on RaspberryPi