The Developer Space

Developer's Cafe

  • Cloud
  • Database
  • Open Source
  • Programming
  • Web Dev
  • Mobile
  • Security
  • QuickRef
  • Home
  • Open Source
  • New Features and Enhancements in .NET Core 3.0

New Features and Enhancements in .NET Core 3.0

Shameel Ahmed - .NET, ASP.NET, C#, CodeProject, Open Source, Programming, Web Development
September 25, 2019October 8, 2019 1 Comment
.NET Core Logo
1 0
Read Time9 Minute, 15 Second

Introduction

.NET Core, the open source and cross-platform cousin of the .NET Framework, was first released in 2016 and supports Windows, Linux and Mac. The latest release, .NET Core 3.0, with a significant number of changes and improvements, was released on 23rd September 2019. The most important changes are discussed in this article.

Major Changes

Windows Desktop Support

Desktop developers have long been waiting for WinForms and WPF support in .NET Core. With the release of .NET Core 3.0, developers can now develop WinForms and WPF apps for .NET Core.

The WPF designer is part of Visual Studio 2019 16.3. The Windows Forms designer is available separately as a VSIX download. It is still in preview and does not support all features of WinForms development in .NET Framework. Feedback from developers about the WinForms designer has been mixed with some calling it “cranky”. Microsoft does not recommend moving you WinForms apps to .NET Core 3.0 yet.

According to Microsoft, backward compatibility was one of the design objectives and most WinForms and WPF applications work “as-is” with .NET Core 3.0 without any code changes. Note that the desktop apps run only on Windows.

You can create and build desktop applications from the command line using the .NET CLI. For example, to quickly create a new Windows Forms app:

dotnet new winforms -o mywinformapp
cd mywinformapp
dotnet run

For creating a new WPF app, use:

dotnet new wpf -o mywpfapp
cd mywpfapp
dotnet run

Native Executables

.NET Core 3.0 produces native executables that can run directly without the dotnet command. It was earlier available only with self-contained applications, and is a new feature for framework-dependent applications.

#.NET 2.1 and older
dotnet myapp.dll

#.NET 3.0
myapp.exe -- on Windows
./myapp -- on Linux/MacOS

Since the executable produced is native code, it will only run on the operating system and CPU class it was compiled for. For example, an executable produced for Windows will not run on Linux and one produced for x64 will not run on ARM, etc. You can continue using dotnet command to start your apps as usual, if you prefer.

JSON APIs

JSON APIs for reader/writer, object model and serialization scenarios have been added. These APIs minimize allocations that results in faster performance, and much less work for the garbage collector. These APIs were built from scratch on top of Span<T> and use UTF8 under the covers instead of UTF16 (like string).

A better Garbage Collector

The garbage collector uses less memory by default, often a lot less. This improvement is very beneficial for scenarios where many applications are hosted on the same server. The garbage collector has also been updated to make better use of large numbers of cores, on machines with >64 cores.

Performance Improvements

.NET Core 3.0 comes with a host of performance improvements. Check out the complete list and performance benchmarks here: Performance Improvements in .NET Core 3.0

Docker Enhancements

.NET Core applications targeted for Docker now work predictably and efficiently in containers. When a container has been configured for limited memory or CPU, the garbage collector and thread pool work much better. .NET Core docker images are smaller, particularly the SDK image.

ARM64 Support

ARM32 support for Linux and Windows were introduced in .NET Core 2.1 and 2.2, respectively. .NET Core 3.0 supports ARM64 which makes it easy to write code for IoT.

IoT Support

Support for IoT development has been enabled through support for Raspberry Pi and ARM chips. You can also use the remote Visual Studio debugger to debug your apps. .NET 3.0 has support for GPIO, PWM, I2C, and SPI protocols, to enable reading sensor data, print messages on a display, interact with radio, etc. IoT devices can be configured through a microsite using APIs hosted on ASP.NET.

Cryptography

.NET Core 3.0 supports algorithms for Authenticated Encryption (AE) and Authenticated Encryption with Association Data (AEAD), through –AES-GCM and AES-CCM ciphers, implemented via System.Security.Cryptography.AesGcm and System.Security.Cryptography.AesCcm.

Asymmetric public and private keys can now be imported from and exported to, from standard formats, without needing to use an X.509 certificate. Support for inspecting PKCS#8 files and inspecting/manipulating PFX/PKCS#12 files has been added.

API Differences from .NET Core 2.2

For a list of all API changes from .NET Core 2.2, check out this link (follows standard diff formatting):

https://github.com/dotnet/core/blob/master/release-notes/3.0/api-diff/3.0.0.md

Language and Framework Enhancements

As part of the .NET Core 3.0 release, related releases were made to languages and frameworks.

C# 8

C# 8 comes with a host of changes and language improvements that make it more interesting than ever to write code in C#. Some of the major changes include:

  1. Async streams (Comination of iterators and async methods)
  2. Range and Index classes make it easy to work with arrays.
  3. Nullable Reference Types to handle nulls code elegantly.
  4. Interfaces can have default implementations for methods.
  5. The using declaration can be scoped to a variable to avoid code indentation.
  6. switch statement supports pattern matching and now returns an expression.

Check out the C# 8.0 New Features article for a detailed explanation of all new features and enhancements with examples.

F# 4.7

F# is a mature, open source, cross-platform, functional-first programming language which was developed entirely via an open RFC (requests for comments) process. . For a list of all changes to the latest version of the language, visit Announcing F# 4.7

ASP.NET Core 3.0

ASP.NET Core 3.0 introduces Blazor, a new framework building interactive client-side web UI with .NET Core. For more information, visit What’s new in ASP.NET Core 3.0

Entity Framework Core 3.0

EF Core 3.0 contains more than 600 product improvements including major features, minor enhancements, and bug fixes. Check out this link for a detailed discussion of the major changes.

Announcing Entity Framework Core 3.0 and Entity Framework 6.3 General Availability

IDE Requirements

Visual Studio users must install or upgrade to Visual Studio 2019 16.3, which is a required update to use .NET Core 3.0 on Windows.

It would be Visual Studio for Mac 8.3 for Mac users that want to use .NET Core 3.0.

For developers using Visual Studio Code, just update the C# extension to the latest version to use .NET Core 3.0.

Current Release vs Long-Term Support Release

.NET Core 3.0 is a ‘current’ release and will be superseded by .NET Core 3.1 which will be a long-term supported (LTS) release, i.e., supported for at least 3 years. Adopting to .NET Core 3.0 now will enable you to easily migrate to .NET Core 3.1 when it is released in November 2019.

Supported Platforms

.NET Core 3.0 is supported on the following platforms:

  • Alpine: 3.9+
  • Debian: 9+
  • openSUSE: 42.3+
  • Fedora: 26+
  • Ubuntu: 16.04+
  • RHEL: 6+
  • SLES: 12+
  • macOS: 10.13+
  • Windows Client: 7, 8.1, 10 (1607+)
  • Windows Server: 2012 R2 SP1+

.NET Core 3.0 will be available in RHEL 8 in Red Hat Application Streams, after several years of collaboration between Microsoft and Red Hat.

Release Notes

Check out the official Release notes here:

https://github.com/dotnet/core/tree/master/release-notes/3.0

Roadmap and Future Plans

A summary of roadmap and future plans for .NET Core 3.0 and .NET Framework 4.8 can be found here:

Update on .NET Core 3.0 and .NET Framework 4.8

Conclusion

.NET Core is on its way to achieve what .NET Framework was initially intended to, but couldn’t: True cross-platform execution similar. Though initial versions of .NET Core had a lot of issues, the current version has successfully eliminated the major bottlenecks and is enabling us to write true cross-platform code using .NET. Container and IoT support make it the most ideal platform for .NET developers to write next gen apps.

More Reading

C# 8 New Features
Granting write access to ASP.NET apps hosted on AWS Beanstalk

Share

Facebook
Twitter
LinkedIn
Email

Post navigation

Generated Columns in PostgreSQL
C# 8 New Features

Related Articles

ChatGPT landing page

Learn Python with ChatGPT

Shameel Ahmed
December 26, 2022December 26, 2022 7 Comments
Migrate your SQL Server Workloads to PostgreSQL: Quick Reference: Second Edition

Book: Migrate your SQL Server Workloads to PostgreSQL: Quick Reference – Second Edition

Shameel Ahmed
October 18, 2022October 22, 2022 1 Comment

Increase Visual Studio Code Terminal Buffer Size

Shameel Ahmed
July 14, 2022July 14, 2022 No Comments

Average Rating

5 Star
0%
4 Star
0%
3 Star
0%
2 Star
0%
1 Star
0%
(Add your review)

One thought on “New Features and Enhancements in .NET Core 3.0”

  1. Ninad Dixit says:
    May 27, 2020 at 7:13 am

    Very good article, Shameel. The article explains the features of the latest version .NET Core 3.0. The latest version has some good improvements and it has become easy for developers to write cross platform code. It is an ideal platform for web applications development. The article gives good information.

    Reply

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Categories

.NET Architecture Artificial Intelligence ASP.NET AWS Azure Books C# Career Cloud CodeProject Conversational Bots Database Data Security Facade IDEs Java Mobile MongoDB MySQL Open Source Patterns PostgreSQL Programming Python Redis Security SQL Server Tools Uncategorized Web Development Windows Phone

Recent Posts

  • Developer to Architect Series (Red Hat Enable Architect) January 16, 2023
  • Can ChatGPT replace Google Search? January 11, 2023
  • Learn Python with ChatGPT December 26, 2022
  • Book: Migrate your SQL Server Workloads to PostgreSQL: Quick Reference – Second Edition October 18, 2022
  • Increase Visual Studio Code Terminal Buffer Size July 14, 2022

Archives

  • January 2023 (2)
  • December 2022 (1)
  • October 2022 (1)
  • July 2022 (2)
  • February 2022 (1)
  • November 2021 (1)
  • July 2021 (1)
  • June 2021 (1)
  • September 2020 (1)
  • May 2020 (2)
  • April 2020 (1)
  • October 2019 (1)
  • September 2019 (4)
  • July 2019 (2)
  • May 2018 (1)
  • September 2017 (1)
  • April 2017 (1)
  • April 2014 (1)
  • August 2011 (1)
  • June 2009 (1)
Copyright 2022. The Developer Space | Theme: OMag by LilyTurf Themes
  • DbStudio
  • Re:Link
  • shameel.net
  • Privacy Policy
We use cookies on our website to give you the most relevant experience by remembering your preferences and repeat visits. By clicking “Accept”, you consent to the use of ALL the cookies.
Do not sell my personal information.
Cookie settingsACCEPT
Privacy & Cookies Policy

Privacy Overview

This website uses cookies to improve your experience while you navigate through the website. Out of these cookies, the cookies that are categorized as necessary are stored on your browser as they are as essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may have an effect on your browsing experience.
Necessary
Always Enabled
Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.
SAVE & ACCEPT