Early Observations about .NET Core 3.0
For audiences familiar with .NET, but not .NET Core 3.0, the EQengineered team thought to catalog our early observations and share some general Microsoft .NET Core considerations.
.NET Core 3.0 Wins & Positives
Improved garbage collection resulting in lower memory footprint.
reference 1: https://docs.microsoft.com/en-us/dotnet/core/whats-new/dotnet-core-3-0#smaller-garbage-collection-heap-sizes
reference 2: https://docs.microsoft.com/en-us/dotnet/core/whats-new/dotnet-core-3-0#docker-and-cgroup-memory-limits
Support for modern security protocols.
reference 1: https://docs.microsoft.com/en-us/dotnet/core/whats-new/dotnet-core-3-0#tls-13--openssl-111-on-linux
reference 2: https://docs.microsoft.com/en-us/dotnet/core/whats-new/dotnet-core-3-0#cryptography-ciphers
HTTP/2 support
reference: https://docs.microsoft.com/en-us/dotnet/core/whats-new/dotnet-core-3-0#http2-support
EntityFramework 6.3 now supports .NET Core. It's not necessary to move to EF.Core, lowering the barrier to entry.
IOT Friendly, supported Raspberry PI and ARM Chipsets
Desktop application support brought back for WPF/WinForm apps
New high-performance, native JSON serializer
Supports in COM add-ins (Windows only)
Nullable reference types help reduce or eliminate pesky “Object Reference not set to an instance of an object” exceptions.
reference: https://docs.microsoft.com/en-us/dotnet/csharp/tutorials/nullable-reference-types
C# 8 adds async streams, range/index, new pattern matching syntax and more.
reference: https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-8
.NET Core 3.0 Detractors & Challenges
Odata is not yet compatible with .NET Core 3.0.
reference: https://github.com/OData/WebApi/issues/1748
Projects using older/deprecated versions of 3rd party libraries will encounter problems, most notable around cross platform support.
.NET Core 3.0+ Introduces .NET Standard 2.1 which isn't compatible with .NET Framework.
.NET Core 2.0-2.2 used .NET Standard 2.0 which was compatible with .NET 4.6.1+ making shared libraries possible.
It is not required to use .NET Standard 2.1, but some libraries do require it, like Entity Framework 6.3.
Requires Visual Studio 2016.3+ to develop with on the windows platform, or Visual Studio for Mac 8.3
Dependency on MSBuild16 which is only available on VS 2019/8.3
General Microsoft .NET Core Observations
Can host on IIS, Apache, Docker or Self Hosting - cross platform.
ASP.NET Core web application can run on Windows, Mac, Linux development tools.
Supports built-in dependency injection.