#541 – January 26, 2025
Better to Re-license or Die?
.NET Open Source Projects: Better to Re-license or Die?
7 minutes by Aaron Stannard
The popular open-source library FluentAssertions changed its license from Apache 2.0 to commercial terms under Xceed, now costing $129.95 per seat for commercial use in version 8.0 and later. Aaron discusses the community's reaction and explores the broader question facing open-source maintainers. He argues that users should be proactive in supporting open-source projects through sponsorships, contributions, or at least paying attention to maintainer communications to prevent such situations.
Comparing Raw ASP.NET Request Throughput across 8.0 to 9.0
15 minutes by Rick Strahl
Rick compares the performance of .NET 8.0 and 9.0 through load testing of simple ASP.NET JSON endpoints. While .NET 9.0 showed slightly lower performance compared to 8.0, it demonstrated significant improvements in memory usage, with up to 10x reduction in some cases. The testing revealed that .NET 9.0 performs notably better in desktop applications with faster startup times and improved UI responsiveness, although server-side performance remained similar to .NET 8.0.
WinForms: Analyze This (Me in Visual Basic)
13 minutes by Klaus Loeffelmann
In this article Klaus introduces new WinForms Roslyn Analyzers coming with .NET 9, which help developers identify and fix potential issues in their WinForms applications.
Getting Started with Shouldly
5 minutes by Scott DePouw
In this article Scott introduces Shouldly, a .NET testing library that offers a more readable and fluid way of writing unit test assertions compared to traditional methods. The library provides clear error messages, supports multiple assertion types, and offers an easy migration path from other assertion libraries like FluentAssertions.
Exploring the Forwarded Headers Middleware in ASP.NET Core
5 minutes by Tore Nestenius
In this article Tore explains how ASP.NET Core's Forwarded Headers Middleware helps applications behind proxies correctly handle client information. It processes X-Forwarded-* headers to restore original request details like client IP addresses, request schemes (HTTP/HTTPS), and public URLs that would otherwise be lost when requests pass through proxy servers.
Highlight from the last issue: