Microsoft.Orleans.Serialization.Protobuf
9.2.0-preview3
Prefix Reserved
See the version list below for details.
dotnet add package Microsoft.Orleans.Serialization.Protobuf --version 9.2.0-preview3
NuGet\Install-Package Microsoft.Orleans.Serialization.Protobuf -Version 9.2.0-preview3
<PackageReference Include="Microsoft.Orleans.Serialization.Protobuf" Version="9.2.0-preview3" />
<PackageVersion Include="Microsoft.Orleans.Serialization.Protobuf" Version="9.2.0-preview3" />
<PackageReference Include="Microsoft.Orleans.Serialization.Protobuf" />
paket add Microsoft.Orleans.Serialization.Protobuf --version 9.2.0-preview3
#r "nuget: Microsoft.Orleans.Serialization.Protobuf, 9.2.0-preview3"
#:package Microsoft.Orleans.Serialization.Protobuf@9.2.0-preview3
#addin nuget:?package=Microsoft.Orleans.Serialization.Protobuf&version=9.2.0-preview3&prerelease
#tool nuget:?package=Microsoft.Orleans.Serialization.Protobuf&version=9.2.0-preview3&prerelease
Microsoft Orleans Serialization for Protobuf
Introduction
Microsoft Orleans Serialization for Protobuf provides Protocol Buffers (Protobuf) serialization support for Microsoft Orleans. Protobuf is a compact, efficient binary serialization format developed by Google, which is ideal for high-performance scenarios requiring efficient serialization and deserialization.
Getting Started
To use this package, install it via NuGet:
dotnet add package Microsoft.Orleans.Serialization.Protobuf
Example - Configuring Protobuf Serialization
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Orleans.Hosting;
using Orleans.Serialization;
var builder = Host.CreateApplicationBuilder(args)
.UseOrleans(siloBuilder =>
{
siloBuilder
.UseLocalhostClustering()
// Configure Protobuf as a serializer
.AddSerializer(serializerBuilder => serializerBuilder.AddProtobufSerializer());
});
// Run the host
await builder.RunAsync();
Example - Using Protobuf with a Custom Type
using Orleans;
using ProtoBuf;
// Define a class with Protobuf attributes
[ProtoContract]
public class MyProtobufClass
{
[ProtoMember(1)]
public string Name { get; set; }
[ProtoMember(2)]
public int Age { get; set; }
[ProtoMember(3)]
public List<string> Tags { get; set; }
}
// You can use it directly in your grain interfaces and implementation
public interface IMyGrain : IGrainWithStringKey
{
Task<MyProtobufClass> GetData();
Task SetData(MyProtobufClass data);
}
public class MyGrain : Grain, IMyGrain
{
private MyProtobufClass _data;
public Task<MyProtobufClass> GetData()
{
return Task.FromResult(_data);
}
public Task SetData(MyProtobufClass data)
{
_data = data;
return Task.CompletedTask;
}
}
Example - Using .proto Files
You can also use standard .proto files and generate C# classes:
// MyData.proto
syntax = "proto3";
option csharp_namespace = "MyApp.Protos";
message Person {
string name = 1;
int32 age = 2;
repeated string tags = 3;
}
Then reference the generated classes in your Orleans code:
using MyApp.Protos;
using Orleans;
public interface IPersonGrain : IGrainWithStringKey
{
Task<Person> GetPerson();
Task SetPerson(Person person);
}
public class PersonGrain : Grain, IPersonGrain
{
private Person _person;
public Task<Person> GetPerson()
{
return Task.FromResult(_person);
}
public Task SetPerson(Person person)
{
_person = person;
return Task.CompletedTask;
}
}
Documentation
For more comprehensive documentation, please refer to:
Feedback & Contributing
- If you have any issues or would like to provide feedback, please open an issue on GitHub
- Join our community on Discord
- Follow the @msftorleans Twitter account for Orleans announcements
- Contributions are welcome! Please review our contribution guidelines
- This project is licensed under the MIT license
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
.NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.1 is compatible. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.1
- Google.Protobuf (>= 3.28.2)
- Microsoft.CodeAnalysis.Analyzers (>= 3.11.0)
- Microsoft.CodeAnalysis.Common (>= 4.5.0)
- Microsoft.CodeAnalysis.Workspaces.Common (>= 4.5.0)
- Microsoft.DotNet.PlatformAbstractions (>= 3.1.6)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.2)
- Microsoft.Extensions.DependencyModel (>= 8.0.2)
- Microsoft.Extensions.ObjectPool (>= 8.0.11)
- Microsoft.Extensions.Options (>= 8.0.2)
- Microsoft.Orleans.Analyzers (>= 9.2.0-preview3)
- Microsoft.Orleans.CodeGenerator (>= 9.2.0-preview3)
- Microsoft.Orleans.Serialization (>= 9.2.0-preview3)
- System.Collections.Immutable (>= 8.0.0)
- System.IO.Hashing (>= 8.0.0)
- System.IO.Pipelines (>= 8.0.0)
- System.Text.Json (>= 8.0.5)
-
net8.0
- Google.Protobuf (>= 3.28.2)
- Microsoft.CodeAnalysis.Analyzers (>= 3.11.0)
- Microsoft.CodeAnalysis.Common (>= 4.5.0)
- Microsoft.CodeAnalysis.Workspaces.Common (>= 4.5.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.2)
- Microsoft.Extensions.DependencyModel (>= 8.0.2)
- Microsoft.Extensions.ObjectPool (>= 8.0.11)
- Microsoft.Extensions.Options (>= 8.0.2)
- Microsoft.Orleans.Analyzers (>= 9.2.0-preview3)
- Microsoft.Orleans.CodeGenerator (>= 9.2.0-preview3)
- Microsoft.Orleans.Serialization (>= 9.2.0-preview3)
- System.Collections.Immutable (>= 8.0.0)
- System.IO.Hashing (>= 8.0.0)
- System.IO.Pipelines (>= 8.0.0)
NuGet packages (4)
Showing the top 4 NuGet packages that depend on Microsoft.Orleans.Serialization.Protobuf:
Package | Downloads |
---|---|
FunctionTestHost
Host for integration testing Azure Isolated Functions |
|
Orleans.Streaming.EventStore
EventStore Grpc client implementation of streaming for Microsoft Orleans Streaming. |
|
Microsoft.AutoGen.RuntimeGateway.Grpc
A programming framework for agentic AI |
|
FunctionTestHost.ServiceBus
Host for integration testing Azure Isolated Functions |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last Updated |
---|---|---|
9.2.0 | 26 | 7/14/2025 |
9.2.0-preview3 | 377 | 6/10/2025 |
9.2.0-preview2 | 137 | 6/4/2025 |
9.2.0-preview1 | 172 | 4/4/2025 |
9.1.2 | 26,566 | 2/13/2025 |
9.0.1 | 33,054 | 11/23/2024 |
9.0.0 | 1,229 | 11/14/2024 |
8.2.0 | 41,629 | 7/12/2024 |
8.2.0-preview1 | 138 | 5/22/2024 |
8.1.0 | 30,833 | 4/17/2024 |
8.1.0-preview3 | 202 | 3/11/2024 |
8.1.0-preview2 | 129 | 2/23/2024 |
8.1.0-preview1 | 128 | 2/13/2024 |
8.0.0 | 26,339 | 1/5/2024 |
8.0.0-rc2 | 202 | 12/20/2023 |
8.0.0-rc1 | 168 | 12/4/2023 |
7.2.7 | 142 | 10/15/2024 |
7.2.6 | 5,166 | 3/9/2024 |
7.2.5 | 190 | 2/22/2024 |
7.2.4 | 9,514 | 12/2/2023 |
7.2.3 | 5,226 | 11/3/2023 |
7.2.2 | 1,127 | 10/16/2023 |
7.2.1 | 18,808 | 7/11/2023 |
7.2.0 | 15,195 | 7/7/2023 |
7.1.2 | 27,354 | 4/19/2023 |
7.1.1 | 1,416 | 3/23/2023 |