gRPC para configuração de ASP.NET CoregRPC for ASP.NET Core configuration

Configurar opções de serviçosConfigure services options

A tabela a seguir descreve as opções para configurar os serviços gRPCs:The following table describes options for configuring gRPC services:

OpçãoOption Valor padrãoDefault Value DescriçãoDescription
MaxSendMessageSize null O tamanho máximo da mensagem em bytes que pode ser enviado do servidor.The maximum message size in bytes that can be sent from the server. A tentativa de enviar uma mensagem que exceda o tamanho máximo da mensagem configurada resultará em uma exceção.Attempting to send a message that exceeds the configured maximum message size results in an exception.
MaxReceiveMessageSize 4 MB4 MB O tamanho máximo da mensagem em bytes que pode ser recebido pelo servidor.The maximum message size in bytes that can be received by the server. Se o servidor receber uma mensagem que exceda esse limite, ele lançará uma exceção.If the server receives a message that exceeds this limit, it throws an exception. Aumentar esse valor permite que o servidor receba mensagens maiores, mas pode afetar negativamente o consumo de memória.Increasing this value allows the server to receive larger messages, but can negatively impact memory consumption.
EnableDetailedErrors false Se true, as mensagens de exceção detalhadas serão retornadas aos clientes quando uma exceção for lançada em um método de serviço.If true, detailed exception messages are returned to clients when an exception is thrown in a service method. O padrão é false.The default is false. A EnableDetailedErrors configuração true para pode vazar informações confidenciais.Setting EnableDetailedErrors to true can leak sensitive information.
CompressionProviders gzipgzip Uma coleção de provedores de compactação usados para compactar e descompactar mensagens.A collection of compression providers used to compress and decompress messages. Os provedores de compactação personalizados podem ser criados e adicionados à coleção.Custom compression providers can be created and added to the collection. Os provedores configurados padrão dão suporte à compactação gzip .The default configured providers support gzip compression.
ResponseCompressionAlgorithm null O algoritmo de compactação usado para compactar mensagens enviadas do servidor.The compression algorithm used to compress messages sent from the server. O algoritmo deve corresponder a um provedor de CompressionProviderscompactação no.The algorithm must match a compression provider in CompressionProviders. Para que o algoritmo compacte uma resposta, o cliente deve indicar que ele dá suporte ao algoritmo enviando-o no cabeçalho grpc-Accept-Encoding .For the algorithm to compress a response, the client must indicate it supports the algorithm by sending it in the grpc-accept-encoding header.
ResponseCompressionLevel null O nível de compactação usado para compactar mensagens enviadas do servidor.The compress level used to compress messages sent from the server.

As opções podem ser configuradas para todos os serviços, fornecendo um AddGrpc delegado de Startup.ConfigureServicesopções para a chamada em:Options can be configured for all services by providing an options delegate to the AddGrpc call in Startup.ConfigureServices:

public void ConfigureServices(IServiceCollection services)
{
    services.AddGrpc(options =>
    {
        options.EnableDetailedErrors = true;
        options.MaxReceiveMessageSize = 2 * 1024 * 1024; // 2 MB
        options.MaxSendMessageSize = 5 * 1024 * 1024; // 5 MB
    });
}

As opções para um único serviço substituem as opções globais AddGrpc fornecidas no e podem ser AddServiceOptions<TService>configuradas usando:Options for a single service override the global options provided in AddGrpc and can be configured using AddServiceOptions<TService>:

public void ConfigureServices(IServiceCollection services)
{
    services.AddGrpc().AddServiceOptions<MyService>(options =>
    {
        options.MaxReceiveMessageSize = 2 * 1024 * 1024; // 2 MB
        options.MaxSendMessageSize = 5 * 1024 * 1024; // 5 MB
    });
}

Configurar opções do clienteConfigure client options

A tabela a seguir descreve as opções para configurar os canais gRPC:The following table describes options for configuring gRPC channels:

OpçãoOption Valor padrãoDefault Value DescriçãoDescription
HttpClient Nova instânciaNew instance O HttpClient usado para fazer chamadas gRPC.The HttpClient used to make gRPC calls. Um cliente pode ser definido para configurar um personalizado HttpClientHandlerou adicionar manipuladores adicionais ao pipeline http para chamadas gRPC.A client can be set to configure a custom HttpClientHandler, or add additional handlers to the HTTP pipeline for gRPC calls. Se não HttpClient for especificado, uma nova HttpClient instância será criada para o canal.If no HttpClient is specified, then a new HttpClient instance is created for the channel. Ele será descartado automaticamente.It will automatically be disposed.
DisposeHttpClient false Se truee um HttpClient for especificado, a HttpClient instância será descartada quando o GrpcChannel for descartado.If true, and an HttpClient is specified, then the HttpClient instance will be disposed when the GrpcChannel is disposed.
LoggerFactory null O LoggerFactory usado pelo cliente para registrar informações sobre chamadas gRPC.The LoggerFactory used by the client to log information about gRPC calls. Uma LoggerFactory instância pode ser resolvida da injeção de dependência ou LoggerFactory.Createcriada usando.A LoggerFactory instance can be resolved from dependency injection or created using LoggerFactory.Create. Para obter exemplos de configuração de registro Como fazer registro em log no .NET Core e no ASP.NET Coreem log, consulte.For examples of configuring logging, see Como fazer registro em log no .NET Core e no ASP.NET Core.
MaxSendMessageSize null O tamanho máximo da mensagem em bytes que pode ser enviado do cliente.The maximum message size in bytes that can be sent from the client. A tentativa de enviar uma mensagem que exceda o tamanho máximo da mensagem configurada resultará em uma exceção.Attempting to send a message that exceeds the configured maximum message size results in an exception.
MaxReceiveMessageSize 4 MB4 MB O tamanho máximo da mensagem em bytes que pode ser recebido pelo cliente.The maximum message size in bytes that can be received by the client. Se o cliente receber uma mensagem que exceda esse limite, ele lançará uma exceção.If the client receives a message that exceeds this limit, it throws an exception. Aumentar esse valor permite que o cliente receba mensagens maiores, mas pode afetar negativamente o consumo de memória.Increasing this value allows the client to receive larger messages, but can negatively impact memory consumption.
Credentials null Uma instância de ChannelCredentials.A ChannelCredentials instance. As credenciais são usadas para adicionar metadados de autenticação a chamadas gRPC.Credentials are used to add authentication metadata to gRPC calls.
CompressionProviders gzipgzip Uma coleção de provedores de compactação usados para compactar e descompactar mensagens.A collection of compression providers used to compress and decompress messages. Os provedores de compactação personalizados podem ser criados e adicionados à coleção.Custom compression providers can be created and added to the collection. Os provedores configurados padrão dão suporte à compactação gzip .The default configured providers support gzip compression.

O código a seguir:The following code:

  • Define o tamanho máximo de mensagens de envio e recebimento no canal.Sets the maximum send and receive message size on the channel.
  • Cria um cliente.Creates a client.
static async Task Main(string[] args)
{
    var channel = GrpcChannel.ForAddress("https://localhost:5001", new GrpcChannelOptions
    {
        MaxReceiveMessageSize = 5 * 1024 * 1024, // 5 MB
        MaxSendMessageSize = 2 * 1024 * 1024 // 2 MB
    });
    var client = new Greeter.GreeterClient(channel);

    var reply = await client.SayHelloAsync(
                      new HelloRequest { Name = "GreeterClient" });
    Console.WriteLine("Greeting: " + reply.Message);
    await channel.ShutdownAsync();
    Console.WriteLine("Press any key to exit...");
    Console.ReadKey();
}

Recursos adicionaisAdditional resources