Eventos
Junte-se a nós na FabCon Vegas
31 de mar., 23 - 2 de abr., 23
O melhor evento liderado pela comunidade Microsoft Fabric, Power BI, SQL e AI. 31 de março a 2 de abril de 2025.
Registre-se hoje mesmoNão há mais suporte para esse navegador.
Atualize o Microsoft Edge para aproveitar os recursos, o suporte técnico e as atualizações de segurança mais recentes.
Observação
Esta não é a versão mais recente deste artigo. Para a versão atual, consulte a versão .NET 9 deste artigo.
Aviso
Esta versão do ASP.NET Core não tem mais suporte. Para obter mais informações, consulte a Política de Suporte do .NET e do .NET Core. Para a versão atual, consulte a versão .NET 9 deste artigo.
Importante
Essas informações relacionam-se ao produto de pré-lançamento, que poderá ser substancialmente modificado antes do lançamento comercial. A Microsoft não oferece nenhuma garantia, explícita ou implícita, quanto às informações fornecidas aqui.
Para a versão atual, consulte a versão .NET 9 deste artigo.
Devido à implementação da pilha subjacente, nem todos os recursos funcionam da mesma forma entre aplicativos gRPC baseados em C-core e o gRPC para .NET. Este documento realça as principais diferenças para migrar entre as duas pilhas.
Importante
O gRPC C-core está no modo de manutenção e será preterido em favor do gRPC para .NET. O gRPC C-core não é recomendado para novos aplicativos.
O gRPC C-core e o gRPC para .NET têm suporte de plataforma diferente:
Grpc.Core
é um wrapper do .NET em torno do gRPC C-core e contém um cliente e um servidor gRPC. Ele dá suporte a .NET Framework, .NET Core e .NET 5 ou posteriores.Grpc.AspNetCore
contém um servidor gRPC hospedado no ASP.NET Core e requer o .NET Core 3.x ou o .NET 5 e versões posteriores. O pacote Grpc.Net.Client
contém um cliente gRPC. O cliente no Grpc.Net.Client
tem suporte limitado para o .NET Framework usando WinHttpHandler.Para obter mais informações, confira gRPC em plataformas com suporte do .NET.
Pacotes NuGet, configuração e código de inicialização devem ser modificados ao migrar do gRPC C-Core para o gRPC para .NET.
O gRPC para .NET tem pacotes NuGet separados para seu cliente e servidor. Os pacotes adicionados dependem se um aplicativo está hospedando serviços gRPC ou chamando-os:
Grpc.AspNetCore
: os serviços são hospedados pelo ASP.NET Core. Para obter informações de configuração do servidor, confira Serviços gRPC com o ASP.NET Core.Grpc.Net.Client
: os clientes usam GrpcChannel
, que usa internamente a funcionalidade de rede interna no .NET. Para obter informações de configuração do cliente, confira Chamar serviços gRPC com o cliente .NET.Quando a migração for concluída, o pacote Grpc.Core
deverá ser removido do aplicativo. Grpc.Core
contém binários nativos grandes e a remoção do pacote reduz o tempo de restauração do NuGet e o tamanho do aplicativo.
gRPC C-Core e gRPC para .NET compartilham muitas APIs e o código gerado a partir de arquivos .proto
é compatível com ambas as implementações de gRPC. A maioria dos clientes e serviços pode ser migrada do C-Core para o gRPC para .NET sem alterações.
Na pilha do ASP.NET Core, os serviços gRPC, por padrão, são criados com um tempo de vida com escopo. Por outro lado, o gRPC C-core por padrão se associa a um serviço com um tempo de vida singleton.
Um tempo de vida com escopo permite que a implementação do serviço resolve outros serviços com tempos de vida com escopo. Por exemplo, um tempo de vida com escopo também pode resolver DbContext
do contêiner de DI por meio da injeção de construtor. Usando o tempo de vida com escopo:
Para obter mais informações sobre os tempos de vida do serviço, confira Injeção de dependência no ASP.NET Core.
Para facilitar a transição de uma implementação de gRPC C-core para o ASP.NET Core, é possível alterar o tempo de vida do serviço da implementação do serviço de escopo para singleton. Isso envolve a adição de uma instância da implementação do serviço ao contêiner de DI:
public void ConfigureServices(IServiceCollection services)
{
services.AddGrpc();
services.AddSingleton(new GreeterService());
}
No entanto, uma implementação de serviço com um tempo de vida singleton não é mais capaz de resolver serviços com escopo por meio da injeção de construtor.
Em aplicativos baseados em C-core, configurações como grpc.max_receive_message_length
e grpc.max_send_message_length
são configuradas com ChannelOption
ao construir a instância do servidor.
No ASP.NET Core, o gRPC fornece configuração por meio do tipo GrpcServiceOptions
. Por exemplo, o tamanho máximo da mensagem de entrada de um serviço do gRPC pode ser configurado por meio de AddGrpc
. O exemplo a seguir altera o padrão MaxReceiveMessageSize
de 4 MB para 16 MB:
public void ConfigureServices(IServiceCollection services)
{
services.AddGrpc(options =>
{
options.MaxReceiveMessageSize = 16 * 1024 * 1024; // 16 MB
});
}
Para obter mais informações sobre a configuração, confira gRPC para configuração do .NET.
Os aplicativos baseados em C-core dependem do GrpcEnvironment
para configurar o agente para fins de depuração. A pilha do ASP.NET Core fornece essa funcionalidade por meio da API de registro em log. Por exemplo, um agente pode ser adicionado ao serviço gRPC por meio de injeção de construtor:
public class GreeterService : Greeter.GreeterBase
{
public GreeterService(ILogger<GreeterService> logger)
{
}
}
Para obter mais informações sobre diagnóstico e registro em log do gRPC, confira Registro em log e diagnóstico no gRPC no .NET.
Os aplicativos baseados em C-core configuram o HTTPS por meio da propriedade Server.Ports. Um conceito semelhante é usado para configurar servidores no ASP.NET Core. Por exemplo, Kestrel usa a configuração de ponto de extremidade para essa funcionalidade.
Os aplicativos baseados em C-core configuram o HTTPS por meio da propriedade Server.Ports. Um conceito semelhante é usado para configurar servidores no ASP.NET Core. Por exemplo, Kestrel usa a configuração de ponto de extremidade para essa funcionalidade.
O middleware do ASP.NET Core oferece funcionalidades semelhantes em comparação com interceptadores em aplicativos gRPC baseados em C-core. Ambos são compatíveis com aplicativos gRPC do ASP.NET Core, portanto, não há necessidade de reescrever interceptadores.
Para obter mais informações sobre como esses recursos se comparam entre si, confira Interceptores gRPC versus Middleware.
Um servidor baseado em C-core pode ser adicionado a qualquer tipo de projeto. O gRPC para servidor .NET requer o ASP.NET Core. O ASP.NET Core geralmente está disponível porque o arquivo de projeto especifica Microsoft.NET.SDK.Web
como o SDK.
Um servidor gRPC pode ser hospedado em projetos que não sejam do ASP.NET Core adicionando <FrameworkReference Include="Microsoft.AspNetCore.App" />
a um projeto. A referência da estrutura disponibiliza APIs do ASP.NET Core e elas podem ser usadas para iniciar um servidor ASP.NET Core.
Para mais informações, confira Hospedar gRPC em projetos que não são do ASP.NET Core.
Comentários do ASP.NET Core
O ASP.NET Core é um projeto código aberto. Selecione um link para fornecer comentários:
Eventos
Junte-se a nós na FabCon Vegas
31 de mar., 23 - 2 de abr., 23
O melhor evento liderado pela comunidade Microsoft Fabric, Power BI, SQL e AI. 31 de março a 2 de abril de 2025.
Registre-se hoje mesmoTreinamento
Roteiro de aprendizagem
Criar aplicativos e serviços nativos de nuvem com .NET e ASP.NET Core - Training
Crie serviços e aplicativos implantáveis de modo independente, altamente escalonáveis e resiliente, usando a plataforma .NET gratuita e de código aberto. Com o .NET, você pode usar tecnologias de microsserviço populares, como Docker, Kubernetes, Dapr, Registro de Contêiner do Azure e muitas outras, para aplicativos e serviços do .NET e do ASP.NET Core.