Overview
Is your feature request related to a problem? Please describe.
With the recent shifts in licensing and the deprecation of some older object storage components (such as MinIO becoming less viable for certain open-source/enterprise scenarios without strict AGPL compliance), there is a growing need for a highly performant, scalable, and flexible storage alternative in the .NET Aspire ecosystem.
SeaweedFS (https://github.com/seaweedfs/seaweedfs) is an excellent, highly scalable distributed file system that provides both a Native Filer API and an S3-compatible gateway. It is lightweight, extremely fast, and solves the need for a reliable object/file storage component.
Describe the solution you'd like
I propose adding a complete integration for SeaweedFS to the Community Toolkit, consisting of both Hosting and Client packages.
Hosting Integration (CommunityToolkit.Aspire.Hosting.SeaweedFS):
A robust resource builder that allows developers to easily spin up a SeaweedFS cluster and opt-in to the specific APIs they need:
WithS3(): Enables the S3-Compatible API Gateway.
WithFiler(): Enables the Native Filer API.
WithDataVolume() / WithDataBindMount(): For state persistence.
Client Integration (CommunityToolkit.Aspire.SeaweedFS.Client):
Seamless dependency injection for consuming the cluster APIs:
AddSeaweedFSS3Client(): Wires up the standard AWSSDK.S3 IAmazonS3 client securely to the Aspire container.
AddSeaweedFSFilerClient(): Registers a strongly-typed HttpClient for ultra-fast native Filer API operations.
- Built-in Health Checks for both S3 and Filer endpoints.
Usage example
1. AppHost Configuration (Hosting):
Developers can spin up the cluster, opt-in to the S3 Gateway or Native Filer, and persist data using volumes:
var builder = DistributedApplication.CreateBuilder(args);
// Provisions SeaweedFS with S3 Gateway enabled (implicitly enables Filer for metadata)
var seaweedfs = builder.AddSeaweedFS("seaweedfs")
.WithS3()
.WithDataVolume();
builder.AddProject<Projects.ApiService>("apiservice")
.WithReference(seaweedfs);
builder.Build().Run();
2. Consuming the APIs (Client):
In the consuming project, developers can easily inject the standard AWS S3 client or the strongly-typed Filer HTTP client. The integration handles the dynamic endpoints automatically.
var builder = WebApplication.CreateBuilder(args);
// Registers IAmazonS3 configured for the SeaweedFS S3 Gateway
builder.AddSeaweedFSS3Client("seaweedfs");
// Registers a strongly-typed HttpClient for native SeaweedFS Filer operations
builder.AddSeaweedFSFilerClient("seaweedfs");
Additional context
I have already fully implemented this feature locally to ensure it fits the .NET Aspire architectural guidelines. The implementation includes:
CommunityToolkit.Aspire.Hosting.SeaweedFS: AppHost resource builder with dynamic endpoint routing (WithS3, WithFiler, WithDataVolume, etc.).
CommunityToolkit.Aspire.SeaweedFS.Client: Dependency injection extensions for IAmazonS3 and SeaweedFSFilerClient, including built-in health checks.
- Comprehensive Tests: Unit tests and E2E functional tests using
AspireIntegrationTestFixture and Docker.
- Example App: A fully working example demonstrating both S3 and Filer endpoints.
I am ready to open a Pull Request with all the code as soon as this proposal is evaluated!
Help us help you
Yes, I'd like to be assigned to work on this item
Overview
Is your feature request related to a problem? Please describe.
With the recent shifts in licensing and the deprecation of some older object storage components (such as MinIO becoming less viable for certain open-source/enterprise scenarios without strict AGPL compliance), there is a growing need for a highly performant, scalable, and flexible storage alternative in the .NET Aspire ecosystem.
SeaweedFS (https://github.com/seaweedfs/seaweedfs) is an excellent, highly scalable distributed file system that provides both a Native Filer API and an S3-compatible gateway. It is lightweight, extremely fast, and solves the need for a reliable object/file storage component.
Describe the solution you'd like
I propose adding a complete integration for SeaweedFS to the Community Toolkit, consisting of both Hosting and Client packages.
Hosting Integration (
CommunityToolkit.Aspire.Hosting.SeaweedFS):A robust resource builder that allows developers to easily spin up a SeaweedFS cluster and opt-in to the specific APIs they need:
WithS3(): Enables the S3-Compatible API Gateway.WithFiler(): Enables the Native Filer API.WithDataVolume()/WithDataBindMount(): For state persistence.Client Integration (
CommunityToolkit.Aspire.SeaweedFS.Client):Seamless dependency injection for consuming the cluster APIs:
AddSeaweedFSS3Client(): Wires up the standardAWSSDK.S3IAmazonS3client securely to the Aspire container.AddSeaweedFSFilerClient(): Registers a strongly-typedHttpClientfor ultra-fast native Filer API operations.Usage example
1. AppHost Configuration (Hosting):
Developers can spin up the cluster, opt-in to the S3 Gateway or Native Filer, and persist data using volumes:
2. Consuming the APIs (Client):
In the consuming project, developers can easily inject the standard AWS S3 client or the strongly-typed Filer HTTP client. The integration handles the dynamic endpoints automatically.
Additional context
I have already fully implemented this feature locally to ensure it fits the .NET Aspire architectural guidelines. The implementation includes:
CommunityToolkit.Aspire.Hosting.SeaweedFS: AppHost resource builder with dynamic endpoint routing (WithS3,WithFiler,WithDataVolume, etc.).CommunityToolkit.Aspire.SeaweedFS.Client: Dependency injection extensions forIAmazonS3andSeaweedFSFilerClient, including built-in health checks.AspireIntegrationTestFixtureand Docker.I am ready to open a Pull Request with all the code as soon as this proposal is evaluated!
Help us help you
Yes, I'd like to be assigned to work on this item