From d70ea89f96fc2c2e745dbe1278f9d13fd279934b Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 16 Nov 2025 18:51:02 +0000 Subject: [PATCH 1/2] Initial plan From ddc87a0b9b6bc94dd395ff5ae906dfd893834f07 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 16 Nov 2025 18:55:21 +0000 Subject: [PATCH 2/2] Add Google Protocol Buffers documentation to Orleans serialization docs Co-authored-by: ReubenBond <203839+ReubenBond@users.noreply.github.com> --- .../serialization-configuration.md | 17 +++++++++++++++++ .../serialization-customization.md | 3 ++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/docs/orleans/host/configuration-guide/serialization-configuration.md b/docs/orleans/host/configuration-guide/serialization-configuration.md index 9ae23a9e772a8..04ca7ec998877 100644 --- a/docs/orleans/host/configuration-guide/serialization-configuration.md +++ b/docs/orleans/host/configuration-guide/serialization-configuration.md @@ -48,6 +48,23 @@ siloBuilder.Services.AddSerializer(serializerBuilder => }); ``` +## Configure Orleans to use Google Protocol Buffers + +To configure Orleans to use Google Protocol Buffers (Protobuf) to serialize your types, reference the [Microsoft.Orleans.Serialization.Protobuf](https://nuget.org/packages/Microsoft.Orleans.Serialization.Protobuf) NuGet package. Then, configure the serializer, specifying which types it will be responsible for. In the following example, we specify that the Protobuf serializer is responsible for all types in the `Example.Namespace` namespace. + +- Install the [Microsoft.Orleans.Serialization.Protobuf](https://nuget.org/packages/Microsoft.Orleans.Serialization.Protobuf) NuGet package. +- Configure the serializer using the method. + +Consider the following example when interacting with the : + +```csharp +siloBuilder.Services.AddSerializer(serializerBuilder => +{ + serializerBuilder.AddProtobufSerializer( + isSupported: type => type.Namespace.StartsWith("Example.Namespace")); +}); +``` + :::zone-end diff --git a/docs/orleans/host/configuration-guide/serialization-customization.md b/docs/orleans/host/configuration-guide/serialization-customization.md index 727aa733fb769..df19d45e08a49 100644 --- a/docs/orleans/host/configuration-guide/serialization-customization.md +++ b/docs/orleans/host/configuration-guide/serialization-customization.md @@ -16,10 +16,11 @@ One important aspect of Orleans is its support for customization of serializatio :::zone target="docs" pivot="orleans-7-0" -Orleans provides two serializer implementations: +Orleans provides three serializer implementations: - [Microsoft.Orleans.Serialization.SystemTextJson](https://nuget.org/packages/Microsoft.Orleans.Serialization.SystemTextJson) - [Microsoft.Orleans.Serialization.NewtonsoftJson](https://nuget.org/packages/Microsoft.Orleans.Serialization.NewtonsoftJson) +- [Microsoft.Orleans.Serialization.Protobuf](https://nuget.org/packages/Microsoft.Orleans.Serialization.Protobuf) To configure either of these packages, see [Serialization configuration in Orleans](serialization-configuration.md?pivots=orleans-7-0).