Comparando o WCF com o gRPCComparing WCF to gRPC

O capítulo anterior forneceu uma boa visão sobre Protobuf e como o gRPC lida com mensagens.The previous chapter gave you a good look at Protobuf and how gRPC handles messages. Antes de você trabalhar com uma conversão detalhada de Windows Communication Foundation (WCF) para gRPC, é importante saber como os recursos disponíveis no WCF são manipulados no gRPC e quais soluções alternativas você pode usar quando não há nenhum equivalente gRPC.Before you work through a detailed conversion from Windows Communication Foundation (WCF) to gRPC, it's important know how the features available in WCF are handled in gRPC and what workarounds you can use when there's no gRPC equivalent. Em particular, este capítulo abordará os seguintes assuntos:In particular, this chapter will cover the following subjects:

  • Operações e métodosOperations and methods
  • Associações e transportesBindings and transports
  • Tipos de RPCRPC types
  • MetadadosMetadata
  • Tratamento de errosError handling
  • WS- * ProtocolsWS-* protocols

exemplo de gRPCgRPC example

Quando você cria um novo projeto ASP.NET Core 5,0 gRPC no Visual Studio 2019 ou na linha de comando, o equivalente de gRPC de "Olá, Mundo" é gerado para você.When you create a new ASP.NET Core 5.0 gRPC project from Visual Studio 2019 or the command line, the gRPC equivalent of "Hello World" is generated for you. Ele consiste em um greeter.proto arquivo que define o serviço e suas mensagens, e um GreeterService.cs arquivo com uma implementação do serviço.It consists of a greeter.proto file that defines the service and its messages, and a GreeterService.cs file with an implementation of the service.

syntax = "proto3";

option csharp_namespace = "HelloGrpc";

package Greet;

// The greeting service definition.
service Greeter {
  // Sends a greeting
  rpc SayHello (HelloRequest) returns (HelloReply);
}

// The request message that contains the user's name.
message HelloRequest {
  string name = 1;
}

// The response message that contains the greetings.
message HelloReply {
  string message = 1;
}
using System.Threading.Tasks;
using Grpc.Core;
using Microsoft.Extensions.Logging;

namespace HelloGrpc
{
    public class GreeterService : Greeter.GreeterBase
    {
        private readonly ILogger<GreeterService> _logger;
        public GreeterService(ILogger<GreeterService> logger)
        {
            _logger = logger;
        }

        public override Task<HelloReply> SayHello(HelloRequest request, ServerCallContext context)
        {
            return Task.FromResult(new HelloReply
            {
                Message = "Hello " + request.Name
            });
        }
    }
}

Este capítulo fará referência a este código de exemplo ao explicar diferentes conceitos e recursos do gRPC.This chapter will refer to this example code when explaining different concepts and features of gRPC.