-
Flurl
-
Stream
Stream - Scalable APIs for Chat, Feeds, Moderation, & Video. Stream helps developers build engaging apps that scale to millions with performant and flexible Chat, Feeds, Moderation, and Video APIs and SDKs powered by a global edge network and enterprise-grade infrastructure.
-
RestEase
Easy-to-use typesafe REST API client library for .NET Standard 1.1 and .NET Framework 4.5 and higher, which is simple and customisable. Inspired by Refit
RestEase
-
apiclientcodegen
A collection of Visual Studio code generators for Swagger / OpenAPI specification files
Swagger is a tool set based on the OpenAPI specification that needs no introduction these days. Given an OpenAPI document, the corresponding client/server stubs can be generated in any popular programming language, and C# is no exception. For the client side, here is a detailed list of .NET code generators. Alternatively, we can generate a document from the server code using Swashbuckle or NSwag (these two tools are now de facto standards).
-
Easy control over the dependencies of your contracts. You can even automate it by writing architectural tests (NetArchTest, ArchUnitNET).
-
ArchUnitNET
A C# architecture test library to specify and assert architecture rules in C# for automated testing.
Easy control over the dependencies of your contracts. You can even automate it by writing architectural tests (NetArchTest, ArchUnitNET).
-
Polly
Polly is a .NET resilience and transient-fault-handling library that allows developers to express policies such as Retry, Circuit Breaker, Timeout, Bulkhead Isolation, and Fallback in a fluent and thread-safe manner. From version 6.0.1, Polly targets .NET Standard 1.1 and 2.0+.
Custom HTTP handlers are well known as a mechanism to manage cross-cutting concerns around HTTP requests. The calling application has control over the HTTP handler pipeline, so it can be reconfigured, reordered, or even rebuilt from scratch. Decorating a client with a Token Management Handler or a custom Polly policy is easy... assuming the client accepts an HttpClient parameter in its constructor, and you haven't messed with the natural order of things by obstructing the client customization in some way (I really don't want to show how).
-
However, any client dependency can lead to a future case of the notorious "DLL hell" problem. While multiple major versions of the same package are transitively referenced by the root application, we have exactly one package version bound at runtime. Then, when we call the other version transitively, we can get a nasty runtime error. In general form, it is unsolvable on the root application side. More technical details can be found, for example, in this thread and its follow-ups: Referencing multiple package versions within one project with extern aliases.
-
InfluxDB
InfluxDB – Built for High-Performance Time Series Workloads. InfluxDB 3 OSS is now GA. Transform, enrich, and act on time series data directly in the database. Automate critical tasks and eliminate the need to move data externally. Download now.
Related posts
-
20 Top C# Frameworks and Libraries on GitHub for Building Powerful Applications
-
Http calls on mobile, what is the preferred way / best practice
-
Integration tests without API dependencies with ASP.NET Core and WireMock.Net
-
How to better handle exceptions with HttpClient.
-
Exploring Ruby's Networking Capabilities: From Basics to Advanced Implementations