Почему мы рекомендуем gRPC для разработчиков WCFWhy we recommend gRPC for WCF developers

Прежде чем углубиться в язык и методы gRPC, стоит обсудить, почему gRPC является правильным решением для разработчиков Windows Communication Foundation (WCF), которые хотят перейти на .NET Core.Before we dive deeply into the language and techniques of gRPC, it's worth discussing why gRPC is the right solution for Windows Communication Foundation (WCF) developers who want to migrate to .NET Core.

Сходство с WCFSimilarity to WCF

Хотя реализация и подход отличаются для gRPC, опыт разработки и потребления услуг с gRPC должен быть интуитивно понятным для разработчиков WCF.Although the implementation and approach are different for gRPC, the experience of developing and consuming services with gRPC should be intuitive for WCF developers. Основная цель та же: сделать возможным код, как будто клиент и сервер находятся на одной платформе, не беспокоясь о сети.The underlying goal is the same: make it possible to code as though the client and server are on the same platform, without needing to worry about networking.

Обе платформы разделяют принцип декларирования, а затем реализации интерфейса, даже несмотря на то, что процесс объявления этого интерфейса отличается.Both platforms share the principle of declaring and then implementing an interface, even though the process for declaring that interface is different. И, как вы увидите в главе 5, различные типы RPC вызывает, что gRPC поддерживает карту хорошо привязки доступны для wCF услуг.And as you'll see in chapter 5, the different types of RPC calls that gRPC supports map well to the bindings available to WCF services.

Преимущества gRPCBenefits of gRPC

gRPC стоит выше других решений по следующим причинам.gRPC stands above other solutions for the following reasons.

ПроизводительностьPerformance

Использование HTTP/2, а не HTTP/1.1 удаляет требование для читаемых человеком сообщений и вместо этого использует меньший и быстрый двоичный протокол.Using HTTP/2 rather than HTTP/1.1 removes the requirement for human-readable messages and instead uses the smaller, faster binary protocol. Это более эффективно для компьютеров, чтобы разобрать.This is more efficient for computers to parse. HTTP/2 также поддерживает запросы на мультиплексирование по одному подключению.HTTP/2 also supports multiplexing requests over a single connection. Эта поддержка позволяет отправлять ответы, как только они будут готовы без необходимости ждать в очереди.This support enables responses to be sent as soon as they're ready without the need to wait in a queue. (В HTTP/1.1 эта проблема называется "блокировка "глава линии (HOL)").) При использовании gRPC требуется меньше ресурсов, что делает его хорошим решением для использования для мобильных устройств и более медленных сетей.(In HTTP/1.1, this issue is known as "head-of-line (HOL) blocking.") You need fewer resources when using gRPC, which makes it a good solution to use for mobile devices and over slower networks.

СовместимостьInteroperability

Есть инструменты и библиотеки gRPC для всех основных языков программирования и платформ, включая .NET, Java, Python, Go, C, Node.js, Swift, Dart, Ruby и PHP.There are gRPC tools and libraries for all major programming languages and platforms, including .NET, Java, Python, Go, C++, Node.js, Swift, Dart, Ruby, and PHP. Благодаря формату двоичного провода Protocol Buffers и эффективному генерации кода для каждой платформы разработчики могут создавать перформативные приложения, пользуясь при этом полной межплатформенным поддержкой.Thanks to the Protocol Buffers binary wire format and the efficient code generation for each platform, developers can build performant apps while still enjoying full cross-platform support.

Удобство использования и производительностьUsability and productivity

gRPC является комплексным решением RPC.gRPC is a comprehensive RPC solution. Он работает последовательно на нескольких языках и платформах.It works consistently across multiple languages and platforms. Он также обеспечивает превосходный инструмент, с большей частью необходимого шаблонного кода автоматически генерируется.It also provides excellent tooling, with much of the necessary boilerplate code automatically generated. Таким образом, больше времени разработчика высвобожден, чтобы сосредоточиться на бизнес-логике.So more developer time is freed up to focus on business logic.

Потоковая передачаStreaming

gRPC имеет полную двунаправленную потоковую передачу, которая обеспечивает аналогичную функциональность для полных дуплексных услуг WCF.gRPC has full bidirectional streaming, which provides similar functionality to WCF's full duplex services. gRPC потоковое может работать через регулярные подключения к Интернету, балансели нагрузочных средств и сервисные сетки.gRPC streaming can operate over regular internet connections, load balancers, and service meshes.

Срок/тайм-аут и отменаDeadline/timeouts and cancellation

gRPC позволяет клиентам указать максимальное время завершения RPC.gRPC allows clients to specify a maximum time for an RPC to finish. Если указанный срок превышен, сервер может отменить операцию независимо от клиента.If the specified deadline is exceeded, the server can cancel the operation independently of the client. Сроки и отмены могут распространяться с помощью дальнейших вызовов gRPC, чтобы обеспечить соблюдение ограничений использования ресурсов.Deadlines and cancellations can be propagated through further gRPC calls to help enforce resource usage limits. Клиенты также могут прекратить операции, когда срок превышен, или раньше, если это необходимо (например, из-за взаимодействия с пользователем).Clients can also stop operations when a deadline is exceeded, or earlier if necessary (for example, because of a user interaction).

БезопасностьSecurity

gRPC неявно защищен, когда он использует HTTP/2 над сквозным зашифрованным соединением TLS.gRPC is implicitly secure when it's using HTTP/2 over a TLS end-to-end encrypted connection. Поддержка аутентификации сертификата клиента (см. главу 6)еще больше повышает безопасность и доверие между клиентом и сервером.Support for client certificate authentication (see chapter 6) further increases security and trust between client and server.