The next major version of .NET Core, .NET Core 3.0, has recently entered Preview stage. It will include support for building desktop apps using Windows Presentation Foundation (WPF), Windows Forms (WinForms), Entity Framework (EF), Blazor, C# 8, and .NET Standard 2.1.
As InfoQ recently reported, both WPF and WinForms have been recently open sourced under the MIT license. Although part of .NET Core 3.0, they are at the moment only available on Windows, and Microsoft does not seem to plan for their porting to other platforms. However, the fact that this is open source provides the possibilities for them to be ported to macOS and Linux by the community.
Besides adding support for Windows desktop apps to .NET Core, the new release will also bring forward .NET Core Web development support by introducing Blazor components. Blazor is an open Web standards-based, experimental framework that enables the creation of UI components running in the browser, including mobile, on a WebAssembly .NET runtime. While enabling the use of .NET for full-stack development, Blazor is still pre-alpha and Microsoft is still working on rounding out thechnical issues and gauging community interest.
C# 8.0 is another major component of .NET Core 3. It brings many new language features that InfoQ already covered when they were added to the C# roadmap, including nullable types, default interface methods, async streams, ranges and recursive patterns, and a wealth of other features.
.NET Core 3 will also support a new version of Entity Framework, EF Core 3, which will include significant changes to its LINQ implementation to improve the correctness and efficiency of generated queries and to detect inefficient queries. On a related note, Entity Framework 6.3 will be included in .NET Core 3 to allow developers to port existing applications that depend on it.
A major advantage of .NET Core is the relative greater easiness of evolving .NET Core in comparison with .NET Framework, writes Microsoft director of program management for .NET Scott Hunter. This is the effect of .NET Core being packaged within the application executable, thus making apps virtually independent from OS-bundled frameworks. On the contrary, the OS-shipped .NET Framework is bound to remain compatible with a massive number of existing applications depending on it, which greatly slows down its evolution. Testament to this, .NET Core has started to drive the evolution of .NET Standard, which defines a baseline of APIs that are available across all .NET implementations. Indeed, .NET Standard 2.1 adds about 3,000 new APIs that were introduced as part of the open source development of .NET Core since .NET Core 2.1, including Span<T>
, ValueTask
, and others.
As a final note, another main focus area for .NET Core 3 will be IoT, writes Hunter, providing support for the GPIO, PWM, SPI and I2C APIs used on Raspberry Pi and Arduino devices.
This is just a brief overview of what is new in .NET Core 3, expected to be relesed in the second half of 2019. If you are interested in trying it out, download .NET Core 3 Preview 1 from Microsoft website.