Performance Improvements in .NET 6

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • AspNetCore.Docs

    Documentation for ASP.NET Core

  • Major version releases have breaking changes. I don't see the issue. I've been doing .NET development since the original version was in beta (20 years now?) For the most part I have no complaints about the docs - and hey you're free to submit a PR against the docs if you want to contribute, have at it: https://github.com/dotnet/AspNetCore.Docs

  • IdentityServer

    The most flexible and standards-compliant OpenID Connect and OAuth 2.x framework for ASP.NET Core

  • Identity server is still open source, it just has a much more restrictive license and is paid.

    https://github.com/DuendeSoftware/IdentityServer

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • AspNetCoreDiagnosticScenarios

    This repository has examples of broken patterns in ASP.NET Core applications

  • https://github.com/davidfowl/AspNetCoreDiagnosticScenarios/b...

    `.GetAwaiter().GetResult()` is generally considered the best way to do it if you must do sync over async, but in modern code it should almost never be required.

    > I tried to convert a project to NRTs and gave up, reverted everything. I haven't seen a NRE in years :p NRTs introduce a lot of edge cases, with a lot of syntactic noise to cover them and still guarantees nothing (unlike a proper Optional type would).

    I've been working on updating a number of libraries to support NRTs with success. I find it's a good for developer ergonomics so you know what can return/be null and what cannot without needing it laid out within xml comments or documentation. ASP.NET Core 5+ will also automatically validate request payloads depending on a type being nullable or not. NRTs will be enabled in project templates by default with .NET 6.

  • Hot Chocolate

    Welcome to the home of the Hot Chocolate GraphQL server for .NET, the Strawberry Shake GraphQL client for .NET and Banana Cake Pop the awesome Monaco based GraphQL IDE.

  • This is not a MS project, but this thing called Hot Chocolate here (https://github.com/ChilliCream/hotchocolate) is very incredible. It is the best GraphQL framework I've worked on with excellent /EF(core)?/ support (even better than that of Hasura and dgraph) on the .NET ecosystem and overall software engineering. Maybe I can even swap the data source out with MongoDB as well, since it actually accepts IQueryable as the resolver source.

    .NET is so incredibly underrated...

  • aqtinstall

    aqt: Another (unofficial) Qt CLI Installer on multi-platforms

  • I'll be honest I don't think that doing C++ on windows is a good idea. The language needs to do a lot of file access for includes, and on NTFS those are super slow, my builds on Linux are something like 1/3 of the time on windows (building with the same commit of clang 12 and lld, same computer, same SSD).

    But if you don't want to install a Linux partition, then just use aqt to install Qt: https://github.com/miurahr/aqtinstall

    You want win64_msvc2019_64 as a platform.

    Way too often I see everyone clicking on everything in the installer which amounts to a 30gb download, but for the immense majority of Qt apps you just want the core libs for your platform which is like a couple hundred megabytes (and even then in practice you're going to use only a small part of those unless you have uncommon needs such as serial port, modbus or NFC communication, XML parsing, ...)

  • openiddict-core

    Flexible and versatile OAuth 2.0/OpenID Connect stack for .NET

  • .NET already has an identity platform (ASP.NET Identity) that provides authentication/authorization with various backend implementations. IdentityServer is a token server that speaks OAuth/OIDC and provide federation to other user directories (whether it's Azure Directory or ASP.NET Identity itself).

    IdentityServer4 is still open-source and available. There's a new version by Duende with commercial licensing but you can still use the other one, or various alternatives like OpenIddict[1]. Since OAuth/OIDC is very standardized, you can also just use servers in other languages pretty easily like Ory [2].

    Microsoft's team original thought about making their own auth token server but there was considerable pushback from the community precisely because it would have a negative effect on open-source and wouldn't actually add anything new compared to existing projects, while taking resources from other framework features.

    1.https://github.com/openiddict/openiddict-core 2. https://www.ory.sh/open-source

  • WPF

    WPF is a .NET Core UI framework for building Windows desktop applications.

  • Indees it seems to be a dead end.

    https://github.com/dotnet/wpf/issues/48

    Thanks for clarifying.

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • trava-jdk-11-dcevm

    dcevm-11 built on Travis

  • His stuff is still around, maintained and very useful via: https://github.com/TravaOpenJDK/trava-jdk-11-dcevm

    They say, that java on graal should have full hotswap.

  • Avalonia.FuncUI

    Develop cross-plattform GUI Applications using F# and Avalonia!

  • Avalonia

    Develop Desktop, Embedded, Mobile and WebAssembly apps with C# and XAML. The most popular .NET Foundation community project.

  • For a WPF-like development experience that's also cross-platform, perhaps take a look at Avalonia: http://avaloniaui.net/. It's not a drop-in replacement, but very, very similar.

  • Fabulous

    Declarative UI framework for cross-platform mobile & desktop apps, using MVU and F# functional programming

  • To add to the other comment, how about Fabulous?

    https://github.com/fsprojects/Fabulous

  • CSharpForMarkup

    Concise, declarative C# UI markup for .NET browser / native UI frameworks

  • To manage mental mapping of what is being drawn, I keep methods that create widget trees short. My rule of thumb is that whole method has to comfortably fit the screen at once. For each section of the main tree I create a static function that returns a branch of the tree. These functions have descriptive names that help you visualize what element each function builds. If a tree inside a function is long, it is broken down in the same way.

    There are some fluent extensions (for Xamarin.Forms and probably future MAUI) that help you build UI in declarative fashion with C#. Same extensions could be created for other frameworks.

    https://devblogs.microsoft.com/xamarin/c-sharp-markup-for-xa...

    https://github.com/VincentH-Net/CSharpForMarkup

    For reusable custom widgets that can't be done with a static function, I create new classes with their own widget trees. Try to keep widgets composable and avoid inheritance if possible.

    Hot reload is coming in .NET 6, so waiting for rebuild will soon be history.

    I have no experience with QML so I can't really comment on that.

  • MinimalWebView

    A minimal .NET wrapper around WebView2. No UI framework, just a Win32 message loop

  • Y'know, I've been building up my own "regular 'ole JS/TS talking to a .NET backend" solution lately: https://github.com/rgwood/MinimalWebView

    It's nice and lightweight but the friction of .NET-JS interop is constant. Blazor Server (hosted in-proc and served up to WebView2) is the nicest solution I've found so far but I'm very open to other suggestions.

  • MySqlConnector

    MySQL Connector for .NET

  • I'm the author of what you might call the "new" MySQL ADO.NET library: https://github.com/mysql-net/MySqlConnector

    I agree with your impression that developers of the other library don't seem to be "plugged in to" the .NET ecosystem. As an independent developer (not affiliated with Oracle or Microsoft), I've been able to influence GitHub PRs that shape the ADO.NET API for .NET 6.0, just by showing up and contributing; I haven't seen anyone from the Oracle MySQL team participating. Meanwhile, they violate basic principles of the .NET Framework Design Guidelines that have been around for over a decade (https://docs.microsoft.com/en-us/dotnet/standard/design-guid...), which makes their library feel alien to a .NET programmer (regardless of the quality issues it might have).

  • SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts