.NET Encore

Wiktionary defines encore as “A brief extra performance, done after the main performance is complete”. Guess what, it kind of describes what .NET Core is!

Some of you may be asking: why do we need this at all? Don’t we already have Portable Class Libraries (PCL), Windows Phone (WP) and Universal Windows Platform (UWP) apps? Well, for once, UWP is just for Windows 10, Windows Phone targets the current – soon to go away – versions of Windows Phone 8.x, and PCLs are a terrible mess.

What developers have been asking for is a true One platform: cross platform (pardon the repetition), open source, modular and modern, meaning, fully embracing separation of concerns, dependency injection, inversion of control and all the other patterns that we have been using for quite some time now. That’s what .NET Core is!

In a nutshell, .NET Core is a set of APIs that are made available as open source and cross platform, meaning, the same functionality will be available on Windows, Mac, FreeBSD and Linux, but also, why not, Android and iPhone. It was (and is currently being) written from scratch with performance, modularity and scalability as first order concerns. It is composed of several Nuget packages, and this fragmentation will likely be a problem to start, because people won’t know what is the package to add for something that they have been doing for ages without the need of one, or maybe just one – Entity Framework Core, for example, is spread around EntityFramework.SqlServer, EntityFramework.Commands, EntityFramework.Core, EntityFramework.Migrations, etc. Fortunately, sites such as http://packagesearch.azurewebsites.net can help with this process.

This raises some challenges but also opens new opportunities. Let’s face it, Windows Server licenses are not exactly cheap, and having the possibility to deploy backend applications to Linux is very attractive. Yes, people have been using the .NET framework to build powerful enterprise-level application on Windows, and can continue to do so, but now we can reach out to other operating systems knowing that it is going to be fully supported by Microsoft. To make it lighter, the upcoming Windows “Nano” Server will only run .NET Core and will no longer feature a user interface. You can now contribute to .NET Core, you have access to the code and you can send your modification requests.

Yes, we won’t be able to use WPF, Windows Forms and Web Forms with .NET Core, at least, for now. WPF and Windows Forms have strong dependencies on Windows internals, and Web Forms has been deprecated in favor of MVC, but I guess it will just take some time until a clone of it appears on .NET Core, there’s nothing preventing it, quite the opposite. These APIs are still there, and will definitely continue and evolve. We will need to get accustomed to the new names, tools – welcome back, command line! – and APIs, but, as soon as Microsoft finally stabilizes the names, it won’t take long.

Interesting times, for sure! Winking smile



  • The huge benefit for me is that with Linux support, .NET Core applications are trivial to containerise into an ecosystem such as Docker. (I know Windows now has its own nascent containerisation system and Docker support, but as of the last WS2016 technical preview I tried it was a bit... wading through treacle to get anything useful happen.)

    Why is that a big thing? Because now I can write my application in a .NET language, but I'm a first-class citizen with all the Node/Express apps, Python/Flask things and so on... we can all have our applications packed onto the same cluster by ECS, Kubernetes and the like, my open source friends are happy that I don't need Windows to be installed, and unlike Mono I'm using something officially supported by the mothership.

    This is particularly good when it comes to things like OpenID Connect, where the .NET solutions supplied by Thinktecture just feel light years ahead of where other platforms are. Because they're happy to support .NET Core, we don't have to battle with some half-abandoned and not-working package we found on npm, we can pick the best solution and not have to worry that we won't be able to schedule it into our AWS cluster.

    Maybe those T-shorts *are* true: Microsoft <3 Linux!

  • Hi, Matt!
    Yep, I totally agree! Exciting new world, where we can write code in .NET and run it anywhere!
    An appropriate slogan might be: "write once, run everywhere"... hmm... err... where did I hear that?

  • Allllllllllmost... .NET Core does not run in browser-based environments, correct? Developers are asking for this, too:


    Right now, putting a NodeJS client on top of a .NET server breaks DRY and encapsulation, so web developers and flocking over to NodeJS and ditching .NET altogether. It's an existential problem, really.

  • How NodeJS is Dominating .NET in 3 easy charts:

Add a Comment

As it will appear on the website

Not displayed

Your website