Поделиться через


gRPC для разработчиков на Windows Communication Foundation (WCF)

Примечание.

Это не последняя версия этой статьи. В текущем выпуске см . версию .NET 9 этой статьи.

Предупреждение

Эта версия ASP.NET Core больше не поддерживается. Дополнительные сведения см. в политике поддержки .NET и .NET Core. В текущем выпуске см . версию .NET 9 этой статьи.

Внимание

Эта информация относится к предварительному выпуску продукта, который может быть существенно изменен до его коммерческого выпуска. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.

В текущем выпуске см . версию .NET 9 этой статьи.

В этой статье приводятся сводные сведения о достоинствах ASP.NET Core gRPC для разработчиков на Windows Communication Foundation (WCF), которые хотят перейти на современные архитектуры и платформы.

Сравнение с WCF

Хотя реализация и подход в случае с gRPC отличаются, принципы разработки и использования служб с помощью gRPC должны быть интуитивно понятными для разработчиков на WCF. WCF и gRPC — это платформы удаленного вызова процедур (RPC), преследующие одинаковые цели:

  • возможность программирования клиента и сервера так, как будто они находятся на одной платформе;
  • предоставление упрощенного переносимого API для сетевого взаимодействия.

Обе платформы требуют объявления и реализации интерфейса, хотя процесс объявления интерфейса отличается. Многие типы вызовов RPC, которые поддерживает gRPC, сопоставимы с привязками, доступными для служб WCF. Дополнительные сведения и примеры см. в разделе Перенос решения WCF в gRPC.

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

gRPC предоставляет собой более эффективную платформу по сравнению с другими подходами по указанным ниже причинам.

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

gRPC использует HTTP/2. По сравнению с HTTP/1.1 протокол HTTP/2 имеет следующие преимущества:

  • представляет собой более компактный и быстрый двоичный протокол;
  • более эффективно анализируется компьютерами;
  • поддерживает мультиплексирование запросов через одно соединение. Мультиплексирование позволяет отправлять несколько запросов через одно соединение так, что они не блокируют друг друга. В HTTP/1.1 такое блокирование называется "блокировкой очереди (HOL)".

Для сериализации сообщений gRPC использует Protobuf, эффективный двоичный формат. Сообщения Protobuf:

  • быстро сериализуются и десериализуются;
  • используют меньше пропускной способности, чем текстовые форматы.

gRPC — это хорошее решение для мобильных устройств и сетей с ограниченной пропускной способностью.

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

Существуют средства и библиотеки gRPC для всех основных языков программирования и платформ, включая .NET, Java, Python, Go, C++, Node.js, Swift, Dart, Ruby и PHP. Благодаря двоичному формату подключения Protobuf и эффективному формированию кода для каждой платформы разработчики могут создавать производительные кроссплатформенные приложения.

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

gRPC — это комплексное решение RPC. Оно работает согласованно на различных языках и платформах. Для него также доступен развитый инструментарий, причем большая часть стандартного кода создается автоматически. Как и WCF, gRPC автоматически создает сообщения и строго типизированный клиент. Разработчик может сосредоточиться на бизнес-логике.

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

gRPC поддерживает двунаправленную потоковую передачу, которая обеспечивает функциональность, аналогичную полнодуплексным службам WCF. Потоковая передача gRPC может производиться по обычным подключениям через Интернет, посредством подсистем балансировки нагрузки и через одноранговые сети служб.

Крайний срок, время ожидания и отмена

gRPC позволяет клиентам указать максимальное время, в течение которого должен быть завершен вызов RPC. При истечении указанного крайнего срока сервер может отменить операцию независимо от клиента. Крайний срок и отмена могут распространяться через последующие вызовы gRPC с целью применения ограничений на использование ресурсов. Клиенты могут прекращать операции при наступлении крайнего срока или ранее при необходимости. Например, клиент может прервать операцию из-за действия пользователя.

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

gRPC может использовать протоколы TLS и HTTP/2 для обеспечения соединения между клиентом и сервером со сквозным шифрованием. Поддержка проверки подлинности с помощью сертификата клиента еще более усиливает безопасность и доверие между клиентом и сервером.

gRPC как путь перехода с WCF на .NET Core и .NET 5

.NET Core и .NET 5 знаменуют собой сдвиг в подходе корпорации Майкрософт к предоставлению решений для удаленного взаимодействия разработчикам, которые хотят создавать службы на различных платформах. .NET Core и .NET 5 поддерживают вызов служб WCF, но не предлагают поддержки для размещения WCF на стороне сервера.

Существует два рекомендуемых способа модернизации приложений WCF.

  • Платформа gRPC основана на современных технологиях и стала наиболее популярным выбором для приложений RPC среди сообщества разработчиков. Начиная с .NET Core 3.0 современные платформы .NET обладают отличной поддержкой gRPC. Перенос служб WCF на gRPC помогает обеспечить функциональность RPC, производительность и взаимодействие, необходимые в современных приложениях.

  • CoreWCF — это проект сообщества, цель которого — обеспечить поддержку размещения служб WCF в .NET Core и .NET 5. В настоящее время доступен предварительный выпуск, и идет работа над рабочей версией. CoreWCF поддерживает только часть функций WCF. Для успешной работы приложений .NET Framework, которые переносятся на эту платформу, потребуется внести изменения в код и провести тестирование. CoreWCF — подходящий вариант, если приложение должно сохранять совместимость с существующими клиентами, вызывающими службы WCF.

Начало работы

Подробные рекомендации по созданию служб gRPC в ASP.NET Core для разработчиков на WCF см. в статье ASP.NET Core gRPC для разработчиков WCF.