.NET Core

.NET Core is more interesting than the name might suggest. Whereas the .NET framework provides a consistent runtime for all the applications on a machine, .NET Core allows you to provide a specific and customized .NET runtime for each application, so as to allow it to run almost anywhere. This, together with a number of allied technologies such as native compilation, gives the .NET developer far more choice. As Scott Hanselman says “It means that you can build basically whatever you want, however you want. You can use the editor you like, the OS you like, and the languages you like.”

The requirement for NET.Core is driven from two very different types of application. At one end are server applications such as ASP.NET that are becoming more and more likely to be cloud-based and containerized. It is also aimed at Microservices, optimized for concurrency; at the other end are mobile and IoT applications that are hosted on a variety of operating systems and CPUs. For the .NET framework to be able to support these, it must diversify to be able to provide the appropriate runtime, and allow .NET applications to leave the cozy and consistent Windows environment.Soon, hopefully, with the release of ASP.NET 5, NET Core will be complete enough that we can take server applications that are developed in a .NET language such as C# and run them in cheap Linux servers, or various cloud environments. ASP.NET 5 will allow ASP.NET MVC applications to be hosted more widely. There are other possibilities such as running portable applications on the desktop that render their user-interface to a browser window in a separate component. This could allow an application to be delivered with a single codebase in a .NET language and deployed on different platforms with minimal changes.

.NET Core provides the basic libraries and execution environment to enable a ‘compiled’ application to be executed on a number of different operating systems, providing the basics that are likely to be needed by a server-based application, without the fripperies of the graphical user interface. This allows an application to be installed in an insulated cocoon of the version of NET core with which it was originally tested. This neatly kicks version compatibility headaches into touch, because you can deploy the application and .NET core together, using NuGet.

Microsoft are serious about .NET Core: ASP.NET 5 is getting near to release. (in Q1!) There is a version of Entity Framework working with NET Core. Is it ready for production work? At the moment I write this, it is for the brave and the pioneers but 2016 is, hopefully, going to be the year that .NET Core hits the mainstream.