https://github.com/ravendb/orleans.providers.ravendb
Orleans providers for RavenDB
https://github.com/ravendb/orleans.providers.ravendb
Last synced: 7 months ago
JSON representation
Orleans providers for RavenDB
- Host: GitHub
- URL: https://github.com/ravendb/orleans.providers.ravendb
- Owner: ravendb
- License: mit
- Created: 2024-05-23T11:38:33.000Z (about 2 years ago)
- Default Branch: master
- Last Pushed: 2025-09-07T12:06:06.000Z (11 months ago)
- Last Synced: 2025-09-07T14:21:47.158Z (11 months ago)
- Language: C#
- Homepage:
- Size: 1.65 MB
- Stars: 2
- Watchers: 4
- Forks: 4
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# RavenDB-Orleans Provider
[](https://github.com/ravendb/Orleans.Providers.RavenDB/actions/workflows/orleansTests.yml)
[](https://www.nuget.org/packages/Orleans.Providers.RavenDB/)
[](LICENSE.md)
## π Overview
**RavenDB-Orleans Provider** is a [Microsoft Orleans](https://dotnet.github.io/orleans/) storage provider that integrates [RavenDB](https://ravendb.net/) as a backing store for grain persistence, reminders, and clustering.
This provider enables **high-performance, distributed applications** that leverage the event-driven, distributed actor model of Orleans with the **scalability and flexibility of RavenDB**.
---
## π Features
β **Grain Storage** β Persist and retrieve Orleans grain states using RavenDB.
β **Reminders Provider** β Stores Orleans timers and reminders in RavenDB.
β **Clustering Support** β Uses RavenDB for **Orleans cluster membership management**.
β **Optimized Queries** β Efficient indexing and querying using **RavenDBβs built-in indexing**.
β **Fully Asynchronous** β Non-blocking, highly scalable storage provider.
β **.NET 8 Support** β Fully compatible with the latest Orleans & .NET 8.
---
## π§ Configuration
```csharp
var host = Host.CreateDefaultBuilder(args)
.UseOrleans(siloBuilder =>
{
// Define RavenDB connection settings
string serverUrl = "http://localhost:8080";
string databaseName = "OrleansDemo";
siloBuilder
// Configure clustering with RavenDB
.UseRavenDbMembershipTable(options =>
{
options.Urls = new[] { serverUrl };
options.DatabaseName = databaseName;
})
// Configure grain storage with RavenDB
.AddRavenDbGrainStorage("RavenGrainStorage", options =>
{
options.Urls = new[] { serverUrl };
options.DatabaseName = databaseName;
})
// Configure reminders with RavenDB
.AddRavenDbReminderTable(options =>
{
options.Urls = new[] { serverUrl };
options.DatabaseName = databaseName;
})
// Configure other Orleans settings
.Configure(options =>
{
options.ClusterId = "dev";
options.ServiceId = "OrleansDemo";
})
.Configure(options =>
{
options.AdvertisedIPAddress = IPAddress.Loopback;
options.SiloPort = 11111;
options.GatewayPort = 30000;
})
.ConfigureLogging(logging => logging.AddConsole());
}).Build();
await host.RunAsync();
```
---
## π¦ Installation
You can install the package via NuGet:
```sh
dotnet add package Orleans.Providers.RavenDb
```
To build the project locally, run:
```sh
pwsh ./build.ps1
```
or (on Linux/macOS)
```sh
./build.sh
```
---
## π Documentation Links
- Official Orleans Documentation: https://dotnet.github.io/orleans/
- RavenDB Documentation: https://ravendb.net/docs/