- The current .NET trends are highly related to Microsoft’s releases and new features. However, many trends are driven by independent frameworks and open-source technology.
- User interface (UI) and communication frameworks experienced a particular evolution in the last years. They also represent a considerable part of all current trends in the .NET ecosystem.
- Most of the current .NET trends are related to features present in .NET 6 (the current stable version). However, due to the different degrees of maturity of different components, we can see topics related to .NET 6 in all trending stages.
- We can see some trends, such as cloud-native development and gRPC, in the early stages of adoption by the .NET community. These topics, however, are in later stages of adoption from other perspectives (such as Software Architecture and Cloud Development in general). This can be interpreted as the result of faster incorporation of already established technologies in the most recent .NET releases.
- Microsoft’s original intent of establishing .NET as a unified platform clearly advancing. This can be inferred by the number of current trends that are inherently cross-platform.
Every year, all InfoQ editors invite seasoned developers and practitioners from the industry to discuss the current trends in the entire software development landscape. The results of these discussions are published as trend reports, each focusing on one specific set of topics – which we call spaces. These reports help the editorial team curate and deliver high-quality news and articles to our readers while ensuring that we are covering the currently most relevant topics and technologies.
All of our reports are built upon the well-known framework developed by Geoffrey Moore in his book “Crossing the Chasm.” Moore’s framework describes four stages that can help understand how technology adoption evolves: “innovators,” “early adopters,” “early majority,” and “late majority.”
At InfoQ, the .NET space comprises all technologies directly related to .NET. That means not only what’s included in the official .NET releases but also frameworks and technologies that directly impact the .NET ecosystem, projects and initiatives using .NET, major use cases, and methods and approaches specifically aimed at that space.
Our trend reports are composed of two different parts. The first one is a written report containing all topics discussed by our editorial team, divided into the four stages mentioned above. This is the report you are currently reading. Here, we will present our trends graph, starting from “Late Majority” and moving toward the “Innovators” state. This way, we can also present a general analysis of the current status of the .NET space, discuss industry adoption of specific technologies, and present details on specific topics and trends.
The second part is an InfoQ Podcast episode covering some or all of the topics presented in the written report. These episodes are informal panels with InfoQ editors and expert practitioners from the industry. For this year’s .NET report, we discussed the latest user interface and communication developments.
.NET Trends: 2022
Observing the graph above makes it easy to establish a correlation between the topics listed and Microsoft’s latest developments in the .NET ecosystem. Even though our analysis is not focused on nor driven by a single company’s releases, in the last few years, the company’s efforts to establish and keep .NET as a power player in the software development scene were beyond considerable.
A clear indication of that is the fact that the latest versions of .NET – from Core 3.1 to 7 – are present in three of the four stages above, while at the same time, they represent less than three years of long-term releases.
Right before .NET Core 3.1 was released, Microsoft announced the Core project as “the future of .NET.” With .NET 5, the company announced its intentions to create a unified platform. All things considered, and even with the progress of the initial releases of .NET Core, this was no small feat: that meant producing a single runtime and framework that could be used everywhere, in multiple operating systems, with uniform runtime behaviors and developer experiences (which, of course, included all the tooling).
At the same time, however, the unified approach introduced with .NET 5 (and all the preceding changes from .NET Core 3.1) also allowed for different framework lifecycles within its releases – take Blazor, for example: while the web version of the framework has been around since 2018, Blazor Hybrid (for hybrid desktop/mobile clients) was only available in .NET 6, together with ahead-of-time (AOT) compilation for Blazor WebAssembly. That’s why we see “Blazor” in our “early majority” stage, while “Blazor Hybrid Apps” appear under “Innovators.”
Frameworks evolving at different paces and a list of considerable breaking changes make it difficult for companies that already migrated from .NET Framework to .NET Core or .NET 5 to move to newer .NET versions. We expect this situation to change as these .NET versions reach the end of support (November 2022 for .NET Core 3.1, and November 2023 for .NET 5).
Mostly due to performance improvements and relevant changes in ASP.NET 6.0, .NET 6 is the version used by the early majority. Blazor and Xamarin are also being used by major players in the industry, reflecting both the technology’s stability and the availability of specialized developers.
In terms of communication, the increasing adoption of gRPC and SignalR are consistent with the overall scenario. According to our latest Architecture Trends Report, gRPC is present in the “Late Majority” state – which shows that the .NET crowd is following the same direction. At the same time, the reason for the relatively late adoption of gRPC can be attributed to its predecessor: WCF, used up to .NET Framework 4.8.1, which was Microsoft’s one-size-fits-all communication framework for building service-oriented applications. That included both web-based communication and inter-process communication (named pipes).
In our .NET podcast episode, we discussed the deprecation of WCF and the role of gRPC in .NET. Irina Scurtu, one of our podcast panelists, talks about her current experience with gRPC in .NET:
There are so many options to move data from one side to another, especially with microservice architectures or event-driven or anything in between that requires back and forth requests and data transfer over the wire. Then it’s hard for developers to choose if they were to be put in that situation. But to be honest, what I’m seeing is that rest or HTTP APIs are still the go-to option for implementing APIs. GRPC is starting to have some traction, but yet again, there is not enough maturity for it in .NET.
Another interesting topic in this stage is related to user interfaces (UI): Microsoft introduced .NET MAUI (Multi-platform App UI) in 2020 as an evolution of the Xamarin.Forms toolkit. It is a cross-platform framework for creating native mobile and desktop apps with C# and XAML.
After two years of being available only as a preview, the first official MAUI version was released last month. However, there are still hundreds of bugs open on GitHub, which is one of the reasons why the official release is being considered a premature launch by the community. All these factors put MAUI in the “Innovators” stage.
In the meantime, we had mainly two different UI frameworks adopted by .NET developers. The first one is Flutter, first released by Google in 2017. It’s open-source, built with the Dart programming language (also developed by Google), and it’s steadily growing as a cross-platform UI framework used with a .NET backend.
The second framework was Uno Platform, an (also) open-source, cross-platform UI framework built on top of .NET. Uno Platform also supports XAML and can be used to build Mobile, Desktop, and Web applications with WebAssembly (WASM) – similarly to Blazor. The platform has been steadily growing in terms of adoption, including by Microsoft: the recently-released Windows Community Toolkit Labs was built using Uno.
Francis Tanguay, another one of our podcast panelists, talks about the current diversity of UI platforms in the .NET ecosystem:
There are quite a few things happening, and some confusion as well, in the market as to what’s available to use for app development and what is actually ready in the market. Cross-platform app development and UI frameworks have been growing rapidly in the last decade or so. […] When you’re looking at the curve of adoption, obviously, at some point, you have something stable that can be adopted by a majority of people. […] For newcomers, there are even more challenges from an architectural point of view, right? Once you have a UI framework and you’re ready to build your first app that needs to connect to whatever communication layer, should it be REST APIs or gRPC? And then you need to start thinking about things like: How you serialize data. How do you navigate between your pages? How do you manage data in your application? There’re so many different challenges.
Early Adopters and Innovators
Most of the topics in this stage were released together last year with .NET 6, so it’s expected from an industry perspective. There are exceptions, such as Blazor WASM (released a few years ago) and F# – which still has a relatively low adoption by .NET developers.
Minimal APIs were released with ASP.NET Core 6, and they represent a potential advantage for microservices developers since they allow the creation of HTTP APIs with minimal dependencies (much less boilerplate code). They also simplify the development process by allowing the API endpoints to be added to the app’s configuration file (no more MVC).
First released in 2019, the idea behind ML.NET is to provide .NET developers with the same machine learning (ML) capabilities found in the Python ecosystem. It encompasses the classic concept of a ML pipeline, from collecting data to building and training models. However, in doing so, it also competes directly with other well-established tools or frameworks. The crescent popularity of the SciSharp Stack – which provides binding for frameworks such as TensorFlow and Keras – can be seen as a reflection of the popularity and adoption of Python-based tools, for example. In any case, the
Source Generators were first released with .NET 5, and they are a good way to reduce the amount of repetitive code that needs to be written. One of its frequently used applications is related to high-performance logging, which can drive its increased adoption in the future.
With the increasing popularization of DevOps, we can also see an increase in usage of AzureDevOps APIs by .NET developers working on this area – but it is, of course, limited to developers using Azure as part of their cloud stack. If you’re interested in the current landscape for DevOps and Cloud, you can check our 2022 Trends Report.
Following the current state of .NET 6 (and the expected features of .NET 7), we already have most of the upcoming features being used by .NET innovators. .NET 7 is expected to be much faster than its predecessor, and ASP.NET Core 7 brings the official MAUI release and Blazor Hybrid Apps. C# 11 is also included in all .NET 7 Preview releases, which is why we can see all of these topics grouped together in this stage.
Another promise of .NET 7 is better support for containers and cloud-native development scenarios, which includes developer experience, tooling, and overall execution.