System.Text.Json integration for Orleans.Serialization
$ dotnet add package Microsoft.Orleans.Serialization.SystemTextJsonMicrosoft Orleans Serialization for System.Text.Json provides JSON serialization support for Microsoft Orleans using the modern System.Text.Json library. This allows you to use the high-performance JSON serialization capabilities from the .NET runtime within your Orleans application.
To use this package, install it via NuGet:
dotnet add package Microsoft.Orleans.Serialization.SystemTextJson
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Orleans.Hosting;
using Orleans.Serialization;
var builder = Host.CreateApplicationBuilder(args)
.UseOrleans(siloBuilder =>
{
siloBuilder
.UseLocalhostClustering()
// Configure System.Text.Json as a serializer
.AddSerializer(serializerBuilder => serializerBuilder.AddSystemTextJsonSerializer(type => type.Namespace.StartsWith("ExampleGrains")));
});
// Run the host
await builder.RunAsync();
using Orleans;
using System.Text.Json.Serialization;
namespace ExampleGrains;
// Define a class with System.Text.Json attributes
public class MyJsonClass
{
[JsonPropertyName("full_name")]
public string Name { get; set; }
[JsonPropertyName("age")]
public int Age { get; set; }
[JsonPropertyName("tags")]
public List<string> Tags { get; set; }
[JsonIgnore]
public string SecretData { get; set; }
}
// You can use it directly in your grain interfaces and implementation
public interface IMyGrain : IGrainWithStringKey
{
Task<MyJsonClass> GetData();
Task SetData(MyJsonClass data);
}
public class MyGrain : Grain, IMyGrain
{
private MyJsonClass _data;
public Task<MyJsonClass> GetData()
{
return Task.FromResult(_data);
}
public Task SetData(MyJsonClass data)
{
_data = data;
return Task.CompletedTask;
}
}
For more comprehensive documentation, please refer to: