finds.dev← search

// the find

FoundatioFx/Foundatio

★ 2,095 · C# · Apache-2.0 · updated Jul 2026

Pluggable foundation blocks for building distributed apps.

Foundatio is a set of C# abstractions for the primitives every distributed app needs: caching, queues, pub/sub, distributed locks, file storage, and background jobs. Each abstraction ships with an in-memory implementation and pluggable backends for Redis, Azure, AWS, RabbitMQ, and Kafka. It targets teams who want to stay behind an interface so they can swap infrastructure without touching application code.

The in-memory implementations are full working implementations, not stubs — you can run your entire application locally or in CI without Redis or any cloud dependency, and the behavior matches production closely enough to trust. The TestHarness package ships reusable base test classes for every abstraction, so if you write a custom provider you get a full conformance suite nearly for free. HybridCacheClient doing L1 (in-memory) plus L2 (Redis) with message bus invalidation is a real problem solved correctly rather than bolted on as an afterthought. The entire library is DI-native and consistent across primitives — once you understand how one abstraction registers and resolves, the others follow the same pattern.

The distributed lock implementation is CacheLockProvider, which builds locks on top of the cache. Cache connectivity blips or eviction can silently release a lock — there is no Redlock-style quorum, so this is not suitable for correctness-critical mutual exclusion. Provider packages live in separate repos (Foundatio.Redis, Foundatio.AWS, Foundatio.AzureServiceBus) with independent versioning, and keeping them in sync with core is an ongoing coordination problem you inherit as a user. The metrics story is essentially absent — the Metrics directory contains only IHaveSubMetricName.cs, so you will still need OpenTelemetry or a sidecar for observability. Nito.AsyncEx coordination primitives are vendored as source rather than taken as a dependency, which means upstream bug fixes don't flow in automatically and the versions will drift.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →