.NET Core is the next evolutionary step for Microsoft and the .NET platform. .NET Core version 1 was released in late 2016 and it's a big milestone. .NET Core will require you to completely re-write your website from the ground up. So the chances are pretty high that the next time you need to do a big site upgrade, it will be in .NET Core instead of MVC.

If you work within the .NET CMS world, this change in the framework has made the CMS landscape an interesting place. In today's guide, I'm going to cover what .NET core is and how CMS companies are now frantically working on their products to cater for it.

What Is .NET CORE?

Before I talk about the benefits of .NET core, I'll very briefly give you a walk down memory lane of .NET in general. Around 2005 ASP.NET 1 came out with something called web forms integration. Web forms enabled web developers to build websites using Microsofts new programming language C#.

At the time Webforms was a good option to build a website with, as it came with a number of out-of-the-box components like a DataGrid and it worked with Intellisense to allow for more accurate coding. There were issues with webforms. The page lifecycle model meant pages were structured in a way that made it really hard to maintain and manage. This happened because all the code and the HTML got mingled together in something called a code-behind!

Due to the limitations of web forms, Microsoft released MVC. MVC was a massive improvement over web forms. MVC provided a clean way to structure an application. MVC finally allowed developers to separate the HTML and the code for good this time. As MVC forced good separation, things like testing, TDD, dependency injection became easier to implement. MVC was built on top of the same platform used to build the web forms platform. This meant MVC had some stuff in common with web forms, like the rendering pipeline and how it referenced the HTTP context. Being forced to use the HTTP Context meant .NET always had to run within IIS (the Microsoft webserver), which also meant all .NET applications had to run on Windows. As a lot of companies invest in Linux, this meant using .NET was automatically ruled as an option by loads of companies. It also meant .NET apps cost more to host!

While this was occurring, Microsoft released Azure, its cloud hosting option. Azure made hosting Windows applications easier and thousands of companies are now hosting their websites within Azure. I would guess Microsoft makes a lot of money from Azure. One way to entice people into considering Azure over AWS would be to allow Linux hosting. So... a few years later .NET core came out which can run on Windows and Linux. This is where Azure and .NET are growing together to allow the best of all worlds! In effect, Microsoft has reinvented a framework that removes the constraints of having to use Windows. .NET core can become an option for companies who do not want to use Windows. .NET core will increase the chance of companies using Azure. It's quite clever really 🧠🧠🧠.

.NET Core is a rewrite of the Microsoft web framework to allow it to run on different web servers and on different operating systems. It removes a lot of the limitations of MVC and web forms, allowing for better unit testing and good practice development processes. Just like MVC is the defacto way of working with .NET right now, in 5-10 years time .NET Core will be the new normal.

The offset of this change in the short term has made life very interesting for CMS vendors. Most .NET CMS systems have been built up over a number of years using MVC, web forms and even asp. To make a CMS work with .NET core will mean all CMS vendors will have to rewrite a lot of their CMS applications from scratch. A CMS rewrite will obviously take a company a lot of time and effort. For that reason even though .NET core is out, there are no major .NET core CMS systems yet and I do not expect to see one using it anytime soon

Who will win the .NET CORE CMS Race?

It seems all the big .NET CMS systems like Umbraco, Episerver and Sitecore are still quite a long way away from being fully .NET core compliant. Umbraco, for example, is currently on version 7 and according to the roadmap, it won't be .NET core ready until version 9, which will very likely be at least another year away. Episerver and Sitecore find themselves in a similar boat. The Episerver admin for example still has some webform aspects. To get the CMS to run on a Linux server, for example, is complex.

From my research, it looks like the winner in the race will be Orchard CMS, with Orchard 2. Even though it's not the most popular CMS, there is already an Alpha .NET core version out, with the beta expected around May-June 2017 and the final product by the end of 2017. Orchard 2 is a re-implementation of Orchard in .NET core. You can download the CMS now if you really want to from here. They do warn you though that it is an alpha version. An alpha release in case you don't know is a version complete enough for internal testing. So if you want to use .NET core and build a new CMS in the short term Orchard might be your only option!

My advice, if you are planning on upgrading your current website, it might be better to hold off for a while. When the main CMS players have made .NET Core compliant versions, people who are upgrading their CMS now will be out-of-date pretty much straight away. The race of keeping up with rapidly changing technology, technology is currently moving! Happy Coding 🤘