Microsoft no longer plans to include a new eventing framework in .NET 9.0 – expected late this year – following complaints that it could damage the third-party ecosystem however the vendor promises to engage in an open design process for a future version.
The ability to process messages and register event handlers for message queues is critical for many high-scale applications, but the space is already well served by third-party libraries. When the proposed new feature was first announced by Microsoft, there were objections not only to the impact on these existing projects, but also that it reinforced the tendency for .NET to have a “single vendor monoculture,” in the words of Aaron Stannard, CEO and founder of a .NET services company.
Distinguished engineer David Fowler has now posted that “we plan on engaging in an open design process for the eventing framework … we’ve decided to delay the release of the eventing framework to a subsequent version of .NET.”
According to Fowler, the team had been “concentrating on other critical components of .NET 9,” implying that little progress has been made on the eventing framework. Fowler had originally said the project was “principally for the Azure Functions folks,” this being Azure’s serverless platform which supports C# code as well as other languages including Java and Python. The immediate plan now is for Azure Functions to integrate more closely with Aspire and ASP.NET Core. Aspire is a new stack for distributed applications, first released for production last month.
Aspire is mainly for Azure in its current state and the episode raises a related issue: the extent to which .NET is moulded for Microsoft’s platform as opposed to being a generic framework that can be used anywhere. The fact that ASP.NET Core runs well on Linux, for example, has been important to its take-up. Microsoft will be balancing two goals here, one of which is to make C# and .NET succeed with competition from Java, Python and others; and the other being to drive developers towards its own products and services.
Earlier this year Fowler commented on a .NET library named Azure but which actually works with other platforms, saying that “the poorly named Azure.WebJobs.Sdk has an extensibility model and supports other event sources.”
As for .NET 9, it is currently at Preview 5, with new features including TensorPrimitives and Tensor<T> for AI work. The upcoming .NET 9.0 release will also include C# 13, improvements to WPF (Windows Presentation Foundation) and .NET MAUI (Multi-platform App UI), performance improvements in the .NET runtime, and feature switches to reduce the size of the runtime by omitting unneeded functions.