.NET Core 3.0 is out
.NET Core 3.0 brings various new and useful features with its release, including support for Windows Desktop apps built with WPF and Windows Forms. This is advantageous for developers who build Windows Desktop apps. The update involves framework deployments, being self-contained or side-by-side. There are also better run-time performances for certain classes of APIs (e.g. I/O and networking). You can take advantage of Windows 10 capabilities with far more ease with this upgrade, which includes platform APIs via NuGet, MSIX packaging technology, and UI updates with XAML Islands. And it’s not just framework features and enhancements either. The new language features in C# 8 are important to note and will be discussed further below.
Of course, there are also a lot of breaking changes. Our .NET team took this major version update as an opportunity to clean out the framework so to speak, removing stale APIs and strong couplings to some popular 3rd party packages like JSON.NET, instead now providing a slimmer and faster in-house alternative. And the impact of some of these changes reaches outside the framework. For example, if you are using Alpine docker images, you will need to switch to using Debian Docker images before upgrading to .NET Core 3.0. The Alpine images have a built-in globalization setting which makes Entity Framework Core 3.0 incompatible with it.
Capabilities:
ASP.NET Core in .NET Core 3.0 lets developers build full stack web applications with C# using Blazor in both Visual Studio and Visual Studio Code. Blazor builds on Razor and C# syntax and consist of composable UI components implemented using Razor syntax (HTML, CSS, and C#). UI component libraries are available from Telerik, DevExpress, Syncfusion, and Radzen.
.NET Core 3.0 also includes support for Blazor Server apps, which handle client-side UI interactions over a real-time Azure SignalR connection. Azure SignalR now supports OnConnected and OnDisconnected event handlers via Event Grid and SignalR clients now have withAutoReconnect() method for automatic reconnection. They also added enhanced policy support and client-to-server streaming support.
C# 8 brings nullable reference types, support for asynchronous streams, switch expressions, recursive patterns, and range expressions. Entity Framework Core 3.0 embraces these new C# 8 language features and adds Cosmos DB support. Lastly, Entity Framework 6.3 makes it easier to move existing applications to .NET Core 3.0 and .NET Standard 2.1
Null-reference types (debugging)
With the release of .NET Core 3.0 Preview 7, C# 8.0 is considered “feature complete”. That means that the biggest feature of them all, Nullable Reference Types, is also locked down behavior-wise for the .NET Core release. It will continue to improve after C# 8.0, but it is now considered stable with the rest of C# 8.0.
By making use of this new feature you can reduce the number of null-reference bugs that occur, as well as assisting with the design of the code before facing more related problems. Null reference exceptions are actually one of the most frequent errors encountered in .NET apps. Despite the extreme capabilities of the framework, it’s built around a core assumption that reference types can point to null. This means that any code that works with a reference type needs to either already know that the object is not null or do an explicit check .
Making the move to .Net Core 3.0
If you have a .NET project and are considering upgrading to the latest .NET Core 3.0, we can help you. Our Discovery Engagement model is designed to analyze and architect your move to .NET Core 3.0 seamlessly. You will draw from our own in-house experience of deep dives into the migration to .NET Core 3.0, ranging from DevOps related issues around deployment and QA automation compatibility to re-implementing existing testing processes and practices due to breaking changes in the framework.
We have been following and walking closely with this new version of the framework since the first release candidate became available. If you are building a new project from scratch or just moving it to .NET Core 3.0, we can help you evaluate that decision for you.
Our Discovery Engagement model includes an assessment of the design, looking over the architecture, determining the requirements of the project. Estimations of costs, the tools needed, time required and the processes involved are also all determined in the Discovery Engagement. This is the best place to start your project and get an idea of the solution scope.
Who would need the Discovery Engagement Model?
If you are looking to execute on a strategic initiative in your organization, we can help drive this out for you from a technology perspective. If you are a Head of Product looking for a proof of concept or a prototype for your business case to demonstrate viability – the Discovery Engagement is perfectly designed for this. We can even help modernize your systems & business processes as well as help with digital transformation. If you are a startup looking to expand on an idea and you are seeking guidance, we can help.
You may also be looking for additional expertise outside of your development team’s skill set and we can assist with this too.
Contact us for more on our Discovery Engagement
If you want to get a hold of us, click here to send us an email with your interest in our Discovery Engagement model and we will get right back to you on how we can help you.
About .NET Core
.NET Core: is a general purpose development platform maintained by Microsoft and the .NET community on GitHub . It is cross-platform, supporting Windows, macOS and Linux, and can be used in device, cloud, and embedded/IoT scenarios. .NET has several capabilities that make development easier, including automatic memory management, (runtime) generic types, reflection, asynchrony, concurrency, and native interop. Millions of developers take advantage of these capabilities to efficiently build high-quality applications. You can use C# to write .NET Core apps. C# is simple, powerful, type-safe, and object-oriented while retaining the expressiveness and elegance of C-style languages. Anyone familiar with C and similar languages will find it straightforward to write in C#