A collection of pluggable foundation blocks for building loosely coupled, distributed .NET applications.
Foundatio is a .NET library that provides a set of pluggable foundation blocks for building distributed applications. It solves the problem of infrastructure coupling by offering consistent, interface-based APIs for common needs like caching, queuing, storage, and messaging, allowing developers to switch between in-memory, Redis, Azure, or AWS implementations without code changes.
.NET developers and architects building scalable, distributed applications who need to abstract infrastructure concerns and maintain flexibility across different environments from local development to cloud production.
Developers choose Foundatio for its consistent, abstraction-first design that decouples application logic from infrastructure, enabling seamless transitions between providers and simplifying testing with in-memory implementations, all while being production-ready for high-scale scenarios.
Pluggable foundation blocks for building distributed apps.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Enables swapping between Redis, Azure, AWS, or in-memory providers with minimal code changes, as emphasized in the 'Why Choose Foundatio?' section for seamless environment transitions.
In-memory implementations allow for fast local development and testing without external dependencies, reducing setup time and complexity during initial phases.
Built to integrate seamlessly with Microsoft.Extensions.DependencyInjection, making configuration straightforward in modern .NET applications, as highlighted in the core features.
Provides uniform patterns for caching, queues, storage, locks, messaging, and jobs, reducing the learning curve and promoting code reuse across infrastructure needs.
Requires managing multiple separate NuGet packages for different providers (e.g., Foundatio.Redis, Foundatio.AzureStorage), increasing dependency complexity and setup effort.
Not all features are available across every provider; for instance, the provider table shows Azure Storage lacks caching support, which can limit flexibility in certain scenarios.
The interface-first design adds layers that may introduce performance penalties compared to using cloud provider SDKs directly, especially in high-throughput applications.