.NET Core is a development platform by Microsoft.In simple words .NET Core is .NET version which can run on different Operating systems and different devices from desktops to embedded devices.From developers perspective the APIs in .NET Core are subset of APIs in .NET standard.
.NET core supports following Operating Sytems:
- Windows
- macOS
- Linux new versions are supported in .NET Core 2.1.
So you can run .NET Core applications on all most all the platforms and operating systems.Like .NET Standard ,.NET Core consists of the following main components:
- .NET Runtime
- Framework Class Libraries
- SDK Tools
You can develop .NET core applications using Visual Studio or Visual Studio Code.
.NET Core 2.1 Release Candidate 1 (RC 1) is finally here.It has many improvements in terms of performance compared to .NET Core 2.0.Performance improvements have happened in runtime as well as the libraries.
New release of .NET Core also releases new versions of ASP.NET Core and Entity Framework Core,this time also along with .NET Core 2.1 new versions of ASP.NET Core and Entity Framework Core( 2.1 RC )are also released.
We will look at some of the important features of .NET Core 2.1 RC1
NET Core 2.1 RC is supported by Microsoft and can be used in production.
Extended Linux support
Added support for ARM32 builds of Linux and Alpine Linux.Alpine Linux is a lightweight version of Linux and is commonly used with Docker. .NET Core 2.1 RC supports Alpine.
ARM Distro Support
ARM32 linux distros such as Raspbian and Ubuntu now supports .NET Core 2.1.Raspberry Pi 2+ is supported.
Supports Brotli data format specification
Brotli is a data format specification for data streams and is supported by majority web browsers and servers.It is a lossless compression algorithm as opposed to lossy compression algorithm.Lossless compression algorithm are better than lossy compression algorithm as the data is exactly restructured in lossless compression algorithm.It is improved version of gzip and deflate specifications.
New Cryptography APIs
- Overloads for X509Certificate.GetCertHash and X509Certificate.GetCertHashString
- New Span<T> cryptography APIs for hashing
CryptographicOperations classes
- CryptographicOperations.FixedTimeEquals
- CryptographicOperations.ZeroMemory is a memory clearing routine
Support for RFC 3161 cryptographic timestamps
Updated APIs
Many APIs in preview 1 are updated in RC.The two main APIs which are updated in RC1 are
- System.Security
- System.Io
Global tools
Using this feature you can install a tool from a nuget feed in a similar manner to npm in Node.js.For example to install a tool called sample:
dotnet tool install -g sample
SourceLink
Source link is used for debugging the binaries.You can use SourceLink when developing Nuget,so any consumer will be able to debug the binaries you distribute as a part of nuget.
You can generate sourcelink information in binaries and nugets when using .NET Core 2.1 RC SDK.
You can get more information here Sourcelink
Tiered or adaptive Compilation
Just in time compilation compiles code on the fly at runtime.This results in the degradation of the performance , since this happens at runtime so there is a cost to this compilation.
Tiered or adaptive Compilation provides a better way to handle this.In a application many methods or branches of code are called frequently while others are never executed or executed only once or twice.If just in time compiler has to optimize all the branches of execution equally then it would not be goo approach to consider all the execution paths equally.
Adaptive compilation JIT compiles the code in tiers or steps.In the first step code is minimally optimized. In the second step frequently used branches are optimized further to improve performance.
New libraries
New libraries such as the following are added:
- System.Memory.dll
- System.Threading.Channels.dll
- System.IO.Pipelines.dll
You can install dotnet core 2.1 rc for windows here.You can select the appropriate version for different OS here such as Linux,Mac and Windows.
You can check if it is installed properly using the command
dotnet –version