gRPC pour les développeurs Windows Communication Foundation (WCF)
Remarque
Ceci n’est pas la dernière version de cet article. Pour la version actuelle, consultez la version .NET 9 de cet article.
Avertissement
Cette version d’ASP.NET Core n’est plus prise en charge. Pour plus d’informations, consultez la stratégie de support .NET et .NET Core. Pour la version actuelle, consultez la version .NET 9 de cet article.
Important
Ces informations portent sur la préversion du produit, qui est susceptible d’être en grande partie modifié avant sa commercialisation. Microsoft n’offre aucune garantie, expresse ou implicite, concernant les informations fournies ici.
Pour la version actuelle, consultez la version .NET 9 de cet article.
Cet article fournit un résumé de la raison pour laquelle ASP.NET Core gRPC convient parfaitement aux développeurs Windows Communication Foundation (WCF) qui souhaitent migrer vers des architectures et des plateformes modernes.
Comparaison avec WCF
Bien que l’implémentation et l’approche soient différentes pour gRPC, l’expérience de développement et de consommation de services avec gRPC doit être intuitive pour les développeurs WCF. WCF et gRPC sont des infrastructures RPC (appel de procédure distante) ayant les mêmes objectifs :
- Permet de coder comme si le client et le serveur se trouvent sur la même plateforme.
- Fournissez une API de mise en réseau portable simplifiée.
Les deux plateformes partagent l’exigence de déclaration et d’implémentation d’une interface, même si le processus de déclaration de cette interface est différent. Les différents types d’appels RPC pris en charge par gRPC sont bien mappés aux liaisons disponibles pour les services WCF. Pour plus d’informations et d’exemples, consultez Migrer une solution WCF vers gRPC.
Avantages de gRPC
gRPC fournit une meilleure infrastructure que d’autres approches pour les raisons suivantes.
Performances
gRPC utilise HTTP/2. Contrairement à HTTP/1.1, HTTP/2 :
- est un protocole binaire plus petit et plus rapide.
- est plus efficace pour les ordinateurs à analyser.
- prend en charge les requêtes de multiplexage sur une seule connexion. Le multiplexage permet d’envoyer plusieurs requêtes sur une connexion sans qu’elles bloquent les unes les autres. Dans HTTP/1.1, le blocage est appelé « blocage de tête de ligne (HOL) ».
gRPC utilise Protobuf, un format binaire efficace, pour sérialiser les messages. Les messages Protobuf sont :
- rapides à sérialiser ou à désérialiser.
- utilisent moins de bande passante que les formats textuels.
gRPC est une bonne solution pour les appareils mobiles et les réseaux avec des restrictions de bande passante.
Interopérabilité
Il existe des outils et bibliothèques gRPC pour tous les principaux langages et plateformes de programmation, notamment .NET, Java, Python, Go, C++, Node.js, Swift, Dart, Ruby et PHP. Grâce au format de câble binaire Protobuf et à la génération de code efficace pour chaque plateforme, les développeurs peuvent créer des applications multiplateformes performantes.
Convivialité et productivité
gRPC est une solution RPC complète. Elle fonctionne de manière cohérente sur plusieurs langages et plateformes. Il fournit également d’excellents outils, une grande partie du code réutilisable nécessaire étant généré automatiquement. Comme WCF, gRPC génère automatiquement des messages et un client fortement typé. Ainsi, les développeurs ont plus de temps à consacrer à la logique métier.
Diffusion en continu
gRPC dispose d’une diffuser en continu bidirectionnelle complète qui fournit des fonctionnalités similaires aux services en duplex intégral de WCF. Le streaming gRPC peut fonctionner sur les connexions Internet, équilibreurs de charge et maillages de service habituels.
Échéances, délais d’expiration et annulation
gRPC permet aux clients de spécifier une durée maximale pour qu’un RPC se termine. Si l’échéance spécifiée est dépassée, le serveur peut annuler l’opération indépendamment du client. Les échéances et les annulations peuvent être propagées via des appels gRPC ultérieurs pour aider à appliquer les limites d’utilisation des ressources. Les clients peuvent arrêter les opérations lorsqu’une échéance est dépassée ou antérieure, si nécessaire. Par exemple, les clients peuvent arrêter des opérations en raison d’une interaction utilisateur.
Sécurité
gRPC peut utiliser TLS et HTTP/2 pour fournir une connexion chiffrée de bout en bout entre le client et le serveur. La prise en charge de l’authentification par certificat client augmente davantage la sécurité et la confiance entre le client et le serveur.
gRPC en tant que chemin de migration pour WCF vers .NET Core et .NET 5
.NET Core et .NET 5 marquent un tournant dans l’approche de Microsoft pour fournir des solutions de communication à distance aux développeurs qui souhaitent offrir des services sur diverses plateformes. .NET Core et .NET 5 prennent en charge l’appel des services WCF, mais n’offrent pas de prise en charge côté serveur pour l’hébergement de WCF.
Il existe deux chemins recommandés pour moderniser les applications WCF :
gRPC repose sur des technologies modernes et est devenu le choix le plus populaire dans la communauté des développeurs pour les applications RPC. À compter de .NET Core 3.0, les plateformes .NET modernes ont une excellente prise en charge de gRPC. La migration des services WCF pour utiliser gRPC permet de fournir les fonctionnalités RPC, les performances et l’interopérabilité nécessaire dans les applications modernes.
CoreWCF est un effort de la communauté visant à prendre en charge l’hébergement de services WCF dans .NET Core et .NET 5. Une préversion est disponible et le projet va bientôt être prêt pour la production. CoreWCF prend uniquement en charge un sous-ensemble des fonctionnalités de WCF, et les applications .NET Framework qui migrent pour l’utiliser exigent des modifications de code et des tests pour réussir. CoreWCF est un bon choix si une application doit maintenir la compatibilité avec les clients existants qui appellent des services WCF.
Bien démarrer
Pour obtenir des instructions détaillées sur la création de services gRPC dans ASP.NET Core pour les développeurs WCF, consultez ASP.NET Core gRPC pour les développeurs WCF