gRPC para desenvolvedores do WCF (Windows Communication Foundation)
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.
Este artigo fornece um resumo de por que o ASP.NET Core gRPC é uma boa opção para desenvolvedores do WCF (Windows Communication Foundation) que desejam migrar para arquiteturas e plataformas modernas.
Comparação com o WCF
Embora a implementação e a abordagem sejam diferentes para o gRPC, a experiência de desenvolver e consumir serviços com o gRPC deve ser intuitiva para os desenvolvedores do WCF. WCF e gRPC são estruturas RPC (chamada de procedimento remoto) com os mesmos objetivos:
- Torne possível codificar como se o cliente e o servidor estivessem na mesma plataforma.
- Forneça uma API de rede portátil simplificada.
Ambas as plataformas compartilham a exigência de declarar e implementar uma interface, embora o processo para declarar a interface seja diferente. Os diferentes tipos de chamadas RPC aos quais o gRPC dá suporte mapeiam bem para as associações disponíveis para os serviços WCF. Para obter mais informações e exemplos, confira Migrar uma solução WCF para o gRPC.
Benefícios do gRPC
O gRPC fornece uma estrutura melhor do que outras abordagens pelos seguintes motivos.
Desempenho
O gRPC usa HTTP/2. Em contraste com HTTP/1.1, HTTP/2:
- É um protocolo binário menor e mais rápido.
- É mais eficiente para os computadores analisarem.
- Dá suporte a solicitações de multiplexação em uma única conexão. O multiplexatório permite que várias solicitações sejam enviadas por uma conexão sem que as solicitações bloqueiem umas às outras. No HTTP/1.1, o bloqueio é conhecido como "bloqueio de cabeçalho de linha (HOL)".
O gRPC usa o Protobuf, um formato binário eficiente, para serializar mensagens. As mensagens do Protobuf são:
- Rápido para serializar e desserializar.
- Use menos largura de banda do que formatos baseados em texto.
O gRPC é uma boa solução para dispositivos móveis e redes com restrições de largura de banda.
Interoperabilidade
Há ferramentas e bibliotecas do gRPC para todas as principais linguagens e plataformas de programação, incluindo .NET, Java, Python, Go, C++, Node.js, Swift, Dart, Ruby e PHP. Graças ao formato de fio binário do Protobuf e à geração de código eficiente para cada plataforma, os desenvolvedores podem criar aplicativos multiplataforma e com desempenho.
Usabilidade e produtividade
O gRPC é uma solução de RPC abrangente. Ele funciona consistentemente em vários idiomas e plataformas. Ele também fornece excelentes ferramentas, com grande parte do código padrão gerado automaticamente. Assim como o WCF, o gRPC gera automaticamente mensagens e um cliente fortemente tipado. Mais tempo de desenvolvedor é liberado para se concentrar na lógica de negócios.
Streaming
O gRPC tem streaming bidirecional completo, que fornece funcionalidade semelhante aos serviços de duplex completos do WCF. O streaming do gRPC pode operar por conexões de internet regulares, balanceadores de carga e malhas de serviço.
Prazos, tempos limite e cancelamento
O gRPC permite que os clientes especifiquem um tempo máximo para que um RPC seja concluído. Se o prazo especificado for excedido, o servidor poderá cancelar a operação independentemente do cliente. Prazos e cancelamentos podem ser propagados por meio de subsequentes chamadas do gRPC para ajudar a impor limites de uso de recursos. Os clientes podem interromper as operações quando um prazo for excedido ou antes, se necessário. Por exemplo, os clientes podem interromper as operações devido a uma interação do usuário.
Segurança
O gRPC pode usar TLS e HTTP/2 para fornecer uma conexão criptografada de ponta a ponta entre o cliente e o servidor. O suporte à autenticação de certificado do cliente aumenta ainda mais a segurança e a confiança entre o cliente e o servidor.
O gRPC como um caminho de migração para o WCF para .NET Core e .NET 5
O .NET Core e .NET 5 marcam uma mudança no modo como a Microsoft oferece soluções de comunicação remota aos desenvolvedores que desejam fornecer serviços em uma variedade de plataformas. O .NET Core e o .NET 5 dão suporte à chamada de serviços WCF, mas não dão suporte do lado do servidor para hospedar o WCF.
Há dois caminhos recomendados para modernizar aplicativos do WCF:
O gRPC é criado com base em tecnologias modernas e emergiu como a escolha mais popular em toda a comunidade de desenvolvedores para aplicativos RPC. A partir do .NET Core 3.0, as plataformas .NET modernas têm um excelente suporte para o gRPC. Migrar serviços WCF para usar o gRPC ajuda a fornecer os recursos de RPC, desempenho, uma interoperabilidade necessária em aplicativos modernos.
O CoreWCF é um esforço da comunidade para trazer suporte para hospedar serviços do WCF no .NET Core e no .NET 5. Uma versão prévia está disponível e o projeto está trabalhando para estar pronto para produção. O CoreWCF só dá suporte a um subconjunto dos recursos do WCF, e os aplicativos .NET Framework que migram para usá-lo precisarão de alterações de código e testes para serem bem-sucedidos. O CoreWCF será uma boa opção se um aplicativo precisar manter a compatibilidade com clientes existentes que chamam serviços WCF.
Introdução
Para obter diretrizes detalhadas sobre como criar serviços gRPC no ASP.NET Core para desenvolvedores do WCF, confira gRPC do ASP.NET Core para desenvolvedores do WCF