A pure managed .NET 10 client for Apache Geode, designed from scratch with dependency injection, modern async I/O, and zero external NuGet dependencies.
Status: Pre-alpha. Active development. Not yet production-ready.
Apache Geode's official .NET client (apache/geode-native clicache/) is built
on C++/CLI, which Microsoft has officially placed in maintenance mode for
.NET 5+ — Windows-only, no AOT, no SDK-style projects, no future investment.
This project is a clean-room implementation that:
- Targets .NET 10 LTS
- Is cross-platform (Linux / macOS / Windows)
- Has zero external runtime dependencies (everything from BCL)
- Is DI-first: register with
services.AddGeodeClient(...), injectIGeodeCache - Configures via
appsettings.json+IOptions<T>— nocache.xml - Is published as a regular NuGet package with Source Link
dotnet add package Geode.Client --prerelease// Program.cs
var builder = Host.CreateApplicationBuilder(args);
builder.Services.AddGeodeClient(builder.Configuration.GetSection("Geode"));
var app = builder.Build();
// Inject IGeodeCache anywhere
public class OrderService(IGeodeCache cache)
{
private readonly IRegion<string, byte[]> _orders =
cache.GetRegion<string, byte[]>("orders");
public Task SaveAsync(string id, byte[] payload) =>
_orders.PutAsync(id, payload);
}// appsettings.json
{
"Geode": {
"Locators": ["localhost:10334"],
"Pool": { "MaxConnections": 10 }
}
}# Build & test
dotnet build
dotnet test
# Run integration tests (auto-starts Geode in Docker via Testcontainers)
dotnet test tests/Geode.Client.IntegrationTestsTo run a local Geode for manual testing:
docker compose up -d
# Geode locator on :10334, server on :40404Apache-2.0, matching the upstream apache/geode-native project.