ServiceModel.Grpc.Client.DependencyInjection
see example
Integration with Grpc.Net.ClientFactory
IServiceCollection services = ...
services
// Grpc.Net.ClientFactory registration
.AddGrpcClient<ICalculator>(options =>
{
options.Address = new Uri("https://localhost:5001");
})
// use ServiceModel.Grpc creator
.ConfigureServiceModelGrpcClientCreator<ICalculator>((options, serviceProvider) =>
{
options.MarshallerFactory = ...
options.ErrorHandler = ...
});
IServiceProvider serviceProvider = ...
ICalculator calculator = serviceProvider.GetRequiredService<ICalculator>();
Simple client registration with custom gRPC channel
The channel will be resolved from ServiceProvider
IServiceCollection services = ...;
// register channel
services.AddSingleton<ChannelBase>(GrpcChannel.ForAddress("http://localhost:5000"));
// register client
services
.AddServiceModelGrpcClient<ICalculator>((options, serviceProvider) =>
{
options.MarshallerFactory = ...
options.ErrorHandler = ...
});
IServiceProvider serviceProvider = ...
ICalculator calculator = serviceProvider.GetRequiredService<ICalculator>();
Provide the channel for client registration
IServiceCollection services = ...;
// register client with channel
services
.AddServiceModelGrpcClient<ICalculator>(
(options, serviceProvider) =>
{
options.MarshallerFactory = ...
options.ErrorHandler = ...
},
ChannelProviderFactory.Singleton(GrpcChannel.ForAddress("http://localhost:5000")));
IServiceProvider serviceProvider = ...
ICalculator calculator = serviceProvider.GetRequiredService<ICalculator>();
ClientFactory registration with custom gRPC channel
The channel will be resolved from ServiceProvider
IServiceCollection services = ...;
// register channel
services.AddSingleton<ChannelBase>(GrpcChannel.ForAddress("http://localhost:5000"));
services
// configure ClientFactory
.AddServiceModelGrpcClientFactory((options, serviceProvider) =>
{
options.MarshallerFactory = ...
options.ErrorHandler = ...
})
// register client
.AddClient<ICalculator>();
IServiceProvider serviceProvider = ...
ICalculator calculator = serviceProvider.GetRequiredService<ICalculator>();
Provide the channel for factory registration
IServiceCollection services = ...;
services
// configure ClientFactory
.AddServiceModelGrpcClientFactory((options, serviceProvider) =>
{
options.MarshallerFactory = ...
options.ErrorHandler = ...
})
// provide channel
.ConfigureDefaultChannel(ChannelProviderFactory.Singleton(GrpcChannel.ForAddress("http://localhost:5000")))
// register client
.AddClient<ICalculator>();
IServiceProvider serviceProvider = ...
ICalculator calculator = serviceProvider.GetRequiredService<ICalculator>();