Library that enables applications to communicate with gRPC services using code-first approach, helps to get around some limitations of gRPC protocol. Provides exception handling. Helps to migrate existing WCF solution to gRPC with minimum effort.
$ dotnet add package ServiceModel.Grpc.ProtoBufMarshallerServiceModel.Grpc enables applications to communicate with gRPC services using a code-first approach (no .proto files), helps to get around limitations of gRPC protocol like "only reference types", "exact one input", "no nulls", "no value-types". Provides exception handling. Helps to migrate existing WCF solution to gRPC with minimum effort.
ServiceModel.Grpc.ProtoBufMarshaller is package with IMarshallerFactory implementation, based on protobuf-net serializer.
Instruct ClientFactory to use ProtobufMarshallerFactory as default marshaller for all clients.
IClientFactory defaultClientFactory
= new ClientFactory(new ServiceModelGrpcClientOptions
{
// set ProtobufMarshaller as default Marshaller
MarshallerFactory = ProtobufMarshallerFactory.Default
});
Instruct ClientFactory to use ProtobufMarshallerFactory for concrete client.
// client factory with default (DataContractMarshallerFactory) marshaller
IClientFactory defaultClientFactory = new ClientFactory();
// set ProtobufMarshaller only for ICalculator client
defaultClientFactory.AddClient<ICalculator>(options =>
{
options.MarshallerFactory = ProtobufMarshallerFactory.Default;
});
Instruct ServiceModel.Grpc code-first to use ProtobufMarshallerFactory as default marshaller for all endpoints.
var builder = WebApplication.CreateBuilder();
// enable ServiceModel.Grpc code-first
builder.Services.AddServiceModelGrpc(options =>
{
// set ProtobufMarshaller as default Marshaller
options.DefaultMarshallerFactory = ProtobufMarshallerFactory.Default;
});
Instruct ServiceModel.Grpc code-first to use for concrete endpoint.
ProtobufMarshallerFactoryvar builder = WebApplication.CreateBuilder();
// enable ServiceModel.Grpc code-first with default (DataContractMarshallerFactory) marshaller
builder.Services.AddServiceModelGrpc();
// set ProtobufMarshaller only for Calculator endpoint
builder.Services.AddServiceModelGrpcServiceOptions<Calculator>(options =>
{
options.MarshallerFactory = ProtobufMarshallerFactory.Default;
});Instruct ServiceModel.Grpc code-first to use ProtobufMarshallerFactory.
var server = new Grpc.Core.Server();
// set ProtobufMarshaller for Calculator endpoint
server.Services.AddServiceModelTransient(
()=> new Calculator(),
options =>
{
options.MarshallerFactory = ProtobufMarshallerFactory.Default;
});