A collection of pluggable foundation blocks for building loosely coupled, distributed .NET applications.
Foundatio is a .NET library that provides pluggable foundation blocks for building distributed applications. It solves the problem of infrastructure coupling by offering consistent, interface-based APIs for caching, queuing, file storage, messaging, jobs, and locks, allowing developers to swap providers like Redis, Azure, or AWS without changing application code.
.NET developers and architects building scalable, loosely coupled distributed applications or microservices that require flexible infrastructure components.
Developers choose Foundatio for its interface-first design, seamless provider swapping, and production-ready implementations that reduce vendor lock-in and simplify testing with in-memory alternatives.
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.
Allows seamless transitions between Redis, Azure, AWS, or in-memory providers without code changes, as shown in the provider implementations table and quick start examples.
Includes in-memory implementations for caching, queuing, and storage, enabling fast local development and unit testing without external dependencies, highlighted in the 'Developer friendly' feature.
Provides unified interfaces for caching, queues, locks, messaging, jobs, and file storage, reducing the learning curve across different infrastructure components, as emphasized in the 'Consistent APIs' section.
Built-in support for retry policies, circuit breakers, and timeouts enhances application robustness in distributed environments, detailed in the resilience guide.
The provider table shows not all features are available for every provider; for instance, Azure Storage only supports queues and storage, lacking caching and lock support.
Requires multiple NuGet packages for different providers (e.g., Foundatio.Redis, Foundatio.AWS), which complicates dependency management and updates, as indicated in the separate GitHub repositories.
The interface layer may introduce performance overhead and limit access to provider-specific optimizations or latest features, a trade-off for the pluggable design.