A collection of pluggable foundation blocks for building loosely coupled, distributed .NET applications.
Foundatio is a .NET library that provides a set of pluggable, interface-based building blocks for constructing distributed applications. It solves the problem of vendor lock-in and infrastructure complexity by offering consistent APIs for caching, queuing, file storage, messaging, locks, and jobs, allowing developers to swap providers like Redis, Azure, or AWS with minimal code changes.
.NET developers and architects building scalable, distributed applications who need to abstract infrastructure concerns and maintain flexibility across different cloud providers or on-premises deployments.
Developers choose Foundatio for its consistent, interface-first design that decouples application logic from infrastructure, enabling rapid local development with in-memory providers and seamless scaling to production without rewrites. Its battle-tested, production-ready components and native dependency injection support reduce boilerplate and increase maintainability.
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 seamless swapping between in-memory, Redis, Azure, and AWS providers with minimal code changes, as demonstrated in the quick start examples for caching and queuing, reducing vendor lock-in.
In-memory implementations for caching, queuing, and file storage allow fast local development and unit testing without external dependencies, accelerating prototyping and debugging cycles.
Built for Microsoft.Extensions.DependencyInjection out of the box, simplifying setup and aligning with modern .NET patterns, which reduces boilerplate code in ASP.NET Core applications.
Includes production-ready retry policies, circuit breakers, and timeouts, proven in high-scale applications, ensuring reliability for distributed systems without custom implementation.
Some providers like Azure Storage only support queues and file storage, lacking caching and lock implementations, which breaks the consistent API promise for certain use cases.
Requires installing separate NuGet packages (e.g., Foundatio.Redis, Foundatio.AzureStorage) for different providers, complicating dependency management and version synchronization.
The interface-based design may introduce slight latency compared to direct SDK calls, potentially impacting high-performance critical paths in latency-sensitive applications.