Remember those old days of Windows vs. Linux battles? Linux being a free and open source operating system held the biggest market share on server systems whereas Windows was the chosen operating system due to its simplicity by desktop users. Developments in the mobile world changed that game and as the popularity of smart phones and tablets increased, Unix based Apple IOS and Linux based Google Android became most popular mobile operating systems.
In April 2011, Microsoft announced that they will open up the source code of Windows, which shocked whole IT community.
The open source strategy of Microsoft went on afterwards with supporting 3rd party open source extensions and tools like node.js, grunt, gulp and bower etc. directly inside Visual studio development environment, ability to create Linux virtual machines on Microsoft Azure, adding possibility to use multi platform and open source development technologies of Xamarin and Apache Cordova (Phonegap) in Visual studio and direct support for GitHub as well as TFS to be used inside Visual Studio for source control. Recently Microsoft announced his new .NET Framework 2015 (currently available in Beta) as an open source code and multi platform framework which will be able to run directly on multiple operating systems and server environments, just like the “Xamarin” and “Mono” frameworks currently supported by Visual Studio.
New features of .NET 2015
Microsoft opens a completely new era with .NET 2015. Many of the modules of .NET2015 are being written by an independent organization called .NET Foundation (http://www.dotnetfoundation.org/) and freely available from GitHub link (https://github.com/dotnet). That means every developer is able to pick up the latest version and contribute .NET framework development themselves using GitHub. New structure of .NET2015 is announced as follows :
The foundation modules of the .NET2015 is named .NET Core, developed completely open source and designed to run cross platform on Mac as well as Linux based environments. It consists of different modular packages which can be included in your application using NuGet package manager and also those libraries deployed together with your application. This way your application runs isolated from the framework with its own version of deployed packages and does not get affected by the global .NET Framework updates, which caused so many problems with server updates in the old .NET framework projects. New .NET Compilers are also developed open source and compiles your application together with its libraries into IL language, then it is transformed into native runtime code with new open source runtime environments.
The new ASP.NET 5 is also developed open source and available for multiple platforms including Linux and Mac environments, also available for “self hosting”. That means you can host an ASP.NET website on much cheaper Linux hosting companies or yourself without IIS. It is completely redesigned to use new .NET Core and DNX runtime environment. New ASP.NET a includes simplified MVC with new HTML based helpers, a cloud-ready new configuration mechanism instead of web.config and dynamic development options which enables realtime execution of changed program code. Dependency injection, which was done by 3rd party applications before now natively supported by the new ASP.NET.
New ASP.NET can be so called “self hosted”, which means it can run without the need of any web server including IIS and IIS Express, with using DNX environment.
New ASP.NET unfortunately drops support for “ASP.NET Web Forms”. It is not available from on ASP.NET 5. Therefore old “ASP.NET Web Forms” projects must be rewritten using MVC.
The structure map of the new ASP.NET is as follows :
.NET Execution Environment (DNX)
The new multiplatform .NET SDK and runtime environment is now called DNX and new ASP.NET uses DNX as its “execution” environment on different webserver platforms and in “self hosting” method. It is an environment to execute .NET Core application code on multiple platforms. Currently DNX project only allows you to run ASP.NET 5 and other console based .NET Core code on different platforms and it is only an execution environment. There are plans on Microsoft roadmap to make DNX become a multi platform application development framework just like Mono and Xamarin. This will make entire .NET framework in the future a cross platform development framework and allow users to develop applications with native .NET which then can be used on any device and any O.S.
Currently open source project “Mono” uses DNX as an execution environment to run .NET applications on different environments and web servers and Xamarin is used to create platform independent mobile applications for Windows, Android and IOS with C#.
Current status of .NET 2015
.NET2015 is currently being developed and some components are only available as Beta versions. .NET Framework 4.6 is available by default in Visual Studio 2015 and ASP.NET 5 is available to download as Beta 6 (for Visual Studio 2015) in the time of writing from the following link: (http://www.microsoft.com/en-us/download/details.aspx?id=48222).
Currently not every part of .NET is open source yet, there are plans to make all the framework available as open source. The open source parts of .NET Framework 2015 is marked in the schema below :
Unfortunately the newly developed open source .NET Core does not contain all the libraries and packages of Native .NET Framework. That would mean anyone who wants to upgrade their application to new .NET Core must rewrite some parts of their code. For old ASP.NET MVC projects it is possible to upgrade to new ASP.NET 5 but for “ASP.NET Web Forms” projects, because it is no longer supported, an upgrade is not possible.
It is exciting to see that .NET technologies are becoming open source, being developed by independent communities and becoming widely available for different platforms, mobile devices and server technologies. It is clear today that Microsoft’s open source – multi platform strategy was not just a bad joke and likely to go on with other Microsoft products in the future.