Microsoft has announced the release of .NET Core 1.0 and ASP.NET Core 1.0, the open source, cross-platform fork of the .NET Framework, letting people know at the Red Hat DevNation summit in San Francisco.
"This makes Red Hat the only commercial Linux distribution to feature full, enterprise-grade support for .NET," said Red Hat's blog post on the subject. The company has even registered the domain redhatloves.net, which redirects to a site with developer resources for .NET on Red Hat Enterprise Linux.
Why is Red Hat so keen? This line in the release says it all: "New .NET Core workloads can now be easily moved from a Windows Server environment to Red Hat Enterprise Linux, even if development was primarily done via Windows."
The company has its eye on Windows developers who now have a familiar route to deploying on Linux rather than Windows Server.
On Microsoft's side, the company is betting that any loss in Windows Server licences will be made up by increased use of its cloud services. Linux can be deployed on its Azure cloud, and there is strong .NET support for both Office 365 and Azure. Another factor is the forthcoming SQL Server for Linux, which will integrate nicely with .NET Core. Microsoft can profit from SQL Server licences even if you are not using Windows Server.
In addition, Samsung is joining the .NET Foundation's Technical Steering Group. The .NET Foundation is the entity set up to oversee .NET Core and other related open source efforts. Why? According to Samsung VP Hong-Seok Kim - who has also worked for Microsoft and for Facebook - its interest in NET is "especially in the area of ARM support." Samsung may be hoping for convergence between .NET Core, used primarily for web applications, and Xamarin, which compiles .NET applications for Android and iOS.
The Eclipse Che team, whose project is a browser-based IDE, announced support for the Visual Studio Code language server protocol, which means Eclipse Che can share code to enable rich editing features. Although Microsoft's Visual Studio Code is a desktop application, it is based on the Chromium browser engine and therefore also uses web technologies.
This is a big moment for Microsoft's .NET platform and the associated C# language. Microsoft's Rich Lander describes it as "the biggest transformation of .NET since its inception, and will define .NET for the next decade." However there are caveats. Only a subset of the .NET Framework is included, essentially for console or web applications. The tooling both for Visual Studio and the command line is still in preview, with full release expected with version 1.1 of .NET Core towards the end of 2016. Visual Basic is not supported for ASP.NET Core, and the SignalR real-time communication framework is not yet done.
"If you have a 10-year-old application that your company relies on, we don't recommend attempting to port it to ASP.NET Core," says Microsoft's Jeffrey Fritz, despite showing impressive performance statistics for .NET Core and its built-in web server, code-named Kestrel. The problem is the amount of porting work needed to work around missing APIs and Windows dependencies. Note that the ASP.NET Web Forms framework is not implemented, but only the more recent ASP.NET MVC and Web API. Even if your application is already ASP.NET MVC, porting will be more "a rewrite instead of a migration," Fritz says.
In some scenarios though, you can only use .NET Core. This includes the forthcoming Windows Server 2016 Nano Server, a cut-down server designed for cloud deployments and microservices.
Getting started with .NET Core
You can download .NET Core for Windows, Linux, Mac, or using a pre-built Docker container from Microsoft. Visual Studio developers need Update 3, also just released, before the .NET Core tools will install. On Linux you need a recent distribution, such as Debian 8.2. Once installed you can get started with a few simple commands, which create and run skeleton projects. The first time you run the command-line tools, Microsoft warns that it is collecting telemetry by default, though it also shows how to opt out. No personal data or code is collected though, according to the company's notes.
.NET Core running on Debian Linux - and the telemetry warning you get on first use
Version 1.0 of .NET Core will be supported by Microsoft for three years, since it is classed as a Long Term Support (LTS) release. Despite its missing features, the fact that Microsoft has unpicked the Windows and IIS (Internet Information Services) dependencies from .NET and ASP.NET is a major attraction, as is the more efficient code.
That said, you can expect substantial changes to .NET Core as it evolves and this will make developers cautious. Version 1.1 will change the build system to MSBuild, which means .csproj configuration files in place of the current project.json. There are also areas of uncertainty over how Microsoft's acquisition of Xamarin and with it the main sponsors of Mono (the existing open source implementation of .NET) will affect .NET Core. It is likely that the two projects will converge, but to do this without harming the clean, minimal approach in the .NET Core concept will be difficult.
Microsoft is also continuing to develop .NET Framework 4.6, the Windows version of .NET, which means enhancements to the platform get ported back and forth to retain compatibility with ASP.NET Core.
This is good work, but areas of confusion along with porting challenges will slow its adoption. ®