gRPC pour les développeurs Windows Communication Foundation (WCF)

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