This repository is the official gRPC implementation for .NET (grpc-dotnet), providing a comprehensive set of libraries for building gRPC services and clients on ASP.NET Core. It includes server-side integration via `Grpc.AspNetCore.Server` with full support for unary, server-streaming, client-streaming, and duplex streaming calls, as well as client-side libraries (`Grpc.Net.Client`, `Grpc.Net.ClientFactory`) that leverage `HttpClient` and DI. The codebase also covers gRPC-Web (both server middleware and client handler), health checks, server reflection, load balancing, retry/hedging policies, compression, interceptors, and a CLI tool (`dotnet-grpc`) for managing protobuf references. The architecture is modular, with clear separation of concerns: core abstractions in `Grpc.Core.Api`, shared utilities in `Grpc.Net.Common`, and platform-specific implementations. Extensive unit and functional tests, performance benchmarks, and interop test assets ensure correctness and performance across .NET versions and platforms.
Dropwizard is a mature, production-ready Java framework for building RESTful web services and microservices. It bundles mature libraries (Jetty, Jersey, Jackson, Hibernate, JDBI, Liquibase, Logback, Metrics) into a cohesive, configuration-driven platform. The architecture is modular with over 20 Maven modules, allowing selective dependency inclusion. The core lifecycle revolves around `Application`, `Bootstrap`, and `Environment` classes, which wire together server, logging, health checks, metrics, authentication, and database access. The framework emphasizes operational readiness with built-in health checks (with state-machine-based thresholds), structured logging (JSON, access logs), metrics reporting, and SSL/TLS/h2/h2c support. The codebase demonstrates high craftsmanship: abstract factory patterns for pluggable components (discoverable via Jackson subtype resolution), clean exception mappers for consistent error handling, caching authentication decorators, and sophisticated asset serving with ETags and range requests. Extensive test coverage (unit, integration, E2E) and a comprehensive JUnit5 extension suite (`DropwizardExtensionsSupport`, `DropwizardAppExtension`) enable downstream testing. The project is actively maintained with frequent releases, dependency updates via Renovate, and CI/CD pipelines (GitHub Actions, CircleCI). Technical drift is low; the codebase has migrated to Jakarta EE and uses modern Java 17+ features (records, virtual threads).
YARP (Yet Another Reverse Proxy) is a high-performance, extensible reverse proxy toolkit for .NET, built on ASP.NET Core. It provides a library and samples for creating custom proxy servers with features including request forwarding, load balancing (random, round-robin, least-requests, power-of-two-choices), active and passive health checks, session affinity (cookie, hash, ARR, custom header), request/response transforms, and telemetry consumption. The architecture is middleware-based, with a pipeline that includes routing, load balancing, session affinity, health checks, and delegation (Http.sys). Configuration is driven by immutable records and supports dynamic reload via change tokens. YARP also includes a Kubernetes Ingress Controller module that watches Ingress, Service, Endpoint, and Secret resources to dynamically configure the proxy. The codebase demonstrates strong engineering practices: extensive unit and functional tests, pluggable policy interfaces, efficient stream copying with telemetry, and a transform builder pattern for declarative request/response modifications. It is actively maintained by Microsoft and used in production scenarios.