It’s a MILESTONE, .NET Core 1.0 is released! For .NET this is the biggest step since the release of the .NET Framework in the year 2002. We have a new .NET!
While working on the 10th edition of my book Professional C#, it took so much of my time – I never had that much work writing a book. So much changed since the 9th edition of the book. During writing I had to move through different iterations with many changes of .NET Core. Beta versions looked different than RC1, and big changes happened again with RC2. I love the result, and I hope you like it too!
Let’s see what makes .NET Core and I try to answer
- Why a new .NET
- When you should use .NET Core
- Future plans
Why a new .NET?
There are some good reasons having a complete new .NET:
- Faster Innovation
- Open Source
- Multi Platform
- Modern Patterns
Having the framework packaged within smaller units, faster updates can be done. Some parts of the .NET Framework (a few examples are Entity Framework, Data Flow, and immutable collections) already have been available with NuGet packages. These NuGet packages allowed faster updates, updates independent of the delivery cycles of the .NET Framework. Now packages are defined in smaller units (e.g. System.Console for the Console class, System.Collections for generic collections). Also the runtime is available as NuGet package. The runtime can be delivered with the application. There’s no need to pay attention what version of the runtime is installed on the target system.
.NET and ASP.NET is now open source, including the CLR and the C# compiler. You can look at the source code, write your extensions, and also interact with the development team if you find bugs and issues.
More open source projects: DotnetFoundation
Often a reason why .NET often was not the technology of choice was because it was only supported running on Windows. This is a thing of the past. .NET Core is beside Windows available Ubuntu, Debian, MacOS, CentOS, Red Hat, OpenSUSE, and Fedora!
The .NET Framework already has a life span of > 15 years. With this, many patterns have been used that look old today. After some years, a rewrite is useful. The new .NET Core is based on modern patterns. Dependency Injection is deeply used with .NET Core and ASP.NET Core.
When should you use .NET Core?
If you create a new Web application using ASP.NET MVC, for sure I would chose the new technology ASP.NET Core MVC 6. Of course there are some reasons not to select the new technology at this time – for example if you need a library that is currently based on the older ASP.NET framework, such as SignalR. This is a good reason not to switch now. You might consider doing part of the application with one version while another part is done with a different version. The approaach we use with Microservices helps with this. A future version of SignalR is based on ASP.NET Core.
In case you consider hosting the application not only on Windows, but also on Linux, ASP.NET Core is the only option to use. This technology gives you more options.
If you maintain an existing application, this is very different. Here you have to check what advantage you get moving to the new technology. The advantage should be more valuable compared to the migration work needed. Migration work needed will be less in the future.
Using Entity Framework Core 1.0 is another story. Entity Framework Core 1.0 doesn’t offer all the features available with Entity Framework 6 yet. You can use Entity Framework 6 with ASP.NET Core as well – just not on other platforms. Entity Framework Core gives you more options such as hosting on other platforms, and also supporting NoSQL, but you need to check for available providers. For sure over time, more and more providers will become available.
Hosting your application on Windows, you can use Entity Framework 6, even creating an ASP.NET Core application.
Command line tools can be created with .NET Core. You have access to a huge framework running on multiple platforms.
As a developer working with Microsoft technologies, I consider 2016 as the year of the command line – with git/npm/bower/dotnet/… You can create command line tools using .NET Core – running on multiple platforms!
The Universal Windows Platform (UWP) was the first client technology to use .NET Core. While you don’t use the .NET Core runtime here, the .NET framework used was an initial version of .NET Core. UWP is restricted to Windows, but you can use it on the desktop, XBox, IoT, HoloLens…
If you create WPF applications, you can get advantage of using some new .NET Core libraries, but there’s no need to switch to .NET Core. With WPF you can take advantage of the desktop bridge
If you are not creating new applications and just maintain existing ones, don’t assume .NET Core is nothing for you. You can .NET Core libraries with existing .NET Framework applications. In the book I’m using Microsoft.Extensions.DependencyInjection not only with ASP.NET Core, but also with WPF und UWP (Universal Windows Platform) applications.
.NET Core 1.0 is released today! In a world of agile development we will see enhancements continuously. What’s not released yet are the tools for .NET Core 1.0. Currently, preview 2 of the tools is available. I expect the release of the tools together with the next version of Visual Studio, Visual Studio “15”. Together with an updated version of .NET Core, it will be easier to move existing applications to the new platform.
While UWP applicaitons can already be compiled to native code, using .NET Core on multiple patforms, this planned feature is not available yet. Probably not with the update coming with Visual Studio “15”, I expect this feature to be available some time in the future.
Today’s a big milestone for .NET Core – the release of 1.0! Huge amount of work has been spend to create a .NET with modern patterns, multiple platforms, and open source. It’s great being a .NET developer.
More information about the C# features available with C# 6 in my new book Professional C# 6 and .NET Core 1.0. In my workshops you can already get some information about upcoming features with C# 7 – if you like to – or focus on already shipping features.