Recent from talks
Nothing was collected or created yet.
List of .NET libraries and frameworks
View on Wikipedia
This article needs additional citations for verification. (April 2016) |
This article contains a list of libraries that can be used in .NET languages. These languages require .NET Framework, Mono, or .NET, which provide a basis for software development, platform independence, language interoperability and extensive framework libraries. Standard Libraries (including the Base Class Library) are not included in this article.
Introduction
[edit]Apps created with .NET Framework or .NET run in a software environment known as the Common Language Runtime (CLR),[1] an application virtual machine that provides services such as security, memory management, and exception handling. The framework includes a large class library called Framework Class Library (FCL).
Thanks to the hosting virtual machine, different languages that are compliant with the .NET Common Language Infrastructure (CLI) can operate on the same kind of data structures. These languages can therefore use the FCL and other .NET libraries that are also written in one of the CLI compliant languages. When the source code of such languages are compiled, the compiler generates platform-independent code in the Common Intermediate Language (CIL, also referred to as bytecode), which is stored in CLI assemblies. When a .NET app runs, the just-in-time compiler (JIT) turns the CIL code into platform-specific machine code. To improve performance, .NET Framework also comes with the Native Image Generator (NGEN), which performs ahead-of-time compilation to machine code.
This architecture provides language interoperability. Each language can use code written in other languages. Calls from one language to another are exactly the same as would be within a single programming language. If a library is written in one CLI language, it can be used in other CLI languages. Moreover, apps that consist only of pure .NET assemblies, can be transferred to any platform that contains an implementation of CLI and run on that platform. For example, apps written using .NET can run on Windows, macOS, and various versions of Linux.
.NET apps or their libraries, however, may depend on native platform features, e.g. COM. As such, platform independence of .NET apps depends on the ability to transfer necessary native libraries to target platforms. In 2019, the Windows Forms and Windows Presentation Foundation portions of .NET Framework were made open source.[2]
.NET implementations
[edit]
This section's factual accuracy may be compromised due to out-of-date information. (July 2022) |
There are four primary .NET implementations that are actively developed and maintained:
- .NET Framework: The original .NET implementation that has existed since 2002. While not yet discontinued, Microsoft does not plan on releasing its next major version, 5.0.[3]
- Mono: A cross-platform implementation of .NET Framework by Ximian, introduced in 2004. It is free and open-source. It is now developed by Xamarin, a subsidiary of Microsoft.
- Universal Windows Platform (UWP): An implementation of .NET used for building UWP apps. It's designed to unify development for different targeted types of devices, including PCs, tablets, phablets, phones, and the Xbox.
- .NET: A cross-platform re-implementation of .NET Framework, introduced in 2016 and initially called .NET Core. It is free and open-source. .NET superseded .NET Framework with the release of .NET 5.[4]
Each implementation of .NET includes the following components:
- One or more runtime environments, e.g. Common Language Runtime (CLR) for .NET Framework and CoreCLR for .NET
- A class library
The .NET Standard is a set of common APIs that are implemented in the Base Class Library of any .NET implementation. The class library of each implementation must implement the .NET Standard, but may also implement additional APIs. Traditionally, .NET apps targeted a certain version of a .NET implementation, e.g. .NET Framework 4.6.[5][6] Starting with the .NET Standard, an app can target a version of the .NET Standard and then it could be used (without recompiling) by any implementation that supports that level of the standard. This enables portability across different .NET implementations.
The following table lists the .NET implementations that adhere to the .NET Standard and the version number at which each implementation became compliant with a given version of .NET Standard. For example, according to this table, .NET Core 3.0 was the first version of .NET Core that adhered to .NET Standard 2.1. This means that any version of .NET Core bigger than 3.0 (e.g. .NET Core 3.1) also adheres to .NET Standard 2.1.
| Implementation | Versions of the .NET Standard[7][8][9] | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| 1.0 | 1.1 | 1.2 | 1.3 | 1.4 | 1.5 | 1.6 | 2.0 | 2.1 | |
| .NET | 1.0 | 2.0 | 3.0 | ||||||
| .NET Framework | 4.5 | 4.5 | 4.5.1 | 4.6 | 4.6.1 | 4.7.2[a] | 4.7.2[a] | 4.7.2[a] | —[b] |
| Mono | 4.6 | 5.4 | 6.2 | ||||||
| Xamarin.iOS | 10.0 | 10.14 | 12.12 | ||||||
| Xamarin.Mac | 3.0 | 3.8 | 5.12 | ||||||
| Xamarin.Android | 7.0 | 8.0 | 9.3 | ||||||
| Universal Windows Platform | 8[c] | 8[c] | 8.1[c] | 10 | 10 | 10 v1709 | —[d] | ||
| Unity | 2018.1 | 2021.2 | |||||||
| Windows Phone | 8.1[c] | — | |||||||
| Windows Phone, via Silverlight | 8[c] | — | |||||||
Web frameworks
[edit]First released in 2002, ASP.NET is an open-source server-side web application framework designed for web development to produce dynamic web pages. It is the successor to Microsoft's Active Server Pages (ASP) technology, built on the Common Language Runtime (CLR).
ASP.NET was completely rewritten in 2016 as a modular web framework, together with other frameworks like Entity Framework. The re-written framework uses the new open-source .NET Compiler Platform (also known by its codename "Roslyn") and is cross platform. The programming models ASP.NET MVC, ASP.NET Web API, and ASP.NET Web Pages (a model using only Razor pages) were merged into a unified MVC 6.[10]
Blazor is a free and open-source web framework that enables developers to create Single-page Web apps using C# and HTML in ASP.NET Razor pages ("components"). Blazor is part of the ASP.NET Core framework. Blazor Server apps are hosted on a web server, while Blazor WebAssembly apps are downloaded to the client's web browser before running. In addition, a Blazor Hybrid framework is available with server-based and client-based application components.
Numerical libraries
[edit]This section needs expansion. You can help by adding to it. (April 2016) |
Open-source numerical libraries
[edit]This is a computer vision and artificial intelligence library. It implements a number of genetic, fuzzy logic and machine learning algorithms with several architectures of artificial neural networks with corresponding training algorithms.
This is a cross-platform open source numerical analysis and data processing library. It consists of algorithm collections written in different programming languages (C++, C#, FreePascal, Delphi, VBA) and has dual licensing – commercial and GPL.
This library aims to provide methods and algorithms for numerical computations in science, engineering and everyday use. Covered topics include special functions, linear algebra, probability models, random numbers, interpolation, integral transforms and more. MIT/X11 license.[11]
This is a library for advanced scientific computation in the .NET Framework.
This is a free software machine learning library. The preview release of ML.NET included transforms for feature engineering like n-gram creation, and learners to handle binary classification, multi-class classification, and regression tasks. Additional ML tasks like anomaly detection and recommendation systems have since been added, and other approaches like deep learning will be included in future versions.
Proprietary numerical libraries
[edit]This is a high performance, typesafe numerical array set of classes and functions for general math, FFT and linear algebra. The library, developed for .NET/Mono, aims to provide 32- and 64-bit script-like syntax in C#, 2D & 3D plot controls, and efficient memory management. It is released under GPLv3 or commercial license.[11]
This is a integrated suite of UI controls and class libraries for use in developing test and measurement applications. The analysis class libraries provide various digital signal processing, signal filtering, signal generation, peak detection, and other general mathematical functionality.
This is a numerical component library for the .NET platform developed by CenterSpace Software. It includes signal processing (FFT) classes, a linear algebra (LAPACK & BLAS) framework, and a statistics package.[11]
3D graphics
[edit]Open-source 3D graphics
[edit]Open Toolkit (OpenTK)
[edit]This is a low-level C# binding for OpenGL, OpenGL ES and OpenAL. It runs on Windows, Linux, Mac OS X, BSD, Android and iOS. It can be used standalone or integrated into a GUI.
This is a graphical subsystem for rendering user interfaces, developed by Microsoft. It also contains a 3D rendering engine. In addition, interactive 2D content can be overlaid on 3D surfaces natively.[12][13] It only runs on Windows operating systems.
Proprietary 3D graphics
[edit]This is a cross-platform game engine developed by Unity Technologies[14] and used to develop video games for PC, consoles, mobile devices and websites.
Image processing
[edit]This is a computer vision and artificial intelligence library.[15][16] It implements a number of image processing algorithms and filters. It is released under the LGPLv3 and partly GPLv3 license. Majority of the library is written in C# and thus cross-platform.[citation needed] Functionality of AForge.NET has been extended by the Accord.NET library.[17][18]
This is another computer vision and artificial intelligence library, available under the Gnu Lesser General Public License, version 2.1. It is mainly written in C#.
Graphical user interface
[edit]These are C# wrappers around the underlying GTK+ and GNOME libraries, written in C and available on Linux, MacOS and Windows.[19]
Windows Forms (WinForms)
[edit]This is a Microsoft GUI framework. The original Microsoft implementation runs on Windows operating systems and provides access to Windows User Interface Common Controls by wrapping the Windows API in managed code.[20] The alternative Mono implementation is open source and cross-platform (it runs on Windows, Linux, Unix and OS X). It is mainly compatible with the original implementation but not completely. The library is written in C# in order to avoid Windows dependence.[21] At the Microsoft Connect event on December 4, 2018, Microsoft announced releasing of Windows Forms as open source project on GitHub.[22] It is released under the MIT License. Windows Forms has become available for projects targeting the .NET framework. However, the framework is still available only on Windows platform and the Mono incomplete implementation of WinForms remains the only cross-platform implementation.[23][24]
This is a graphical subsystem for rendering user interfaces in Windows-based applications by Microsoft. It is based on DirectX and employs XAML, an XML-based language, to define and link various interface elements.[25] WPF applications can be deployed as standalone desktop programs or hosted as an embedded object in a website.[citation needed] At the Microsoft Connect event on December 4, 2018, Microsoft announced releasing of WPF as open source project on GitHub.[22] It is released under the MIT License. Windows Presentation Foundation has become available for projects targeting the .NET framework. However, the system is still available only on Windows platform.[23][24]
Windows UI Library (WinUI)
[edit]This is a set of Microsoft UI controls and features for the Universal Windows Platform (UWP). At the Microsoft Connect event on December 4, 2018, Microsoft announced releasing of WinUI as open source project on GitHub.[22] WinUI has become available for projects targeting the .NET framework. It is released under the MIT License. However, the library is still available only on Windows platform.[23][24]
This is a cross-platform UI toolkit for development of native user interfaces that can be run on macOS, iOS, Android, and Universal Windows Platform apps.[26][27][19]
.NET Multi-platform App UI (.NET MAUI)
[edit]This is a cross-platform UI toolkit announced in May 2020 that originated as a fork of Xamarin.Forms and that can run on Android, iOS, Linux, macOS, Tizen, and Windows. .NET MAUI will run on .NET 6 and later.[28][29][30] The source code is licensed under MIT License and available on GitHub.[29]
This is an open-source cross-platform UI toolkit for development of user interfaces that can be run on Windows, Linux, macOS, iOS, Android, and WebAssembly. The source code is licensed under MIT License and available on GitHub[31]
Quality assurance
[edit]This is an open source unit testing framework for .NET, written in C# and thus cross-platform. It is one of many programs in the xUnit family. Licensed under MIT License.
Object–relational mapping
[edit].NET Framework natively provides utilities for object–relational mapping[32] through ADO.NET, a part of the .NET stack since version 1.0. In the earlier years of .NET development, a number of third-party object–relational libraries emerged in order to fill some perceived gaps in the framework.[33][34][35] As the framework evolved, additional object–relational tools were added, such as the Entity Framework and LINQ to SQL, both introduced in .NET Framework 3.5. These tools reduced the significance and popularity of third-party object–relational libraries.
This is an open source[36] object–relational mapping (ORM) framework for ADO.NET. It was a part of .NET Framework, but since Entity framework version 6 it is separated from .NET framework.
NHibernate is an object–relational mapper for the .NET platform.
Notes
[edit]- ^ a b c Nuget mistakenly believes that .NET Framework 4.6.1 adheres to .NET Standard version 1.5 through 2.0.[7][8]
- ^ There are no plans for the .NET Framework to support .NET Standard 2.1
- ^ a b c d e Microsoft has removed Windows 8, Windows 8.1, Windows Phone 8 and Windows Phone 8.1 from its tables, as they are deprecated.[37] .NET Foundation has only removed Windows Phone 8.0 and 8.1.[38]
- ^ UWP doesn't support .NET Standard 2.1
References
[edit]- ^ gewarren. "Common Language Runtime (CLR) overview - .NET". docs.microsoft.com. Retrieved 2022-08-07.
- ^ Hanselman, Scott (4 December 2018). "Announcing WPF, WinForms, and WinUI are going Open Source". Scott Hanselman's Blog2.
- ^ Lander, Richard (6 May 2019). "Introducing .NET 5". .NET Blog. Microsoft.
- ^ "Announcing .NET 5.0". .NET Blog. 2020-11-10. Retrieved 2021-03-14.
- ^ Hanselman, Scott (2 April 2012). ".NET Versioning and Multi-Targeting - .NET 4.5 is an in-place upgrade to .NET 4.0". Scott Hanselman's Blog.
- ^ "Multi-Targeting Guidelines for Tools for Managed Code [Mircea]". BCL Team Blog. Microsoft. 11 April 2012.
- ^ a b ".NET Standard". Microsoft Learn. Microsoft.
- ^ a b ".NET Standard". dotnet.microsoft.com. Microsoft. Retrieved 2025-03-18.
- ^ Landwerth, Immo (September 15, 2020). "The future of .NET Standard". .NET Blog. Microsoft Developer Blogs. Retrieved 2025-03-18.
- ^ "Introduction to ASP.NET 5 — ASP.NET 0.0.1 documentation". asp.net.
- ^ a b c "Guide - Math and Statistics Programming with F#". fsharp.org. Archived from the original on 2016-04-25. Retrieved 2016-04-25.
- ^ Introducing Windows Presentation Foundation
- ^ "What's New in WPF 3.5? Here's Fifteen Cool Features..." Retrieved 2007-10-14.
- ^ Riccitiello, John (October 23, 2014). "John Riccitiello sets out to identify the engine of growth for Unity Technologies (interview)". VentureBeat (Interview). Interviewed by Dean Takahashi. Retrieved January 18, 2015.
- ^ S M Hassan Ahmed; Todd C Alexander; Georgios Anagnostopoulos (May 2015). "Real-time, Static and Dynamic Hand Gesture Recognition for Human-Computer Interaction". University of Miami. Retrieved 2018-11-26.
- ^ Suraj Verma; Prashant Pillai; Yim-Fun Hu (2012). "Development of an eye-tracking control system using AForge.NET framework". International Journal of Intelligent Systems Technologies and Applications. 11 (3/4). Inderscience Enterprises: 286. doi:10.1504/IJISTA.2012.052485. Archived from the original on 2018-11-26. Retrieved 2018-11-26.
- ^ Souza, César (20 May 2010). "Accord.NET Framework – An extension to AForge.NET". Archived from the original on 2018-11-16. Retrieved 2018-11-26.
- ^ "Framework Modules". Accord.NET Framework documetation. Archived from the original on 2018-11-26. Retrieved 2018-11-26.
- ^ a b Lex Li (3 July 2017). "The Story About .NET Cross Platform UI Frameworks". 3 July 2017. Archived from the original on 2019-01-10. Retrieved 2018-11-26.
{{cite web}}: CS1 maint: bot: original URL status unknown (link) - ^ "C# 4.0 Unleashed By Bart De Smet. Sams Publishing, Jan 4, 2011 Chapter 5".
- ^ "GUI Toolkits". Mono site. 21 April 2016. Archived from the original on 2016-04-02. Retrieved 2016-04-21.
- ^ a b c Gallo, Kevin (2018-12-04). "Announcing Open Source of WPF, Windows Forms, and WinUI at Microsoft Connect(); 2018". Windows Developer Blog. Official Microsoft Blog. Retrieved 2021-10-09.
- ^ a b c Martin, Jeff (4 December 2018). "Microsoft Open Sources WPF, WinForms, and WinUI". InfoQ. Retrieved 2018-12-06.
- ^ a b c Hanselman, Scott (4 December 2018). "Announcing WPF, WinForms, and WinUI are going Open Source". Retrieved 2018-12-06.
- ^ MSDN.NET Development: WPF: XAML Overview
- ^ "Xamarin.Forms Quickstart". Microsoft Docs. Microsoft. Retrieved 2018-11-26.
- ^ Nathan Williams. "Xamarin.Forms is Much More Capable Than You Think". ArcTouch. Archived from the original on 2018-11-26. Retrieved 2018-11-26.
- ^ "Introducing .NET Multi-platform App UI". .NET Blog. 2020-05-19. Retrieved 2020-05-28.
- ^ a b "dotnet/maui". GitHub. Retrieved 2020-05-28.
- ^ "Xamarin Updates From Microsoft Build 2020". Xamarin Blog. 2020-05-19. Retrieved 2020-05-28.
- ^ Avalonia on GitHub
- ^ Ambler, Scott. "Mapping Objects to Relational Databases: O/R Mapping In Detail". Agile Data. Archived from the original on 2018-11-03. Retrieved 2018-11-03.
- ^ Maksimovic, Zoran (November 2, 2017). "Microsoft.NET O/R mapper: choose your own!". agile-code.com. Archived from the original on 2018-11-03. Retrieved 2018-11-03.
- ^ "List of ORM's available for .NET". Bala.NET Tips. WordPress. February 28, 2014. Retrieved 2018-11-03.
- ^ "Object Relational Tool Comparison Dot Net". WikiWikiWeb. April 10, 2014. Archived from the original on 2018-11-03. Retrieved 2018-11-03.
- ^ Krill, Paul (20 July 2012). "Microsoft open-sources Entity Framework". InfoWorld. Retrieved 24 July 2012.
- ^ "Update .NET Standard table (#10697) · dotnet/Docs@619885c". GitHub.
- ^ "Remove deprecated platforms · dotnet/Standard@8a5b1ff". GitHub.
External links
[edit]General:
- .NET Open Source Developer Projects, a list maintained at GitHub
Numerical libraries:
- The Math Forum - Math Libraries, an extensive list of mathematical libraries with short descriptions
- Guide - Math and Statistics Programming with F# Archived 2016-04-25 at the Wayback Machine
Data:
List of .NET libraries and frameworks
View on GrokipediaIntroduction
Overview of the .NET Ecosystem
.NET is a free and open-source developer platform built by Microsoft for creating a wide range of applications, including web, mobile, desktop, and cloud-native solutions.[8] It provides developers with tools, programming languages like C#, and libraries to build secure, reliable, and high-performance software that runs across multiple operating systems.[9] The platform emphasizes productivity through modern features such as automatic memory management and type safety, enabling efficient development for diverse scenarios from console apps to microservices.[10] The .NET ecosystem originated with the .NET Framework in 2002, a Windows-specific platform that introduced managed code execution and a rich class library for building applications. In 2016, Microsoft released .NET Core 1.0, an open-source, modular, and cross-platform evolution designed for server and cloud workloads, addressing limitations of the original framework.[11] The unification of these branches began with .NET 5 in November 2020, merging APIs, tools, and runtimes into a single platform to simplify development across mobile, desktop, and web.[12] Subsequent annual releases have continued this trajectory, including .NET 6 (November 2021), .NET 7 (November 2022), .NET 8 (November 2023), .NET 9 (November 2024), and .NET 10 (November 2025), the latest Long-Term Support (LTS) release featuring enhanced AI integration, runtime performance boosts, and developer productivity improvements.[13][14] At its core, .NET relies on the Common Language Runtime (CLR), which manages code execution, provides garbage collection for memory management, and ensures type safety and exception handling.[15] Complementing the CLR is the Base Class Library (BCL), a comprehensive set of reusable types and APIs for tasks like file I/O, networking, and data structures, forming the foundation for application development.[4] Libraries and frameworks are distributed and managed via NuGet, the official package manager, which hosts hundreds of thousands of packages to extend .NET functionality. .NET libraries come in various forms, including class libraries that provide reusable code components—such as portable class libraries compatible with multiple platforms or platform-specific ones tied to environments like Windows—and higher-level frameworks that offer abstractions for specific domains, like web development.[16] These components integrate through assemblies, which are deployable units containing compiled code, and are organized into namespaces for logical grouping and to avoid naming conflicts.[17] The platform's benefits include robust cross-platform support for Windows, Linux, and macOS, enabling a single codebase across environments, alongside significant performance enhancements in recent versions, such as optimized runtime execution and reduced memory usage.[8][18] This expansive ecosystem, bolstered by over 300,000 NuGet packages, fosters rapid innovation and community contributions.[8].NET Implementations and Runtimes
The .NET ecosystem encompasses several runtime implementations that execute .NET code, each designed for specific platforms and use cases. These runtimes provide the Common Language Runtime (CLR) environment, including just-in-time (JIT) compilation, garbage collection, and type safety, enabling developers to build applications with managed code. Key implementations include the legacy .NET Framework, the modern cross-platform .NET, and open-source alternatives like Mono, which have evolved to support diverse deployment scenarios from desktop to mobile and embedded systems. The .NET Framework is a Windows-only runtime that serves as the foundational implementation for many enterprise applications. It includes the full Common Language Runtime (CLR) and a comprehensive class library, supporting versions from 1.0 (2002) up to 4.8.1, which was released in August 2022 as the final major update. This runtime excels in legacy Windows desktop and server environments, powering applications with integrated Windows API access and features like Windows Forms and Windows Presentation Foundation. Its role in enterprise settings remains significant due to backward compatibility and extensive tooling support, though it lacks cross-platform capabilities. In contrast, .NET (previously known as .NET Core) is a free, open-source, cross-platform runtime that unifies development across Windows, macOS, Linux, Android, iOS, and more. Built on the lightweight CoreCLR, it introduces a modular architecture allowing developers to include only necessary components for smaller deployments. Starting with .NET 5 in 2020, it represents a unified platform merging .NET Framework and .NET Core APIs, with ongoing support through long-term support (LTS) releases like .NET 8 (2023). A key advancement is ahead-of-time (AOT) compilation, introduced in .NET 7 (2022), which compiles code to native binaries at build time for faster startup and reduced memory usage, particularly beneficial for cloud-native and mobile apps. Mono provides an open-source .NET implementation primarily for non-Windows platforms, originating in 2004 to enable .NET development on Linux and other systems. It uses its own CLR variant and has been instrumental in projects like Xamarin for mobile development and Unity for game engines. The latest stable Mono release, 6.12.0, arrived in February 2021, but Microsoft integrated Mono's runtime components into the main .NET project starting with .NET 6 (2021), enhancing cross-platform support for iOS and Android without a separate Mono distribution. This integration allows Mono-compatible code to run seamlessly on the unified .NET runtime. For .NET MAUI (Multi-platform App UI), the runtime leverages the cross-platform .NET CoreCLR with specific extensions for native UI rendering. It supports Blazor Hybrid, where Blazor components render natively using platform-specific WebViews (e.g., WKWebView on iOS, WebView2 on Windows), combining web technologies with native performance across desktop and mobile platforms. This approach enables single-project development for multiple targets while maintaining runtime compatibility with standard .NET libraries. Compatibility across these runtimes is facilitated by .NET Standard, a set of APIs defining portable library contracts. Versions range from 1.0 (2016) to 2.1 (2019), allowing libraries to target multiple runtimes without modification; for instance, .NET Standard 2.0 is supported by .NET Framework 4.6.1+ and .NET Core 2.0+. Deployment optimizations include trimming, which removes unused code to reduce app size, and ready-to-run (RTR) compilation, pre-JITing assemblies for quicker startup, both prominent in .NET since version 3.0 (2019). Performance in .NET runtimes relies on JIT compilation, which dynamically translates intermediate language (IL) to native code at runtime, and a generational garbage collector that manages memory in three generations (0 for short-lived objects, 1 and 2 for longer-lived ones) to minimize pauses. The RyuJIT optimizer, introduced in .NET Core 2.0 (2017), enhances this with improved instruction selection and loop optimizations, yielding up to 20-30% better throughput in benchmarks compared to prior versions, particularly for server workloads. These features underscore the runtimes' efficiency in handling high-scale applications.Web Development Frameworks
ASP.NET Core
ASP.NET Core is a modular, open-source, cross-platform web framework developed by Microsoft for building modern, cloud-based web applications and APIs using the .NET platform.[19] It supports development on Windows, Linux, and macOS, enabling high-performance server-side rendering of dynamic web pages and services.[19] The framework emphasizes modularity, allowing developers to include only necessary components to minimize overhead, and it integrates seamlessly with the .NET ecosystem for full-stack development.[19] The framework evolved from the traditional ASP.NET, which was Windows-specific and separated into MVC for web apps and Web API for services; ASP.NET Core unified these into a single, lightweight model starting with .NET 5 in 2020, redesigning for cross-platform compatibility and performance.[19] This unification eliminated legacy dependencies, introducing a streamlined architecture that supports both MVC patterns and page-based models via Razor.[19] In .NET 6 (released November 2021), minimal APIs were added to simplify HTTP endpoint creation with minimal boilerplate, ideal for microservices and lightweight APIs using just a few lines of code likeapp.MapGet("/", () => "Hello World");.[20] The .NET 10 release (November 2025) further refines minimal APIs with improved validation, OpenAPI enhancements, and better cloud-native optimizations.[7]
Core features include the middleware pipeline, a sequence of delegating handlers that process HTTP requests and responses in a configurable order, enabling custom request handling such as authentication or logging.[21] Kestrel serves as the default cross-platform web server, supporting high-concurrency workloads with HTTP/1.1, HTTP/2, and WebSockets, and it operates in in-process hosting (within the app process for optimal performance) or out-of-process mode (e.g., behind IIS for additional features).[22] Razor provides a syntax for embedding C# in HTML to generate dynamic views and pages, while the built-in dependency injection (DI) container manages service lifetimes (singleton, scoped, transient) and resolves dependencies automatically.[21] Key components encompass endpoint routing, which matches URLs to handlers using templates and constraints (e.g., {id:int} for integer parameters), and ASP.NET Core Identity, a membership system for user authentication, authorization, roles, and external provider integration like OAuth.[23][24]
Performance benchmarks demonstrate ASP.NET Core's efficiency, consistently ranking among the top frameworks in TechEmpower Web Framework Benchmarks, with JSON serialization throughput reaching approximately 742,000 requests per second in Round 23 (February 2025).[25] It supports integration with gRPC for high-performance RPC services, where gRPC endpoints leverage ASP.NET Core's DI and logging for streamlined microservice communication.[26] SignalR enables real-time features like live updates, integrating directly into the middleware pipeline for bidirectional client-server messaging.[27] For deployment, apps can be published as self-contained executables including the .NET runtime for platform independence or framework-dependent to reduce size, with native Docker support via dotnet publish /t:PublishContainer for containerized environments.[28] Azure integration allows seamless hosting on App Service, where apps deploy via Visual Studio or CLI, configuring settings through the portal for scalable, managed execution.[29]
Blazor
Blazor is a free and open-source web framework developed by Microsoft for building interactive client-side web user interfaces using C# and .NET, rather than JavaScript. It leverages Razor syntax to combine HTML markup with C# code in reusable components, enabling developers to create rich, dynamic applications that run either server-side or client-side in the browser. Blazor supports a unified development model across different hosting environments, allowing for seamless integration of server-side rendering with client interactivity.[30][31] Blazor operates through three primary hosting models. In Blazor Server, components execute on the server, with user interface events and updates transmitted to the client via a SignalR connection for real-time synchronization, resulting in low-latency interactions without requiring a download of the .NET runtime. Blazor WebAssembly runs the full .NET runtime directly in the browser using WebAssembly, enabling client-side execution of C# code for offline-capable applications, though it involves an initial download of the runtime. Blazor Hybrid extends this to native desktop and mobile applications, such as those built with .NET MAUI, by embedding components in a web view for cross-platform UI development.[32][30] Blazor components are defined in .razor files using Razor syntax, which blends HTML with C# directives for declarative UI construction, such as@onclick for event handling and parameter binding for data flow between components. State management is handled through built-in mechanisms like component parameters, cascading values for propagating data down the component tree, and dependency injection services for shared application state; third-party libraries like Fluxor can implement more advanced patterns such as Flux for predictable state updates. These components render efficiently via a lightweight DOM diffing algorithm that minimizes updates to the browser's DOM.[33][34]
Introduced experimentally in 2018, Blazor entered official preview in 2019 and achieved full release with Blazor WebAssembly in .NET 5 in 2020, marking its maturity as a production-ready framework. The .NET 8 release in 2023 introduced static server-side rendering for faster initial page loads and ahead-of-time (AOT) compilation for WebAssembly to enhance runtime performance by reducing just-in-time compilation overhead. The .NET 10 release in November 2025 brings further Blazor enhancements, including improved hybrid rendering modes, better form handling, and optimized interactive server rendering with WebSocket compression.[35][36][37][7]
Performance optimizations in Blazor focus on minimizing payload sizes and execution times; for instance, Blazor WebAssembly apps can achieve gzipped bundle sizes under 2 MB for minimal configurations through techniques like runtime relinking, assembly trimming, and compression. Rendering speeds in Blazor are competitive with JavaScript frameworks like React, particularly after initial load, due to its virtual DOM-like diffing, though JavaScript frameworks may have advantages in startup time. Common use cases include single-page applications (SPAs) for responsive web experiences and progressive web apps (PWAs) that support offline functionality and installable behaviors via service workers.[38][39][40]
SignalR
SignalR is an open-source library for the .NET ecosystem that enables real-time web functionality in applications by facilitating bidirectional communication between server and client over HTTP.[27] It abstracts the complexities of transport protocols, allowing developers to build features like live updates without managing low-level connections.[41] Originally developed for the .NET Framework around 2011, SignalR evolved to support cross-platform deployment starting with .NET Core 2.1 in 2018, extending its reach to Linux and macOS environments while maintaining compatibility with JavaScript and TypeScript clients for web and mobile applications.[27] This evolution has made it a versatile tool for modern, scalable real-time systems. In .NET 10 (November 2025), SignalR gains improvements like enhanced WebSocket compression for better performance in Blazor Server scenarios.[42] At its core, SignalR relies on hubs to enable remote procedure calls (RPCs) for bidirectional messaging, where clients invoke server methods and servers push updates to clients.[43] It establishes persistent connections that automatically negotiate the best available transport, falling back from WebSockets (for full-duplex communication) to Server-Sent Events or Long Polling if needed to ensure compatibility across browsers and networks.[41] Key features include support for groups, which allow broadcasting messages to subsets of connected clients, and user identification, enabling targeted notifications based on user context rather than individual connections.[44] Streaming capabilities, introduced in .NET 5, further extend this by supporting upload and download streams for efficient handling of large or continuous data flows, such as video feeds or real-time analytics. SignalR integrates seamlessly with ASP.NET Core, leveraging its middleware pipeline for enhanced scalability through a Redis backplane in clustered environments, which distributes messages across multiple server instances to handle up to 1 million concurrent connections.[45] Common use cases include live chat applications for instant messaging, push notifications for alerts, interactive dashboards for monitoring system metrics, and gaming lobbies for multiplayer coordination.[27] For security, it supports authentication via JWT bearer tokens for API-like scenarios or cookies for browser-based flows, ensuring only authorized users access hubs.[46] Additionally, message serialization can use MessagePack for compact, binary encoding to reduce bandwidth and improve performance over JSON.[47] In Blazor Server apps, SignalR powers the underlying transport for real-time UI updates from the server.[42]User Interface Frameworks
Windows Forms
Windows Forms is an event-driven graphical user interface (GUI) framework designed for developing Windows desktop applications within the .NET ecosystem. It enables developers to create rich, interactive user interfaces using a visual drag-and-drop designer integrated into Visual Studio, where controls such as buttons, text boxes, and menus can be placed on forms to build responsive applications. The framework's architecture relies on the System.Windows.Forms namespace, where all controls inherit from base classes like Control, facilitating event handling and user interactions through a message loop that processes Windows messages. Rendering is handled via GDI+ for 2D graphics, ensuring compatibility with the Windows operating system's native drawing capabilities.[48][49] Introduced with the .NET Framework 1.0 in February 2002, Windows Forms has evolved alongside the .NET platform, maintaining backward compatibility while receiving updates for modern development needs, including async form support, dark mode, and modern icon APIs in .NET 9 (November 2024). It continues to be supported in .NET 6 and later versions through compatibility layers, allowing existing applications to run on the unified .NET runtime, though Microsoft positions it primarily for maintaining legacy systems rather than new greenfield projects. Key features include robust data binding, which connects UI controls to data sources like databases or collections for automatic synchronization; support for Multiple Document Interface (MDI) applications, enabling child windows within a parent form for complex layouts; and built-in accessibility compliance via integration with UI Automation (UIA), which exposes UI elements to assistive technologies for users with disabilities.[50][51][52][53][54] In terms of performance, Windows Forms leverages native Win32 interop for its controls, providing efficient rendering and responsiveness on Windows platforms by directly interfacing with the operating system's APIs. However, it faced limitations in high-DPI scaling prior to .NET Framework 4.7, where applications might appear blurry or improperly scaled on high-resolution displays without explicit DPI awareness configuration; enhancements in .NET 4.7 and later introduced automatic per-monitor DPI support and new events for dynamic scaling changes. Common use cases encompass simple business applications, such as inventory tools or data entry forms, and facilitating migrations from older technologies like Visual Basic 6 (VB6), where its familiar control model eases porting efforts. Despite these strengths, Windows Forms is inherently Windows-only, lacking native cross-platform support without third-party wrappers, which restricts its deployment to non-Windows environments. For applications requiring more advanced features, transitions to frameworks like Windows Presentation Foundation (WPF) offer paths for modernization.[55][56][48]Windows Presentation Foundation
Windows Presentation Foundation (WPF) is a graphical subsystem within the .NET ecosystem designed for creating vector-based desktop applications on Windows, emphasizing rich, interactive user interfaces through declarative markup and hardware-accelerated rendering.[57] At its core, WPF utilizes XAML (Extensible Application Markup Language) for defining UI layouts and behaviors declaratively, separating design from code to enable designer-developer workflows. The framework organizes UI elements via logical trees, which represent the hierarchical structure of controls, and resource trees, which manage shared assets like styles and brushes for efficient reuse across the application. Its rendering pipeline leverages DirectX for GPU-accelerated composition, processing visual elements into a scene graph that is transformed and rasterized for display, with fallback to software rendering when hardware is unavailable.[58] WPF was initially released in November 2006 as part of .NET Framework 3.0, marking a shift toward modern UI development with support for resolution-independent graphics and multimedia integration.[59] Subsequent enhancements in .NET Framework 4.0 (2010) introduced touch input support, enabling multi-touch gestures for tablet interactions, while later versions like .NET Framework 4.5 (2012) improved performance for high-DPI scenarios and layout virtualization.[60] In 2018, WPF was open-sourced under the MIT license and ported to .NET Core, with full compatibility maintained in .NET 6 and later via the Windows Desktop runtime pack, including Windows 11 theming with light and dark mode support in .NET 9 (November 2024), allowing continued development on modern .NET versions without legacy dependencies. Key features of WPF include data templates for binding UI to dynamic data sources, enabling flexible presentation of collections without hardcoding layouts; storyboard-based animations for smooth transitions and effects using timelines and keyframes; built-in 3D graphics support for rendering geometric models with lighting and transformations; and styling mechanisms with themes that apply consistent visual properties across controls, akin to CSS for desktop UIs. WPF achieves high performance through hardware acceleration via DirectX 9 and later, offloading vector graphics, compositing, and effects to the GPU, which supports smooth rendering even for complex scenes.[58] WPF integrates seamlessly with Windows Ink APIs for capturing and processing handwriting input via controls like InkCanvas, supporting real-time recognition and manipulation of strokes. It also facilitates hybrid development with .NET MAUI, where WPF controls can be embedded in cross-platform apps through hosting mechanisms, bridging desktop-specific richness with multi-platform deployment. Common use cases for WPF include enterprise line-of-business (LOB) applications, such as CRM systems and data dashboards that require customizable, data-driven interfaces; media players leveraging its multimedia and 3D capabilities for immersive playback; and custom control libraries for specialized industries like finance or healthcare, where precise vector rendering ensures scalability across display resolutions.[57] For advanced 3D scenarios, WPF supports high-level extensions through interop with libraries like OpenTK..NET Multi-platform App UI
.NET Multi-platform App UI (.NET MAUI) is a cross-platform framework from Microsoft for building native applications across mobile and desktop platforms using C# and XAML, abstracting platform-specific APIs into a unified interface.[61] It enables developers to target Android, iOS, macOS, Windows from a single codebase, leveraging the .NET runtime for shared logic and UI elements.[62] As the evolution of Xamarin.Forms, which provided cross-platform mobile development from 2014 until its end of support in May 2024, .NET MAUI was first released with .NET 6 in November 2021 and has seen significant enhancements, including the .NET MAUI Community Toolkit, improved Blazor Hybrid support in .NET 8 (November 2023), and performant handlers for CollectionView and CarouselView on iOS and Mac Catalyst, along with new Blazor Hybrid templates in .NET 9 (November 2024).[63][64][65] The architecture of .NET MAUI centers on a single project structure that simplifies development by consolidating shared code, resources, and configurations into one location, while allowing platform-specific customizations through conditional compilation and folders.[66] Platform-specific rendering is handled via customizable handlers that map .NET MAUI controls to native UI elements, such as UIKit on iOS and macOS (via Mac Catalyst), WinUI 3 on Windows, and Android views on Android. Key features include XAML for declarative UI design, support for Model-View-ViewModel (MVVM) patterns to separate concerns, and Shell for streamlined navigation with built-in routing and tabs. It provides cross-platform APIs for device features like sensors, networking, and graphics, enabling consistent behavior across targets. Performance in .NET MAUI benefits from native compilation options, including Ahead-of-Time (AOT) compilation for iOS and macOS to produce optimized binaries without JIT overhead, resulting in compact app sizes for minimal applications. Development tooling includes .NET Hot Reload for real-time XAML and C# edits without full rebuilds, Fast Deployment for accelerated initial app deployment particularly on Android, which operates compatibly with Hot Reload to enhance development cycles—Hot Reload requires an active debug session but is unaffected by the initial deployment method—the MAUI workload installable via the .NET SDK for command-line support, and integrated extensions in Visual Studio for project templates, debugging, and deployment.[67][68] Common use cases encompass enterprise mobile applications requiring device integration, cross-platform desktop hybrids for productivity tools, and scenarios blending native controls with web content via Blazor integration in web views.[69][70]Data Access and ORM Frameworks
Entity Framework
Entity Framework (EF) is an object-relational mapper (ORM) that enables .NET developers to interact with relational databases using domain-specific objects, abstracting away much of the low-level SQL code. It facilitates the creation of data access layers by mapping .NET classes to database tables and allowing queries via LINQ, which translates to SQL under the hood. EF supports both synchronous and asynchronous operations, making it suitable for modern .NET applications ranging from web services to desktop software.[6] EF exists in two primary variants: EF6, a legacy version designed specifically for the .NET Framework, and EF Core, a lightweight, extensible, open-source, and cross-platform iteration that targets .NET Standard 2.0 and later. EF6 remains stable for applications tied to the full .NET Framework but lacks ongoing development for new features. In contrast, EF Core is actively maintained, supports .NET 6 and higher, and runs on Windows, Linux, and macOS, enabling broader deployment scenarios like containerized environments.[71][6] Core features of EF include LINQ-based querying for type-safe data retrieval, automated migrations to evolve database schemas from code changes, change tracking to detect and persist entity modifications, and support for both code-first (defining models in code to generate the database) and database-first (scaffolding models from an existing database) approaches. These capabilities streamline CRUD (Create, Read, Update, Delete) operations, reducing boilerplate code while maintaining flexibility for complex relationships and validations.[6][72] The evolution of EF Core began with version 1.0 in June 2016, aligning with .NET Core's initial release to provide a modern ORM foundation. Subsequent versions have introduced enhancements like improved LINQ translation and batching in EF Core 2.0 (2017), many-to-many relationships without explicit join entities in 5.0 (2020), and JSON column mapping for SQL Server in 7.0 (2022). With EF Core 8.0 in November 2023 for .NET 8, additions include extended JSON mapping support for primitive collections in SQLite, enabling efficient storage and querying of JSON arrays, alongside ongoing improvements to temporal tables introduced in EF Core 6.0 for time-based data versioning. EF Core 9.0, released in November 2024 for .NET 9, brings improvements such as a rewritten Azure Cosmos DB provider, enhanced LINQ query translations, and better support for ahead-of-time (AOT) compilation and primitive collections.[73][74][75][76] EF Core integrates with various database providers, including the official Microsoft ones for SQL Server (supporting Azure SQL and SQL Server 2012+), SQLite (version 3.46.1+), and Azure Cosmos DB (SQL API), as well as the community-maintained Npgsql for PostgreSQL. Performance optimizations, such as compiled queries that pre-compile LINQ expressions to SQL for reuse, help mitigate query execution overhead in high-load scenarios.[77] Key patterns in EF Core revolve around the DbContext class, which serves as the primary interface for database interactions, managing a unit-of-work scope with configurable lifetime (e.g., scoped per HTTP request). Loading strategies include lazy loading for on-demand related data retrieval, eager loading via Include() for predefined joins, and explicit loading for controlled fetches; asynchronous methods like ToListAsync() ensure non-blocking operations in I/O-bound contexts. In practice, EF Core excels in CRUD operations for web and desktop applications, such as building REST APIs with ASP.NET Core or data-driven UIs in WPF, where its abstraction simplifies maintenance without sacrificing control. For read-heavy workloads, using AsNoTracking() disables change tracking to yield performance gains and reduced memory allocation. While full-featured, it contrasts with lightweight alternatives like Dapper for scenarios requiring minimal ORM overhead.[78][79]Dapper
Dapper is a lightweight micro-ORM library for .NET that facilitates mapping SQL query results to objects while minimizing boilerplate code associated with ADO.NET.[80] Developed to address performance bottlenecks in high-traffic applications, it emphasizes direct SQL usage without the overhead of full-featured ORMs, making it suitable for scenarios requiring raw query control and speed.[81] By extending the IDbConnection interface, Dapper enables developers to execute queries and map results seamlessly across various databases.[82] In terms of design, Dapper operates through extension methods on IDbConnection, allowing queries to be executed directly on existing database connections without introducing new abstractions.[80] It supports multi-mapping, where a single query result set can be split into multiple object types, such as joining parent-child entities in one call.[80] Additionally, it handles stored procedures by accepting command types and parameters, enabling execution of precompiled SQL for optimized performance.[83] Dapper was created in 2011 by the Stack Overflow development team to resolve slow page loads caused by ORM inefficiencies, and it was open-sourced shortly thereafter.[81] Integrated into NuGet from its early days, the library has seen ongoing contributions, including full asynchronous support in version 1.42 (2015) and enhancements for .NET global tools compatibility up to version 2.1.24 in 2023, with further updates through version 2.1.66 in February 2025 focusing on stability and cross-provider compatibility.[84][82] Key features include parameterized queries to mitigate SQL injection risks, dynamic parameters for flexible input handling, and built-in row numbering via query options for pagination.[80] Performance-wise, Dapper achieves 3-5 times faster execution than full ORMs like Entity Framework in benchmarks involving large datasets or high-throughput operations, often approaching raw ADO.NET speeds—for instance, handling up to 1 million inserts per second on SQL Server in optimized tests.[85] It integrates effortlessly with any ADO.NET provider, such as those for SQL Server, PostgreSQL, or Oracle, requiring no entity tracking, change detection, or schema migrations.[80] Common use cases include high-performance data access in RESTful APIs for microservices and reporting tools that demand quick reads from complex joins.[86] In hybrid setups, it can complement Entity Framework by handling performance-critical queries while leveraging EF for domain modeling.[87]NHibernate
NHibernate is an open-source object-relational mapping (ORM) framework for the .NET platform, designed to simplify data persistence by mapping .NET objects to relational databases. It implements the patterns and concepts from the Java-based Hibernate ORM, providing a robust layer for handling complex data access scenarios in enterprise applications. As a mature tool, NHibernate supports multiple databases through its extensible architecture, enabling developers to focus on domain logic rather than low-level SQL operations.[88] The core architecture of NHibernate revolves around the ISessionFactory, a thread-safe and immutable component that serves as a cache of compiled mappings for a single database and acts as a factory for ISession instances. The ISession represents a single-threaded, short-lived interaction with the database, managing the first-level cache and wrapping ADO.NET connections for object retrieval and persistence. Querying is facilitated through Hibernate Query Language (HQL), an object-oriented extension of SQL that supports polymorphism, associations, and aggregates, allowing queries likefrom Cat as cat where cat.Name = 'Fritz' to retrieve instances across class hierarchies. Additionally, the Criteria API enables dynamic query construction at runtime using an object-oriented approach, such as session.CreateCriteria<Cat>().Add(Expression.Like("Name", "Fritz%")), which is particularly useful for building filters based on user input without embedding strings.[89][90][91]
Originally ported from Java's Hibernate in 2005, NHibernate has evolved significantly, with version 5.0 released in 2017 introducing asynchronous support for I/O-bound operations and compatibility with .NET Core, enhancing its suitability for modern cross-platform applications. Subsequent versions, such as 5.4 and later up to 5.6.0 in October 2025, target .NET 6 and beyond, including .NET 9, ensuring ongoing relevance in contemporary .NET ecosystems.[92][93][94]
Key features include second-level caching, which shares data across sessions via providers like StackExchange.Redis for improved read performance in high-traffic scenarios, configurable through XML elements such as <cache usage="read-write"/> in mappings. Lazy loading defers the retrieval of associated entities until accessed, reducing initial query overhead while integrating seamlessly with caching to maintain data consistency. Mapping supports both XML-based definitions for explicit control over class-to-table relationships and convention-based approaches for simpler setups.[95]
Extensions like Fluent NHibernate provide a code-based alternative to XML mappings, using fluent APIs to define configurations programmatically, such as Map<T>().Id(x => x.Id).Table("Users"), promoting compile-time safety and reducing boilerplate. Integration with LINQ is achieved through NHibernate.Linq, allowing standard LINQ queries to be translated into HQL or SQL, bridging NHibernate with .NET's query syntax for more idiomatic code.[96]
For performance, NHibernate supports batch inserts via HQL DML statements, such as insert into User (Name) select Name from TempUser, which groups multiple operations into fewer database roundtrips to optimize bulk data loading. Query optimization is aided by tools like NHibernate Profiler, which identifies issues such as N+1 select problems and suggests fetch strategies to minimize database hits.[97][98]
NHibernate excels in use cases involving legacy enterprise systems, where its flexible mapping handles intricate schemas evolved over time, and complex domain models requiring advanced features like polymorphic queries and caching for scalability. In contrast to more convention-driven alternatives like Entity Framework, it offers greater customization for challenging persistence requirements.[90][88]
Numerical and Scientific Libraries
Math.NET Numerics
Math.NET Numerics is an open-source, cross-platform library for numerical, scientific, and engineering computations in the .NET ecosystem, providing implementations for linear algebra, probability models, statistics, optimization, and more.[99] It serves as the numerical foundation of the broader Math.NET project, offering managed code implementations that are extensible via pluggable providers for enhanced performance.[100] The library supports a wide range of .NET frameworks, including .NET Framework, .NET Core, .NET 5+, and .NET Standard 2.0+, making it suitable for both desktop and server applications as of November 2025, with the latest stable version 5.0.0 released in April 2022.[101][102] The library's core modules include linear algebra for handling vectors and matrices with operations like addition, multiplication, and decomposition; statistics for probability distributions, regression analysis, and hypothesis testing; and signal processing featuring fast Fourier transforms (FFT) for frequency-domain analysis.[99] Key algorithms encompass LU and QR decompositions for solving linear systems, eigenvalue solvers for stability analysis, and random number generators including the Mersenne Twister for simulations requiring high-quality pseudorandom sequences.[103] These components emphasize numerical stability and accuracy, drawing influences from established standards like BLAS and LAPACK.[100] Initiated in 2009 through the merger of the dnAnalytics and Math.NET Iridium projects, Math.NET Numerics has evolved to support modern .NET standards, with .NET Standard 2.0 compatibility introduced in version 4.0.0 released in 2018.[104] It integrates with Math.NET Symbolics, allowing numerical evaluations of symbolic expressions for hybrid computational workflows.[105] Performance is augmented by native providers such as Intel MKL or OpenBLAS, which can deliver significant speedups over the default managed provider in benchmarks for operations like dense matrix multiplication.[106] Math.NET Numerics offers strong F# compatibility through idiomatic extensions, enabling concise functional-style code for numerical tasks, and includes comprehensive unit tests using frameworks like NUnit to ensure reliability.[100] Common use cases span scientific simulations for modeling physical systems, financial modeling for risk assessment and portfolio optimization, and data analysis for statistical inference in research applications.[99] It provides foundational primitives that can extend to machine learning workflows via integration with ML.NET.[102]Accord.NET
Accord.NET is an open-source framework for scientific computing in the .NET ecosystem, specializing in machine learning, statistical analysis, and signal processing for audio and image data. It provides a comprehensive set of tools for developing production-grade applications in computer vision, computer audition, and pattern recognition, entirely implemented in C#. Originally developed as an extension to the AForge.NET framework—which began in 2006—Accord.NET was first released in 2010 and later incorporated AForge.NET's codebase to form a unified library. By version 3.8.0 in 2017, it introduced enhancements including support for .NET Core through portable packages, enabling cross-platform compatibility starting around 2016. However, the project has not seen major releases since 2017, with the last GitHub commit in November 2020, and is no longer actively maintained as of November 2025.[107][108][109][110] The framework's core components include machine learning algorithms such as support vector machines (SVMs) for classification and regression, decision trees with pruning and rule extraction, and clustering methods like k-means and Gaussian mixture models in the Accord.MachineLearning namespace. For statistics, the Accord.Statistics module offers over 40 probability distributions, hypothesis testing tools including chi-square, t-tests, and ANOVA, as well as models like hidden Markov models (HMMs) and linear/logistic regression. In computer vision and audition, it supports feature extraction via Gabor filters in Accord.Imaging, alongside audio signal processing, filtering, and transformations in Accord.Audio for tasks like real-time analysis. Native interop capabilities allow integration with external libraries, while the framework draws on numerical foundations from Math.NET Numerics for underlying computations in domain-specific applications.[111][112][113][114] Performance is optimized through parallel processing with PLINQ, facilitating efficient handling of large datasets in scenarios such as real-time audio analysis or image feature detection. Built-in datasets like the Iris flower dataset and LoadDigits for handwritten digit recognition enable quick testing and prototyping of algorithms. The framework supports model export formats for interoperability, though specific standards like PMML are referenced in older documentation for certain models.[107][111] Common use cases encompass pattern recognition, such as handwriting and gesture identification using SVMs and HMMs; bioinformatics applications, including DNA sequence prediction with HMMs; and robotics, like brain-controlled wheelchairs via SVM-based interfaces. These applications are evidenced in over 90 academic publications up to 2017, highlighting Accord.NET's historical role in research and practical implementations.[115][116][117]ML.NET
ML.NET is an open-source, cross-platform machine learning framework developed by Microsoft for .NET developers, enabling the creation, training, and deployment of custom machine learning models directly within .NET applications without requiring extensive expertise in machine learning.[118] It supports a wide range of tasks, including classification, regression, anomaly detection, and recommendation systems using techniques like matrix factorization, making it suitable for integrating AI capabilities into production environments.[119] The framework was first previewed in May 2018, with version 1.0 released in May 2019, introducing the ML.NET CLI tool for streamlined model experimentation and code generation.[120] Subsequent updates integrated Automated Machine Learning (AutoML) capabilities more deeply starting with .NET 5 in 2020, automating pipeline optimization for better model selection and hyperparameter tuning.[121] As of February 2025, ML.NET version 4.0.2 provides enhanced support for .NET 9 and .NET 10, including improvements in deep learning tasks and ONNX interoperability.[122][123] At the core of ML.NET is the MLContext class, which serves as the entry point for managing machine learning workflows, including data loading from various sources like CSV files or databases.[124] Developers build pipelines by chaining data transformations for featurization—such as normalization, one-hot encoding, or text processing—and then applying trainers to fit models to the data.[118] Supported trainers include LightGBM for gradient boosting in classification and regression tasks, and FastTree for efficient tree-based learning, allowing for scalable training on large datasets.[119] These pipelines support end-to-end automation, where raw data is transformed into predictive models ready for inference in .NET apps. Key features of ML.NET include robust model evaluation through techniques like cross-validation to assess performance metrics such as accuracy and precision, ensuring reliable deployment. Models can be serialized to the ONNX format for portability across platforms and frameworks, with tutorials demonstrating integration using .NET 9 and .NET 10 projects.[125] The ML.NET CLI further simplifies experimentation by automatically generating C# code for training and evaluation based on input datasets and tasks.[126] For performance, ML.NET leverages GPU acceleration via CUDA integration through ONNX Runtime, optimizing inference for demanding workloads like image classification in real-time applications.[118] Common use cases for ML.NET include predictive maintenance, where models analyze sensor data to forecast equipment failures, often deployed via ASP.NET Core Web APIs for scalable services.[127] Sentiment analysis is another frequent application, enabling real-time classification of text from user comments in web applications built with ASP.NET Core Razor Pages.[128] These integrations highlight ML.NET's strength in embedding machine learning into enterprise .NET ecosystems for tasks requiring low-latency predictions.[129]Graphics and Image Processing Libraries
OpenTK
OpenTK is a cross-platform, low-level C# library that provides bindings to graphics, audio, and compute APIs, enabling developers to create high-performance applications with direct access to hardware-accelerated rendering and processing. It serves as a foundation for 3D graphics, audio playback, and parallel computing tasks within the .NET ecosystem, emphasizing minimal overhead through native API wrappers. Originally developed as an evolution of earlier efforts to bring OpenGL to .NET, OpenTK has become a staple for applications requiring precise control over rendering pipelines and input systems.[130] As the successor to the Tao Framework, which provided initial OpenGL bindings for .NET starting in 2004 and reached its final release in 2008, OpenTK emerged to address limitations in cross-platform compatibility and maintenance. The library's major milestone came with version 3.0 in 2018, introducing support for .NET Standard 2.0 to enable broader portability across .NET Framework, .NET Core, and Mono. Subsequent releases, including version 4.0 in 2020, refined modular packaging and GLFW integration for windowing, while pre-release versions of 5.0, available since 2024 as of November 2025, include native Vulkan bindings for modern graphics APIs. These updates ensure OpenTK remains viable for contemporary .NET development, supporting OpenGL up to version 4.6, OpenGL ES up to 3.2, OpenAL for audio, OpenCL for compute, and GLFW for cross-platform window management. The latest stable release is 4.9.4 (March 2025).[131][132] Key features include a comprehensive mathematics library with types such as vectors, matrices, and quaternions for 3D transformations, alongside utilities for shader compilation, linking, and uniform management via OpenGL contexts. Input handling covers keyboard, mouse, joystick events, and window resizing through event-driven APIs, facilitating responsive user interactions in real-time applications. Performance is optimized via direct, high-speed API calls, bypassing higher-level abstractions; for instance, simple 3D scene rendering with vertex buffers and shaders can achieve over 120 frames per second on modern GPUs like NVIDIA RTX series, as demonstrated in uncapped benchmarks for voxel-based engines. OpenTK supports deployment on Windows, Linux, macOS, *BSD, and SteamOS, with experimental wrappers available for Android through community extensions.[130][133][134][130] Common use cases encompass game engine development, such as the Vintage Story voxel-based survival game, computer-aided design (CAD) tools for 3D modeling, and scientific visualization applications like molecular rendering or data plotting, where low-level control over graphics hardware enhances efficiency and customization.[130][135]ImageSharp
ImageSharp is a fully managed, cross-platform 2D graphics library for .NET, designed to simplify image loading, processing, and manipulation while providing high performance and extensibility. Since version 3.0, it operates under the Six Labors Split License, free for open-source, non-profits, and small companies (under $1M annual revenue), but requiring a paid license key for larger commercial use, with enforcement in version 4.0 and later.[136] It serves as a modern alternative to legacy libraries like System.Drawing, supporting a wide range of scenarios from desktop applications to cloud services and embedded devices. Built against .NET Standard 2.0 and later versions, it enables developers to perform operations without platform-specific dependencies.[137] The library supports reading and writing multiple image formats, including JPEG, PNG, GIF, BMP, TIFF, WebP, TGA, PBM, and QOI, with automatic format detection during loading.[138] It includes comprehensive metadata handling, such as EXIF profiles for exchangeable image file format data and ICC profiles for color management in formats like JPEG.[139] [140] Key operations encompass resizing with algorithms like Lanczos for high-quality scaling, applying filters such as Gaussian blur for effects like softening, and efficient pixel-level access through SpanSkiaSharp
SkiaSharp is a cross-platform 2D graphics library for .NET platforms, providing bindings to Google's Skia Graphics Library for high-performance rendering of images and vector graphics across mobile, desktop, and server environments.[153] It was first announced and released on February 22, 2016, as a replacement for legacy drawing APIs like System.Drawing and Mono.Cairo, enabling developers to leverage Skia's stable C API for consistent results.[154] The library has evolved significantly, with version 2.88 released in 2023 introducing enhanced compatibility with .NET 8 and support for the Metal backend on macOS via SKMetalView for improved hardware-accelerated rendering on Apple platforms. As of 2025, the latest stable version is 3.119.1 (September 2025), maintaining backward compatibility with .NET Standard 2.0 and targeting modern frameworks like .NET 6, .NET 8, and .NET 9.[155] At its core, SkiaSharp's API revolves around the SKCanvas class, which serves as the primary interface for drawing paths using SKPath, applying paints via SKPaint for styling, and rendering text with SKTextBlob or direct string methods.[156] It supports SVG import through SKSvgCanvas for parsing and rendering vector graphics from SVG files, and PDF export via SKDocument, allowing creation of multi-page documents with embedded vector content.[157][158] Key features include anti-aliasing for smooth edges on lines and shapes, gradient fills through SKShader for linear, radial, and sweep patterns, and advanced font rendering powered by HarfBuzz integration for complex text shaping, ligatures, and bidirectional support.[156][159] Hardware acceleration is enabled via GRContext backends, supporting Vulkan for cross-platform GPU rendering and DirectX for Windows-specific optimization, reducing CPU load in demanding scenarios.[160] In terms of performance, SkiaSharp achieves high frame rates for 2D rendering, with benchmarks showing uncapped rates exceeding 1000 FPS for simple scenes on capable hardware, making it suitable for real-time applications.[161] It integrates seamlessly with Xamarin and .NET MAUI through dedicated view packages like SkiaSharp.Views.Maui.Controls, enabling efficient drawing in cross-platform apps. The library supports all major .NET platforms, including Windows (via WinUI 3 and classic desktop), Android, iOS, macOS, tvOS, and WebAssembly, with platform-specific views for native integration.[153] Common use cases encompass developing custom UI controls, generating dynamic charts and graphs, and creating vector illustrations for apps requiring precise, scalable graphics.[162] For raster operations, it can combine with libraries like ImageSharp for image loading prior to canvas manipulation.Testing and Quality Assurance Frameworks
NUnit
NUnit is an open-source unit testing framework for .NET languages, designed to support test-driven development (TDD) by enabling developers to write and execute automated tests for verifying code behavior. Originally ported from JUnit for Java, it provides a structured approach to defining test fixtures, individual tests, and setup/teardown logic through attributes, allowing for repeatable and isolated testing of application components.[163] The framework's evolution began with version 1.0 released in 2002, establishing foundational support for basic assertions and test execution in early .NET environments. Significant advancements came with NUnit 3.0 in November 2015, which introduced full compatibility with .NET Core and cross-platform execution on Windows, Linux, and macOS, alongside enhanced extensibility for modern development workflows. The latest major release, NUnit 4.4.0 in August 2025, includes bug fixes and enhancements building on 4.0 (November 2023), with refinements to assertion handling, async/await integration, and improved error messaging while maintaining backward compatibility.[164][165] Key features of NUnit include attribute-based test definition, such as the [TestFixture] attribute for classes containing tests, [Test] for individual test methods, and [SetUp] for methods executed before each test to initialize state. Parallel execution is enabled via the [Parallelizable] attribute, allowing tests to run concurrently at fixture, class, or assembly levels to improve throughput on multi-core systems, while the [Theory] attribute supports parameterized and data-driven tests by combining test methods with data sources like [TestCase] or [Datapoint] for validating behavior across multiple inputs. The Assert API emphasizes constraint-based assertions, exemplified byAssert.That(actual, Is.EqualTo(expected)), which provides detailed failure messages through a chainable syntax for equality, collection, or type checks; custom matchers can be implemented by extending the IConstraint interface for domain-specific validations. Mocking is facilitated through third-party extensions like NSubstitute or Moq, integrated seamlessly with NUnit's test runner, and test results are output in XML format for parsing and reporting.[166][167][168][169][170][171][172][173]
NUnit integrates natively with Visual Studio's Test Explorer via the NUnit3 Test Adapter NuGet package, enabling seamless test discovery, execution, and debugging within the IDE. For continuous integration and deployment (CI/CD), it supports Azure DevOps pipelines through the dotnet test command or the NUnit console runner, allowing automated test runs with result publication and failure tracking in build workflows. Performance optimizations ensure efficient test discovery and execution, with constraints enabling flexible custom matchers to avoid overhead in complex validations.[174][175][176]
Common use cases for NUnit include TDD in web and desktop .NET projects, where developers write tests alongside code to ensure reliability during refactoring, and data-driven testing for scenarios like API validation or business logic verification across varied inputs using theories.[170]
xUnit.net
xUnit.net is a free, open-source unit testing framework for .NET languages including C#, F#, and Visual Basic, prioritizing simplicity, extensibility, and alignment with modern development practices. Developed by Brad Wilson and Jim Newkirk, the original creator of NUnit v2, it was first released in 2007 as a successor to NUnit 2.x, addressing issues like tight coupling to base classes and complex configuration requirements.[177][178][179] The framework's core structure revolves around attributes for defining tests: the[Fact] attribute marks parameterless tests that represent invariant conditions, while [Theory] enables data-driven testing by combining with data attributes like [InlineData] to parameterize test methods with specific inputs, allowing multiple executions from a single method. For logging within tests, ITestOutputHelper provides an interface to capture and output diagnostic information, such as console writes, which is accessible via constructor injection without relying on static methods. This design promotes test isolation and readability, avoiding shared state unless explicitly configured.[180][181]
Key features include the [Trait] attribute for categorizing tests with key-value pairs, facilitating filtering and organization in large suites; collection fixtures, which enable shared setup and teardown across multiple test classes via ICollectionFixture<T> implementations to manage expensive resources like databases; and extensibility through ITestCaseOrderer, an interface allowing custom ordering of test cases within a class for scenarios requiring sequential execution. Starting from version 2.4 in 2018, xUnit.net added enhanced support for .NET Core, providing full compatibility with .NET 5 and later versions, including improvements to asynchronous test handling. The major version 3.0, released in July 2025, introduced support for .NET 8+, new project templates, skipping test assertions, and overloads for collections.[182][183][184]
xUnit.net integrates seamlessly with development environments through built-in runners: the Visual Studio adapter via the xunit.runner.visualstudio package enables test discovery and execution directly in the Test Explorer without additional setup, while native support in JetBrains ReSharper and Rider allows running and debugging tests from the IDE's unit test window. Unlike some frameworks, it requires no XML configuration files, relying instead on optional JSON-based settings for assembly-level customization. Performance-wise, xUnit.net offers faster test discovery and execution compared to NUnit, particularly for parallel runs enabled by default, and supports inline data attributes efficiently for small datasets to minimize overhead. It is particularly suited for isolation-focused testing in microservices architectures and reusable libraries, where dependency injection and minimal setup promote clean, maintainable test code.[180][185][186][187]
FluentAssertions
FluentAssertions is a .NET library that provides a set of extension methods enabling developers to express assertions in unit tests using a fluent, natural language syntax, particularly suited for test-driven development (TDD) and behavior-driven development (BDD) styles.[188] It extends common test frameworks by offering readable alternatives to traditional assert statements, such asactual.Should().BeEquivalentTo(expected) for deep structural comparisons, which automatically handles object graphs and collections without requiring manual property checks.[189] This approach improves test maintainability by producing detailed failure messages that explain discrepancies, including reasons for assertion failures like mismatched properties or collection orders.[188]
The library originated in 2011 as an open-source project aimed at enhancing assertion readability in .NET unit tests.[190] Its evolution includes significant updates in version 6.12.0, released in August 2023, which introduced custom comparers for assertions like Be, NotBe, and BeOneOf, alongside improved formatting for record types to better handle C# value-based equality semantics.[191] Further advancements came with version 8.0 in February 2025, adding official support for .NET 8 and enhanced record type comparisons, including member-based equivalency for nested structures; starting with this version, it requires a paid license for commercial use (free for open-source and non-commercial projects), while maintaining compatibility with earlier .NET versions starting from .NET Standard 2.0. The latest release as of November 2025 is version 8.8.0, including additional bug fixes and features like support for System.Text.Json.JsonNode.[192][193][194]
Key features include support for asynchronous assertions, such as await act.Should().ThrowAsync<InvalidOperationException>() to verify exceptions in async methods, which unwraps AggregateException automatically for cleaner verification.[195] Deep equality assertions for collections use BeEquivalentTo to recursively compare elements, ignoring order by default but allowing strict ordering via WithStrictOrdering(), and providing diagnostics for complex mismatches like differing nested objects.[189] Customization is facilitated through interfaces like IAssertionRule, enabling users to define bespoke equality rules for specific types during equivalency checks, such as ignoring cyclic references or applying domain-specific comparators.[196]
FluentAssertions integrates seamlessly with popular .NET testing frameworks including NUnit, xUnit.net, and MSTest, automatically detecting the host framework and formatting output with contextual reason messages for easier debugging.[188] It can be used alongside core frameworks like NUnit to enhance assertion expressiveness without altering test structure. Performance impact is negligible in typical unit test scenarios, as the overhead of fluent chaining and deep comparisons is minimal compared to the readability gains, though it may introduce slight costs for very large object graphs during diagnostics.[197]
In practice, FluentAssertions excels in BDD-style tests by allowing chained assertions that read like specifications, such as verifying business rules in large test suites: result.Should().NotBeNull().And.HaveProperty(x => x.Status).Which.Should().Be("Success").[188] This promotes clearer intent and faster failure diagnosis, making it ideal for maintaining extensive test bases in enterprise .NET applications where readability directly impacts development velocity.[198]
Utility and Cross-Cutting Libraries
AutoMapper
AutoMapper is a convention-based object-object mapper library for .NET applications, designed to simplify the transformation of data between different object types, such as domain entities to data transfer objects (DTOs). It uses a fluent API to configure mappings based on naming conventions, reducing the need for manual property assignments and boilerplate code in scenarios like API responses or query projections. Originally developed by Jimmy Bogard, the library emphasizes model projection to flatten complex domain models into simpler representations for transport or display.[199][200] The library's evolution began with its initial 1.0 release in February 2010, providing foundational support for .NET Framework applications. Subsequent versions have expanded compatibility and performance, with version 12.0 released in September 2022 targeting .NET 6 and later, and version 15.0 in July 2025 supporting .NET 8, .NET 9, and .NET Standard 2.0. The latest version, 15.1.0, was released on October 24, 2025. Starting with version 15.0, AutoMapper requires a license key under a dual commercial/open-source model; developers must obtain a key from the official site and configure it, such as viacfg.LicenseKey = "<License Key Here>" in MapperConfiguration. Key advancements include enhanced configuration validation for compile-time-like safety checks during development, such as AssertConfigurationIsValid() to detect mapping errors early, preventing runtime surprises.[201][202][203][204][205]
Mapping configurations in AutoMapper are typically organized into profiles—classes that inherit from the Profile base class—to group related mappings logically and promote reusability across assemblies. For example, a profile might define CreateMap<SourceType, DestinationType>() to establish a basic convention-based mapping, with options to ignore specific properties via .ForMember(dest => dest.Property, opt => opt.Ignore()) or implement custom logic through value resolvers implementing IValueResolver<TSource, TDestination, TMember>. Reverse mapping is supported by explicitly configuring the inverse direction with CreateMap<DestinationType, SourceType>() or appending .ReverseMap() to an existing map, enabling bidirectional transformations like unflattening nested properties. Additionally, AutoMapper integrates LINQ expression support through methods like ProjectTo<TDestination>(IConfigurationProvider), which translates mappings into efficient Select projections for IQueryable sources, avoiding full materialization of entities.[199][206]
Performance optimizations in AutoMapper include compiled mappings, where expression trees are pre-compiled into delegates at configuration time, significantly reducing runtime overhead compared to pure reflection. Version 5.0 introduced major speed improvements, with benchmarks showing up to 20 times faster execution for complex mappings, making it suitable for high-throughput scenarios; for instance, mapping collections of 1000 simple objects typically completes in under 10 milliseconds on modern hardware. These compiled maps establish critical context for scalability in data-intensive applications.[207][208]
AutoMapper integrates seamlessly with Entity Framework Core for query projections, allowing ProjectTo on IQueryable to shape results directly in the database, minimizing data transfer and improving efficiency in read-heavy operations. It also supports dependency injection in ASP.NET Core via services.AddAutoMapper(assemblies), enabling IMapper injection into controllers or services for automated mapping in request handling. Common use cases include API layer transformations, where it maps domain models to DTOs for serialization, and reducing boilerplate in microservices architectures by standardizing object conversions across bounded contexts. For debugging, mapped objects can be logged using libraries like Serilog to trace transformations during development.[209]
Serilog
Serilog is a popular open-source diagnostic logging library for .NET applications, emphasizing structured logging that captures log events as rich, queryable data rather than plain text strings.[210] It supports writing logs to various outputs through extensible "sinks," enabling integration with storage systems, consoles, and observability tools, while maintaining portability across modern .NET platforms like .NET Core and .NET 5+.[211] Developed initially by Nicholas Blumhardt, Serilog was created in 2012 to address limitations in traditional logging by introducing message templates for consistent, parameterized event capture. Its evolution has focused on performance and compatibility; for instance, version 3.0, released in 2023, dropped support for legacy .NET Framework versions and introduced enhancements for .NET 8, including improved async sink processing for better throughput in high-load scenarios.[212] Subsequent updates, such as version 4.3.0 in May 2025, unpinned the assembly version from the historical 2.0.0 to align with semantic versioning practices.[213] The library's API centers on a fluent, type-safe approach to logging structured events, using message templates with placeholders for properties. For example, developers can log withLog.[Information](/page/Information)("{Property} is {Value}", prop, value) to capture key-value pairs, or employ the @ prefix for destructuring complex objects, such as Log.[Information](/page/Information)("Processed {@Position} in {Elapsed:000} ms.", position, elapsedMs), which serializes the Position object into a JSON-like structure like {"Position": {"[Latitude](/page/Latitude)": 25, "[Longitude](/page/Longitude)": 134}, "Elapsed": 34}.[211] This design avoids string concatenation overhead and facilitates searching and analysis in downstream systems. Configuration is handled via LoggerConfiguration, allowing setup of minimum log levels (e.g., .MinimumLevel.[Information](/page/Information)() to suppress debug messages), event filtering with predicates, and batching in sinks to optimize I/O operations.[214]
Serilog extends logging through sinks and enrichers for flexible output and context addition. Common sinks include the console sink for development output, the file sink for persistent rolling logs, Seq for structured log aggregation and querying, and the Application Insights sink for Azure-based telemetry integration.[215] Enrichers enhance every log event with ambient data, such as user identifiers via custom enrichers or automatic correlation IDs through LogContext.PushProperty("UserId", userId) for tracing request flows.[211] These components support features like asynchronous writing to prevent blocking and conditional rendering to minimize allocation when logs are filtered out at the source.
Performance is a core strength, with Serilog designed for low overhead in production environments; when logging is disabled below the minimum level, it incurs negligible CPU cost, often under 1% in typical workloads.[216] Benchmarks demonstrate its efficiency, achieving over 10,000 log events per second in structured scenarios with minimal latency compared to alternatives like NLog, particularly when using batched sinks.[217]
In practice, Serilog excels in observability for cloud-native .NET applications, where structured logs enable correlation with distributed traces via integrations like OpenTelemetry, facilitating root-cause analysis across microservices.[218] For instance, in Azure-hosted apps, logs sent to Application Insights can link events to traces, providing end-to-end visibility into request lifecycles and errors.[219]
Polly
Polly is a .NET resilience and transient-fault-handling library that enables developers to define and apply policies for managing failures in distributed systems, such as retries for temporary network issues or circuit breaking to prevent overload.[220] Hosted under the .NET Foundation, it provides thread-safe implementations targeting .NET Standard 1.1 and later, including full support for asynchronous operations across .NET Framework, .NET Core, and .NET 5+.[221] By encapsulating common resilience patterns in a fluent API, Polly simplifies building robust applications without custom boilerplate code.[222] The library's core strength lies in its policy-based approach, where developers can chain multiple strategies to handle diverse fault scenarios. For instance, a retry policy can be combined with a fallback to ensure graceful degradation during outages.[221] Polly has evolved significantly since its inception, with ongoing updates focused on performance optimization and integration with modern .NET features like dependency injection.[223] Key policies in Polly include the Retry policy, which supports exponential backoff to progressively delay retries—starting with short waits that double in duration (e.g., 2 seconds, then 4, 8) up to a configurable maximum—reducing contention in concurrent environments.[222] The Circuit Breaker policy monitors failure rates and "opens" after a threshold (e.g., 5 consecutive failures within 30 seconds), blocking calls for a cooldown period to allow recovery before "half-open" testing resumes normal operation. Bulkhead isolation limits concurrent executions to protect shared resources, akin to a semaphore, preventing one failing component from exhausting system capacity.[220] Fallback policies execute alternative logic, such as returning cached data, when primary operations fail, while Timeout policies enforce upper bounds on execution duration to avoid indefinite hangs. Polly's initial version 1.0.0 was released on May 5, 2013, introducing basic retry and circuit breaker capabilities for .NET 3.5 and 4.x.[224] By version 8.0, released on November 7, 2023, it incorporated resilience pipelines for composing strategies, a policy registry viaResiliencePipelineProvider for centralized management, and native telemetry integration, optimized for .NET 8.[223] These updates emphasize declarative configuration and reduced overhead, with subsequent releases like 8.6.4 in September 2025 enhancing stability.[225]
Features such as async support allow seamless use in asynchronous code paths, handling Task-based operations without blocking threads, while custom exception filtering (e.g., retrying only on SqlException) enables precise fault targeting. Policy chaining facilitates complex workflows, like applying a Retry policy followed by Fallback, executed via Policy.WrapAsync or modern pipeline builders.[220]
Configuration leverages a fluent API for readability, as in var retryPolicy = Policy.Handle<SqlException>().WaitAndRetryAsync(3, retryAttempt => TimeSpan.FromSeconds(Math.Pow(2, retryAttempt)));, which defines three retries with exponential backoff.[222] In .NET's dependency injection, policies integrate via services.AddResiliencePipeline("http-resilience", builder => builder.AddRetry(new RetryStrategyOptions { Delay = TimeSpan.FromSeconds(1) }));, supporting metrics collection for observability.
Performance benchmarks demonstrate negligible latency overhead, with pipeline executions averaging 2.089 microseconds in version 8 versus 2.277 in prior versions, and allocations as low as 40 bytes per invocation in high-throughput tests combining multiple policies.[226] This efficiency supports 99.9% uptime in scenarios with frequent transient faults, as validated in microservices benchmarks like eShopOnContainers.[227]
Common use cases include retrying HTTP calls in APIs to tolerate network glitches, such as 503 errors from downstream services, and database retries for connection timeouts in high-availability setups.[222] In microservices architectures, Polly enhances reliability by isolating failures and enabling bulkhead controls to maintain overall system throughput during partial outages.[221]