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.
ASP.NET Core