# dotnet/yarp

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/dotnet-yarp).**

9,527 stars · 918 forks · C# · MIT

## Links

- GitHub: https://github.com/dotnet/yarp
- Homepage: https://yarp.dot.net
- awesome-repositories: https://awesome-repositories.com/repository/dotnet-yarp.md

## Description

Yarp is a .NET HTTP reverse proxy toolkit and framework used to build applications that route network traffic to backend servers. It provides a customizable routing engine for directing incoming requests to specific destination targets based on defined matching patterns.

The project enables the implementation of API gateways and reverse proxies by providing tools for dynamic request routing and custom load balancing across pools of backend servers.

The toolkit covers traffic management capabilities including cluster-based load balancing, configuration-driven route matching, and support for HTTP/2 and HTTP/3 protocol negotiation. It utilizes a middleware-based request pipeline and integrates with the standard HTTP client factory to manage connection pooling.

## Tags

### Networking & Communication

- [Traffic Routing](https://awesome-repositories.com/f/networking-communication/traffic-routing.md) — Builds a reverse proxy that directs incoming HTTP traffic to backend servers using defined routing rules. ([source](https://github.com/dotnet/yarp/blob/main/build.cmd))
- [API Gateways](https://awesome-repositories.com/f/networking-communication/api-integration-frameworks/api-management-integration/api-gateways.md) — Provides the infrastructure to create a single entry point for microservices to handle routing and load balancing.
- [Custom Load Balancers](https://awesome-repositories.com/f/networking-communication/custom-load-balancers.md) — Allows the implementation of custom request distribution logic across a pool of backend servers.
- [Request Routing](https://awesome-repositories.com/f/networking-communication/network-infrastructure-routing/network-routing-traffic-management/request-routing.md) — Directs incoming network traffic to specific backend servers based on defined matching rules and destination targets. ([source](https://github.com/dotnet/yarp/blob/main/global.json))
- [Routing Engines](https://awesome-repositories.com/f/networking-communication/network-infrastructure-routing/network-routing-traffic-management/routing-engines.md) — Implements a core software component that processes routing rules to determine the destination of network traffic.
- [Request Proxies](https://awesome-repositories.com/f/networking-communication/request-proxies.md) — Translates incoming HTTP requests into outgoing requests to backend servers while preserving headers and metadata.
- [Middleware-Based Request Pipelines](https://awesome-repositories.com/f/networking-communication/communication-protocols-architectures/request-processing-architectures/request-processing/middleware-based-request-pipelines.md) — Processes requests through a sequence of pluggable handlers that modify or route traffic before reaching the destination.
- [Connection Pooling](https://awesome-repositories.com/f/networking-communication/connection-pooling.md) — Integrates with the standard HTTP client factory to manage connection pooling and prevent socket exhaustion.
- [Protocol Negotiation](https://awesome-repositories.com/f/networking-communication/http-2-support/protocol-negotiation.md) — Handles the upgrade of network connections to HTTP/2 and HTTP/3 to improve throughput and reduce latency.

### Development Tools & Productivity

- [Configuration-Driven Matching](https://awesome-repositories.com/f/development-tools-productivity/regular-expressions/route-pattern-matching/configuration-driven-matching.md) — Provides a system to map incoming request metadata to backend clusters using predefined rule patterns and priorities.

### DevOps & Infrastructure

- [Load Balancing](https://awesome-repositories.com/f/devops-infrastructure/load-balancing.md) — Implements pluggable strategies like round-robin and least-request to distribute traffic across backend server pools.

### Web Development

- [Reverse Proxies](https://awesome-repositories.com/f/web-development/backend-development/request-response-handling/http-request-handling/reverse-proxies.md) — Provides a toolkit for building custom applications that route incoming network traffic to multiple backend servers using .NET.
- [Request Routing](https://awesome-repositories.com/f/web-development/request-routing.md) — Directs HTTP traffic to specific destination targets based on custom matching rules and configurations.
- [Reverse Proxies](https://awesome-repositories.com/f/web-development/reverse-proxies.md) — Provides a comprehensive framework to implement request routing and load balancing for web applications within the .NET ecosystem.
