M365Con 2027 – conférence en ligne gratuite · 11–22 Jan 2027 · 120 sessions→ m365con.net

Blog · Mirko Peters

Relier les points : intégrer WPF, ASP.NET Core et gRPC

Par ·

Introduction au développement .NET moderne Avantages et défis de l’intégration Vous constatez de nombreux avantages à intégrer WPF, ASP.NET Core MVC et gRPC dans votre projet…

Traduit automatiquement par IA à partir de l'article original. Lire l'original en anglais

Cover: D365FO Integration Architecture with Anitha Eswaran [MVP-MCT]

Introduction au développement .NET moderne : intégration

Avantages et difficultés

Vous constatez de nombreux avantages à intégrer WPF, asp.net core mvc et grpc dans vos projets. Cette approche vous offre une solution unifiée pour la communication entre le bureau, le web et les services. Le podcast m365.fm Modern .NET Development Podcast, animé par Mirko Peters avec la participation de l’MVP Microsoft Gábor Ruzsinszki, montre souvent comment cette intégration vous aide à créer des applications modernes et évolutives.

Voici un tableau présentant les principaux avantages de la combinaison de ces technologies :

AvantageDescription
Performancesasp.net core figure parmi les frameworks web les plus rapides. Il prend en charge HTTP/2 et grpc pour des communications efficaces.
ScalabilitéL’intégration vous permet de créer des microservices et des API RESTful. Cela renforce la scalabilité de vos applications.
Capacités multiplateformesWPF pour le bureau et asp.net core pour les applications web vous offrent une expérience de développement unifiée sur toutes les plateformes.

Vous devez aussi faire face à certains défis. Vous devez gérer la synchronisation des données entre WPF et asp.net core mvc. Vous devez garantir une expérience utilisateur cohérente entre le bureau et le web. La sécurité et l’authentification deviennent plus complexes lorsque vous utilisez grpc sur asp.net core pour la communication entre services. Vous devez également gérer le versionnement et les mises à jour de chaque partie de votre solution.

Astuce : vous pouvez utiliser des bibliothèques partagées pour garder une logique métier cohérente entre WPF, asp.net core mvc et grpc sur asp.net core. Cela réduit la duplication de code et facilite la maintenance de votre solution.

Scénarios concrets

Les exemples concrets sont très instructifs. De nombreuses organisations ont migré des applications WPF héritées vers asp.net core mvc et grpc sur asp.net core. Ces migrations vous montrent comment moderniser vos logiciels et améliorer leurs performances.

Voici un tableau présentant quelques exemples :

OrganisationDétails de la migrationAxe principal
Abto SoftwareMigration d’un outil d’analyse de santé de bureau (WPF) vers le web (Blazor WASM). 300 000 lignes de code. Le moteur de calcul en C# (bibliothèque partagée) a été conservé, mais l’interface a été réécrite.Les performances étaient critiques.
Amazon Q DeveloperTransformation d’une application de bureau limitée à Windows en application web moderne et multiplateforme, à partir d’exemples WPF existants.Gestion d’un code hérité complexe.

Vous partez peut-être d’une application de bureau WPF sur laquelle vos utilisateurs comptent chaque jour. Vous souhaitez toucher davantage d’utilisateurs, et vous créez donc une version web avec asp.net core mvc. Vous utilisez grpc sur asp.net core pour connecter vos applications de bureau et web à des services back-end partagés. Cette architecture vous permet de réutiliser votre logique métier et de garder vos données synchronisées.

Vous pouvez également utiliser grpc pour connecter les microservices de votre solution. grpc sur asp.net core offre une communication rapide et fiable entre les services. C’est important lorsque vous avez besoin de mises à jour en temps réel ou de hautes performances.

En suivant ces modèles d’intégration, vous créez des solutions souples et pérennes. Vous pouvez ajouter de nouvelles fonctionnalités, prendre en charge davantage de plateformes et faire évoluer vos applications au rythme de vos besoins.

Évolution et modernisation de .NET

De .NET Framework à .NET Core

Vous avez vu .NET évoluer considérablement au fil des années. Le passage de .NET Framework à .NET Core a apporté d’importantes améliorations pour les développeurs et les entreprises. Lorsque vous utilisez .NET 6 ou .NET 7, vos applications s’exécutent plus rapidement et consomment moins de mémoire que les versions antérieures. Vous constatez un meilleur débit et des temps d’exécution plus courts, ce qui est utile pour les applications web à fort trafic. Des moteurs d’exécution optimisés et de nouvelles fonctionnalités d’exécution rendent votre code plus efficace. Chaque nouvelle version apporte davantage de rapidité et une meilleure gestion de la mémoire. Vous pouvez aussi déployer vos applications sur différents systèmes d’exploitation, ce qui simplifie votre travail.

Voici un tableau qui présente les principales différences en matière de déploiement et de maintenance entre .NET Framework et .NET Core :

Aspect.NET Framework.NET Core
Souplesse de déploiementLimité à IIS ou à Windows ServerPrend en charge les déploiements autonomes et l’hébergement cloud
RentabilitéNécessite une licence Windows et un hébergement propriétairePrend en charge Linux, ce qui réduit les coûts d’infrastructure
MaintenancePrincipalement propriétaire, avec des mises à jour limitéesOpen source, avec une communauté active et des mises à jour fréquentes
Améliorations des performancesMises à jour moins fréquentesAméliorations continues des performances et correctifs de sécurité

Multiplateforme et natif cloud

Vous pouvez désormais créer et exécuter des applications .NET sous Windows, Linux et macOS. Cette souplesse multiplateforme vous offre davantage de choix de déploiement. Vous pouvez utiliser des microservices et des conteneurs pour découper vos applications en parties plus petites. Cela facilite la mise à l’échelle et la mise à jour de vos solutions. Une intégration poussée avec Azure vous permet d’utiliser des outils et des services conçus pour les développeurs .NET. Vous pouvez aussi recourir à l’informatique sans serveur avec Azure Functions, ce qui vous permet de vous concentrer sur votre code plutôt que sur la gestion des serveurs. Ces fonctionnalités vous aident à créer des applications performantes et évolutives, bien adaptées au cloud. L’écosystème de développeurs solide et les outils modernes rendent votre travail plus rapide et plus fiable.

Moderniser les applications héritées

Vous disposez peut-être d’applications héritées qui doivent être mises à jour pour rester utiles et sécurisées. La modernisation des applications héritées commence par un plan clair. Commencez par recenser toutes vos dépendances, comme les bibliothèques tierces et les DLL internes. Recherchez ensuite les anciens modèles, comme les pages WebForms ou l’authentification par formulaires. Contrôlez la qualité de votre code et repérez les composants fortement couplés ou les API obsolètes. Décidez ensuite si vous souhaitez réécrire certaines parties de votre application ou remplacer les anciennes bibliothèques. Migrez vers les technologies ASP.NET modernes, comme Razor Pages ou ASP.NET Core MVC. Adoptez de nouvelles pratiques, telles que l’injection de dépendances, les tests automatisés et les pipelines CI/CD. Utilisez des outils comme .NET Upgrade Assistant pour vous accompagner dans le processus.

La modernisation des applications héritées peut demander du temps et des ressources. Pour une application métier unique comptant de 50 000 à 100 000 lignes de code, comptez quatre à six mois. Les coûts se situent souvent entre 100 000 et 1 000 000 de dollars, avec une médiane d’environ 180 000 dollars. Si vous gérez un portefeuille de nombreuses applications héritées, le processus peut durer deux à trois ans, découpé en projets plus petits. Vous gagnez en performances, en sécurité et en facilité de maintenance lorsque vous modernisez vos systèmes hérités.

Moderniser les applications de bureau WPF

WPF dans le développement d’entreprise

Vous utilisez WPF pour créer rapidement des applications de bureau. Visual Studio vous fournit des outils pour concevoir et coder avec facilité. De nombreuses organisations choisissent WPF parce qu’il simplifie le déploiement. Vous pouvez distribuer les applications via des lecteurs partagés ou des programmes d’installation ClickOnce. Cela fait de WPF un choix privilégié pour les outils internes et les prototypes rapides.

WPF excelle lorsque vous avez besoin de performances graphiques élevées et une grande réactivité. Vous gérez avec WPF de grands volumes de données ou des visualisations complexes. Il s’impose comme une alternative solide aux technologies web.

Microsoft continue de faire évoluer WPF. Vous voyez apparaître de nouvelles fonctionnalités, comme l’accélération matérielle et le thème Fluent pour une interface moderne. WPF convient aux applications métier critiques dans de nombreux secteurs. On recense environ 500 000 à 1 000 000 d’applications activement développées dans le monde avec WPF. Vous créez et déployez vos applications rapidement avec WPF, qui demande moins de configuration que d’autres piles technologiques.

Stratégies de migration

Vous devez souvent moderniser d’anciennes applications Windows Presentation Foundation. Vous souhaitez moderniser vos applications de bureau WPF pour profiter des nouvelles fonctionnalités de .NET.

Migration vers .NET Core/5+/6+/8+

Vous commencez par sauvegarder vos projets. Vous installez l’Assistant de mise à niveau .NET. Vous faites un clic droit sur votre projet dans l’Explorateur de solutions et sélectionnez Mettre à niveau. Vous choisissez entre une mise à niveau sur place ou côte à côte. Vous sélectionnez le framework cible et les composants à mettre à niveau.

Vous préparez votre environnement avec Visual Studio 2019 et .NET Core 3.0. Vous vérifiez la compatibilité des API à l’aide de l’analyseur de portabilité .NET. Vous créez un nouveau fichier .csproj pour votre projet. Vous spécifiez le nom de l’assembly et l’espace de noms par défaut. Vous désactivez la génération automatique d’AssemblyInfo.

Les outils que vous utilisez pour la migration comprennent :

Uno Platform pour le multiplateforme

Vous modernisez WPF en explorant des solutions multiplateformes. Uno Platform vous permet d’exécuter des applications de type WPF sous Windows, Linux, macOS, iOS, Android et WebAssembly. Vous réutilisez votre logique métier et vos composants d’interface. Vous touchez davantage d’utilisateurs et d’appareils avec moins d’efforts. Uno Platform vous aide à moderniser vos applications de bureau pour un public plus large.

Intégration avec ASP.NET et gRPC

Vous modernisez vos applications de bureau WPF en les connectant aux technologies web et de services. Vous utilisez ASP.NET Core pour créer des API web et des interfaces utilisateur. Vous utilisez gRPC pour une communication rapide et fiable entre votre application de bureau et les services back-end. Vous partagez la logique métier entre WPF, ASP.NET et gRPC. Vous synchronisez vos données et améliorez les performances. Vous modernisez votre flux de travail en intégrant WPF aux piles web et de services modernes.

ASP.NET Core MVC pour les applications web

Présentation d’ASP.NET Core

Vous utilisez ASP.NET Core MVC pour créer des applications web modernes, rapides, sécurisées et faciles à maintenir. Ce framework vous offre une manière unifiée de créer à la fois des interfaces utilisateur web et des API. Vous pouvez exécuter votre application ASP.NET Core sous Windows, Linux ou macOS. La nature multiplateforme d’ASP.NET Core vous permet de déployer vos applications dans de nombreux environnements, y compris le cloud.

Voici un tableau présentant les principales fonctionnalités qui font d’ASP.NET Core MVC un choix solide pour le développement web :

FonctionnalitéDescription
Modèle de développement unifiéUn framework unique pour les interfaces web et les API.
ÉvolutivitéArchitecture légère et modulaire, capable de traiter plus de 7 millions de requêtes par seconde.
Fonctionnalités de sécuritéProtection intégrée contre les attaques CSRF, XSS et par injection SQL, ainsi qu’une authentification de niveau entreprise.
Efficacité du développementUnifie MVC et Web API dans un seul modèle de programmation, ce qui réduit la courbe d’apprentissage et la maintenance.
Souplesse de déploiementNature multiplateforme et excellent support de Docker pour des déploiements cohérents dans tous les environnements.
Fondation MVCUtilise le modèle architectural Model-View-Controller pour une séparation claire des responsabilités.

Vous commencez à prendre en main ASP.NET Core en installant le SDK .NET et en configurant votre premier projet. Le processus de configuration d’ASP.NET Core est simple et bien documenté. Vous pouvez utiliser Visual Studio ou la ligne de commande pour créer votre projet ASP.NET Core MVC.

Création d’API

Vous créez des API avec ASP.NET Core MVC pour connecter vos applications web, vos applications mobiles et vos clients de bureau. Le framework prend en charge la conception RESTful, ce qui vous aide à organiser vos points de terminaison et vos modèles de données. Vous pouvez utiliser des contrôleurs pour traiter les requêtes et renvoyer les données au format JSON. Cela facilite l’utilisation de votre API par d’autres applications.

Pour créer des API évolutives et faciles à maintenir, vous devez suivre ces bonnes pratiques :

  • Structurez votre projet selon la Clean Architecture. Organisez votre code avec des contrôleurs, des services, des dépôts et des modèles ou DTO.
  • Utilisez Async et Await pour les opérations d’E/S. Cela améliore les performances et permet à votre application de gérer davantage d’utilisateurs simultanément.
  • Ajoutez une gestion globale des exceptions avec des middlewares. Cela vous aide à gérer les erreurs en un seul endroit.
  • Activez le versionnement des API. Cela garantit la compatibilité de vos API avec différents clients.
  • Utilisez la journalisation pour suivre les erreurs et les actions importantes.

Vous pouvez connecter vos API ASP.NET Core MVC à d’autres services, tels que gRPC ou des clients WPF. Cela vous permet de créer des solutions puissantes et interopérables sur toutes les plateformes.

Sécurité et authentification

Vous protégez votre application ASP.NET Core en utilisant ses fonctionnalités de sécurité intégrées. Le framework protège contre les menaces courantes telles que CSRF, XSS et l'injection SQL. Vous pouvez ajouter une authentification et une autorisation pour contrôler qui accède à vos API. De nombreux développeurs utilisent des jetons JWT pour sécuriser les points de terminaison et protéger les données sensibles.

Vous devez toujours maintenir votre application ASP.NET Core à jour. Les mises à jour régulières vous permettent de corriger les problèmes de sécurité et d'améliorer les performances. Vous pouvez également utiliser des middlewares pour gérer l'authentification et l'autorisation à l'échelle de l'ensemble de votre application.

Astuce : sécurisez vos API avec une authentification robuste et maintenez vos dépendances à jour. Cela vous aide à créer des applications web sûres et fiables.

Options de déploiement

Vous disposez de nombreuses façons de déployer vos applications ASP.NET Core MVC. Chaque option présente des avantages différents. Choisissez celle qui correspond aux besoins de votre projet et aux compétences de votre équipe.

1. Déploiement sur site

Vous pouvez déployer votre application sur vos propres serveurs. Cette méthode vous offre un contrôle total sur votre environnement. Vous installez IIS (Internet Information Services) sous Windows ou utilisez Kestrel avec un proxy inverse tel que Nginx ou Apache sous Linux. Vous gérez vous-même les mises à jour, la sécurité et la montée en charge.

Astuce : utilisez Kestrel pour des performances élevées. Associez-le à Nginx ou Apache pour gérer le HTTPS et l'équilibrage de charge.

2. Déploiement cloud

Vous pouvez déployer votre application dans le cloud. Les choix les plus populaires incluent Microsoft Azure, Amazon Web Services (AWS) et Google Cloud Platform (GCP). Les plateformes cloud offrent une mise à l'échelle facile, une haute disponibilité et des services managés.

Plateforme cloudPrincipales fonctionnalitésExemple de service
AzureIntégration poussée avec .NET, App Service, FunctionsAzure App Service
AWSCalcul flexible, portée mondialeAWS Elastic Beanstalk
GCPPrise en charge des conteneurs, machines virtuelles managéesGoogle App Engine

Vous pouvez utiliser Azure App Service pour déployer votre application en quelques clics. Vous importez votre code, et Azure se charge du reste. Vous pouvez également utiliser Azure DevOps pour automatiser les déploiements.

3. Conteneurisation avec Docker

Vous pouvez empaqueter votre application dans un conteneur Docker. Cette méthode rend votre application portable et facile à déployer partout. Vous écrivez un Dockerfile simple pour définir l'environnement de votre application.

FROM mcr.microsoft.com/dotnet/aspnet:8.0
COPY . /app
WORKDIR /app
ENTRYPOINT ["dotnet", "YourApp.dll"]

Vous générez et exécutez votre conteneur localement, puis vous le publiez dans un registre de conteneurs. Vous pouvez déployer les conteneurs sur Kubernetes ou sur des services cloud tels que Azure Kubernetes Service (AKS).

4. Intégration continue et déploiement continu (CI/CD)

Vous pouvez automatiser votre processus de déploiement grâce à des pipelines CI/CD. Des outils comme GitHub Actions, Azure DevOps et GitLab CI vous aident à générer, tester et déployer votre application automatiquement.

Remarque : le CI/CD réduit les erreurs et accélère votre cycle de publication. Vous pouvez annuler rapidement des modifications en cas de problème.

5. Hébergement multiplateforme

Vous pouvez héberger les applications ASP.NET Core MVC sous Windows, Linux ou macOS. Cette souplesse vous permet de choisir l'environnement le mieux adapté à vos besoins.

Tableau récapitulatif : options de déploiement

OptionNiveau de contrôleÉvolutivitéFacilité de mise en placeIdéal pour
Sur siteÉlevéManuelleModéréeContrôle total, conformité
CloudMoyenAutomatiqueFacileMise à l'échelle rapide, moins de configuration
ConteneursÉlevéAutomatiqueModéréePortabilité, microservices
CI/CDMoyenAutomatiqueFacilePublications rapides, automatisation

Vous devez examiner vos besoins avant de choisir une méthode de déploiement. Chaque option présente des atouts. Vous pouvez les combiner pour obtenir des résultats encore meilleurs. Par exemple, vous pouvez utiliser des conteneurs dans le cloud avec des pipelines CI/CD pour des déploiements rapides et fiables.

gRPC dans .NET

Qu'est-ce que gRPC

Vous utilisez gRPC pour créer une communication rapide et fiable entre vos applications. gRPC signifie Google Remote Procedure Call. Il s'agit d'un framework open source qui vous permet d'appeler depuis un client des méthodes sur un serveur comme si elles étaient locales. Vous pouvez utiliser gRPC pour les scénarios d'appel de procédure distante à hautes performances. Concrètement, vous envoyez et recevez des données rapidement, même lorsque vos applications s'exécutent sur des machines différentes.

gRPC utilise Protocol Buffers, un moyen de sérialiser les données indépendant du langage et de la plateforme. Vous définissez les contrats de vos services dans un fichier .proto. Ce fichier décrit les messages et les services que vous souhaitez utiliser. Vous générez le code de votre client et de votre serveur à partir de ce fichier. Vous pouvez utiliser gRPC dans de nombreux types d'applications, y compris les applications de bureau WPF, les applications web ASP.NET et les services cloud.

gRPC vs REST

Vous vous demandez peut-être comment gRPC se compare à REST. REST utilise HTTP et JSON pour échanger des données entre clients et serveurs. gRPC utilise HTTP/2 et Protocol Buffers. Cela offre de meilleures performances, car HTTP/2 prend en charge le multiplexage et le streaming. Les Protocol Buffers génèrent des messages plus légers que JSON, ce qui accélère la circulation de vos données.

Voici un tableau pour vous aider à comparer gRPC et REST :

FonctionnalitéREST (JSON)gRPC (Protocol Buffers)
Format de donnéesJSONProtocol Buffers
TransportHTTP/1.1HTTP/2
PerformancesBonnesMeilleures performances
StreamingLimitéPrise en charge complète
ContratOpenAPI/SwaggerFichiers .proto

Vous choisissez gRPC lorsque vous avez besoin de systèmes hautement évolutifs ou de communications en temps réel. Vous utilisez REST lorsque vous souhaitez des API simples, compatibles avec les navigateurs. De nombreux développeurs utilisent les deux dans une même solution.

Configurer les services gRPC

Vous configurez des services gRPC dans .NET en quelques étapes. Tout d'abord, vous créez un projet dans Visual Studio ou avec l'interface CLI de .NET. Vous sélectionnez le modèle « gRPC Service ». Ce modèle vous fournit un fichier .proto d'exemple ainsi que le code nécessaire pour démarrer votre service.

Vous définissez votre service et vos messages dans le fichier .proto. Par exemple :

syntax = "proto3";

service Greeter {
  rpc SayHello (HelloRequest) returns (HelloReply);
}

message HelloRequest {
  string name = 1;
}

message HelloReply {
  string message = 1;
}

Vous compilez votre projet. Les outils génèrent des classes C# pour votre client et votre serveur gRPC. Vous implémentez la logique de votre service en C#. Vous pouvez héberger des services gRPC dans ASP.NET Core, voire dans une application WPF pour des scénarios avancés.

Pour tester vos services gRPC, vous utilisez des outils tels que grpc-dotnet, Grpc.Net.Client et Grpc.AspNetCore.Server. Ces bibliothèques vous aident à créer, héberger et consommer des services gRPC dans .NET. Vous pouvez également utiliser FINT pour tester vos points de terminaison gRPC.

Vous connectez votre client WPF ou votre application ASP.NET à vos services gRPC en ajoutant le code client généré. Vos applications peuvent ainsi communiquer rapidement et en toute sécurité. Vous pouvez migrer des technologies plus anciennes, comme WCF, vers gRPC pour obtenir une solution moderne et évolutive.

Astuce : utilisez gRPC lorsque vous avez besoin d'une communication rapide, fiable et hautement évolutive entre vos applications .NET.

Consommer gRPC dans WPF et ASP.NET

Vous pouvez connecter vos applications WPF et ASP.NET Core à des services gRPC. Cela vous permet de partager des données et la logique métier entre applications de bureau et applications web. Vous bénéficiez d'une communication rapide et fiable, bien adaptée aux solutions modernes.

Intégration du client WPF

Vous pouvez ajouter gRPC à votre application de bureau WPF. Commencez par installer le package NuGet Grpc.Net.Client. Ce package vous fournit les outils nécessaires pour appeler des services gRPC depuis votre projet WPF.

Suivez ces étapes pour configurer un client gRPC dans WPF :

  1. Ajouter le fichier .proto
    Placez le fichier .proto de votre service gRPC dans votre projet WPF. Définissez son action de génération sur « Protobuf » dans le fichier projet.

  2. Installer les packages NuGet
    Ouvrez le Gestionnaire de packages NuGet. Installez Grpc.Net.Client et Google.Protobuf.

  3. Configurer le client gRPC
    Créez un canal et un client dans votre code. Par exemple :

    using Grpc.Net.Client;
    using Greet;
    
    var channel = GrpcChannel.ForAddress("https://localhost:5001");
    var client = new Greeter.GreeterClient(channel);
    var reply = await client.SayHelloAsync(new HelloRequest { Name = "WPF User" });
    MessageBox.Show(reply.Message);
  4. Gérer les threads
    Utilisez async et await pour garder votre interface réactive. Ne bloquez pas le thread principal.

Astuce : vous pouvez partager des modèles de données entre vos projets WPF et ASP.NET Core à l'aide de bibliothèques partagées. Votre code reste ainsi propre et cohérent.

Intégration du client ASP.NET

Vous pouvez également utiliser des clients gRPC dans vos applications ASP.NET Core. C'est utile lorsque votre application web doit appeler d'autres services, comme des microservices ou des API backend.

Voici comment configurer un client gRPC dans ASP.NET Core :

  1. Ajouter le fichier .proto
    Incluez le fichier .proto dans votre projet ASP.NET Core. Définissez son action de génération sur « Protobuf ».

  2. Installer les packages NuGet
    Ajoutez Grpc.Net.ClientFactory et Google.Protobuf via NuGet.

  3. Enregistrer le client gRPC
    Dans votre fichier Startup.cs ou Program.cs, enregistrez le client avec l'injection de dépendances :

    builder.Services.AddGrpcClient<Greeter.GreeterClient>(o =>
    {
        o.Address = new Uri("https://localhost:5001");
    });
  4. Injecter et utiliser le client
    Injectez le client dans votre contrôleur ou votre service :

    public class HomeController : Controller
    {
        private readonly Greeter.GreeterClient _greeterClient;
    
        public HomeController(Greeter.GreeterClient greeterClient)
        {
            _greeterClient = greeterClient;
        }
    
        public async Task<IActionResult> Index()
        {
            var reply = await _greeterClient.SayHelloAsync(new HelloRequest { Name = "Web User" });
            ViewBag.Message = reply.Message;
            return View();
        }
    }

Remarque : vous pouvez utiliser des clients gRPC dans des services d'arrière-plan, des contrôleurs ou toute autre partie de votre application ASP.NET Core.

Vous pouvez désormais connecter vos applications WPF et ASP.NET Core au même backend gRPC. Vous obtenez ainsi une solution unifiée et hautement performante pour vos besoins métier.

Walkthrough pratique d’intégration

Architecture de la solution

Vous pouvez créer une solution moderne en connectant WPF, ASP.NET Core MVC et gRPC. Cette architecture vous aide à offrir une expérience fluide entre le bureau et le web. Vous commencez par une application de bureau WPF. Vous ajoutez ASP.NET Core MVC pour votre interface web. Vous utilisez gRPC pour connecter les deux clients à vos services back-end.

Voici un schéma simple pour vous aider à comprendre la structure :

CoucheTechnologieRôle
Client de bureauWPFInterface utilisateur riche pour Windows
Client webASP.NET Core MVCInterface utilisateur web pour navigateurs
Couche de communicationgRPCCommunication rapide et typée entre les couches
Services back-endASP.NET CoreLogique métier, accès aux données, API

Vous pouvez utiliser cette configuration dans de nombreux scénarios. Par exemple, vous pouvez moderniser une application WPF existante en ajoutant ASP.NET Core MVC et gRPC. Vous pouvez aussi créer de nouvelles solutions qui nécessitent à la fois des clients de bureau et des clients web. Cette architecture convient bien aux microservices, car gRPC prend en charge des communications à haut débit.

Astuce : vous pouvez partager la logique métier entre WPF, ASP.NET Core MVC et ASP.NET Core en utilisant des bibliothèques partagées. Cela garde votre code propre et réduit les duplications.

Création d’un service gRPC dans ASP.NET Core

Vous pouvez créer un service gRPC simple dans ASP.NET Core. Ce service permettra à vos clients WPF et ASP.NET Core MVC de communiquer avec votre back-end. Commencez par ouvrir Visual Studio et créer un nouveau projet. Choisissez le modèle « gRPC Service ». Ce modèle vous fournit tout ce dont vous avez besoin pour démarrer.

Suivez ces étapes :

  1. Ouvrez Visual Studio et sélectionnez « Create a new project ».
  2. Choisissez « gRPC Service », puis cliquez sur Suivant.
  3. Nommez votre projet et sélectionnez ASP.NET Core 8.0 ou une version ultérieure.
  4. Cliquez sur Créer.

Vous verrez un service « Greeter » d’exemple dans votre projet. Ce service utilise un fichier .proto pour définir le contrat. Vous pouvez modifier ce fichier pour ajouter vos propres méthodes et messages.

Voici un exemple de fichier .proto :

syntax = "proto3";

service Greeter {
  rpc SayHello (HelloRequest) returns (HelloReply);
}

message HelloRequest {
  string name = 1;
}

message HelloReply {
  string message = 1;
}

Vous implémentez le service en C#. Le modèle vous fournit un fichier GreeterService.cs. Vous pouvez y ajouter votre logique.

public class GreeterService : Greeter.GreeterBase
{
    public override Task<HelloReply> SayHello(HelloRequest request, ServerCallContext context)
    {
        return Task.FromResult(new HelloReply
        {
            Message = $"Hello, {request.Name}"
        });
    }
}

Vous exécutez votre projet ASP.NET Core. Le service gRPC écoute les requêtes de vos clients. Vous pouvez maintenant connecter vos applications WPF et ASP.NET Core MVC à ce service.

Remarque : gRPC utilise HTTP/2, veillez donc à ce que votre serveur le prenne en charge. Visual Studio s’en charge pour vous lorsque vous utilisez le modèle.

Consommer gRPC dans WPF

Vous pouvez connecter votre application WPF à votre service gRPC. Cela permet à votre application de bureau d’utiliser le même back-end que votre application web. Commencez par ajouter le fichier .proto à votre projet WPF. Définissez son action de génération sur « Protobuf ».

Suivez ces étapes pour configurer le client :

  1. Installez les packages NuGet Grpc.Net.Client et Google.Protobuf.
  2. Ajoutez le fichier .proto à votre projet.
  3. Créez un canal gRPC dans votre code.

Voici un exemple d’extrait de code :

using Grpc.Net.Client;
using Greet;

var channel = GrpcChannel.ForAddress("https://localhost:5001");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(new HelloRequest { Name = "WPF User" });
MessageBox.Show(reply.Message);

Utilisez async et await pour garder votre application WPF réactive. Vous pouvez appeler les méthodes gRPC depuis vos view models ou vos services. Cette approche permet de partager les données et la logique entre vos clients WPF et ASP.NET Core MVC.

Astuce : vous pouvez réutiliser vos modèles de données en les plaçant dans une bibliothèque partagée. Cela facilite la synchronisation de vos projets WPF et ASP.NET Core MVC.

Vous disposez désormais d’une solution dans laquelle WPF et ASP.NET Core MVC utilisent tous deux gRPC pour communiquer avec votre back-end. Cette configuration vous apporte rapidité, fiabilité et une architecture moderne.

Contrats de données et Protobuf

Vous définissez les contrats de données dans gRPC à l’aide de Protocol Buffers, également appelé Protobuf. Protobuf vous permet de décrire la structure de vos messages dans un fichier .proto. Ce fichier sert de contrat entre votre client et votre serveur. Vous l’utilisez pour générer des classes C# que les deux parties comprennent.

Lorsque vous ajoutez un fichier .proto à votre projet .NET, vous devez le configurer correctement. Le tableau ci-dessous présente les principaux paramètres que vous utilisez :

ConfigurationDescription
Include <Protobuf>Ajoute le fichier .proto à votre projet.
Attribut GrpcServicesContrôle les éléments C# générés : Both, Server, Client ou None.

Gardez vos fichiers .proto simples et clairs. Utilisez des noms explicites pour vos messages et vos champs. Évitez les mots réservés et les caractères spéciaux. Ajoutez toujours des numéros de version dans les noms de vos messages ou de vos packages si vous prévoyez de faire évoluer vos contrats.

Voici quelques bonnes pratiques pour travailler avec Protobuf dans .NET :

  • Placez vos fichiers .proto dans un dossier ou une bibliothèque partagés. Cela vous permet de garder vos contrats synchronisés entre WPF, ASP.NET Core et les autres projets.
  • Utilisez l’option Both pour GrpcServices si vous souhaitez générer à partir d’un même fichier .proto le code client et le code serveur.
  • Gardez des types de données simples. Utilisez des types de base comme string, int32 ou bool pour la plupart des champs.
  • Ajoutez des commentaires à vos fichiers .proto. Les commentaires aident les autres développeurs à comprendre vos contrats.

Astuce : lorsque vous modifiez un fichier .proto, veillez à régénérer le code C# dans tous les projets qui l’utilisent. Cela garantit la synchronisation entre votre client et votre serveur.

Gestion des erreurs et journalisation

Une gestion robuste des erreurs et une journalisation efficace sont indispensables pour fiabiliser vos applications .NET. Lorsque vous utilisez WPF, ASP.NET Core et gRPC ensemble, vous devez suivre quelques stratégies clés :

  • Mettez en place des gestionnaires d’exceptions globaux dans ASP.NET Core et WPF. Ils vous aident à détecter des erreurs qui, sans cela, pourraient passer inaperçues.
  • Utilisez une journalisation centralisée. Elle facilite le suivi des problèmes et la maintenance de votre code.
  • Dans ASP.NET Core, utilisez l’interface IExceptionHandler pour gérer les exceptions dans l’ensemble de votre application.
  • Dans WPF, créez un gestionnaire d’exceptions global pour intercepter les erreurs non gérées et les journaliser.
  • Journalisez systématiquement les événements, erreurs et avertissements importants. Utilisez des outils comme Serilog, NLog ou les fournisseurs de journalisation intégrés.
  • Veillez à ce que vos journaux contiennent suffisamment de détails pour identifier et corriger rapidement les problèmes.

Remarque : une bonne gestion des erreurs et une journalisation efficace vous permettent de repérer les problèmes au plus tôt. Elles facilitent également la maintenance et l’évolution de vos applications dans le temps.

Authentification et sécurité

Sécuriser les services gRPC

Vous devez sécuriser vos services gRPC pour protéger vos données et vos utilisateurs. Commencez par utiliser HTTPS pour l’ensemble des communications gRPC. Cette étape chiffre les données échangées entre le client et le serveur. Vous devez également mettre en place l’authentification et l’autorisation pour contrôler les accès. Lorsque vous configurez l’authentification et l’autorisation, vous définissez qui peut appeler vos méthodes gRPC et quelles actions ces appelants peuvent effectuer. Vous pouvez utiliser des certificats ou des jetons pour vérifier l’identité de chaque client. De nombreux développeurs utilisent à cet effet des jetons JWT. Validez toujours ces jetons côté serveur avant de traiter une requête.

Astuce : utilisez l’autorisation basée sur les rôles pour limiter l’accès aux méthodes gRPC sensibles. Attribuez des rôles aux utilisateurs et vérifiez leurs autorisations avant de les autoriser à effectuer une action.

Authentification dans WPF et ASP.NET

Vous devez implémenter l’authentification et l’autorisation dans vos applications WPF et ASP.NET. Dans ASP.NET, vous pouvez utiliser les intergiciels (middlewares) intégrés pour gérer l’authentification et l’autorisation. Ces intergiciels vérifient les identifiants des utilisateurs et appliquent les règles d’autorisation à chaque requête. Vous pouvez activer la fonctionnalité d’authentification et d’autorisation en configurant les services dans votre fichier Startup ou Program. Pour WPF, vous vous connectez souvent à un service back-end pour l’authentification et l’autorisation. Le client WPF envoie les identifiants de l’utilisateur au serveur, qui renvoie un jeton si ces identifiants sont valides. Le client utilise ensuite ce jeton pour les requêtes suivantes. Stockez toujours les jetons de manière sécurisée côté client.

Le tableau ci-dessous présente les méthodes courantes d’authentification et d’autorisation :

MéthodeDescriptionCas d’usage
Jetons JWTJetons compacts et sécurisés pour les sessions sans étatAPI web, services gRPC
OAuth2Autorisation déléguée pour l’accès de tiersIntégrations externes
Authentification WindowsUtilise les identifiants Windows pour l’authentificationEntreprise interne

Remarque : utilisez toujours un stockage sécurisé pour les jetons dans les applications WPF. Ne stockez jamais de données sensibles en clair.

Gestion des jetons

Vous devez gérer les jetons avec soin pour garder vos applications sécurisées. Lorsque vous utilisez l’authentification et l’autorisation, votre serveur émet un jeton après une connexion réussie. Le client stocke ce jeton et l’envoie avec chaque requête. Vous devez définir des durées de validité des jetons pour réduire le risque. Lorsqu’un jeton expire, le client doit en demander un nouveau. Dans ASP.NET, vous pouvez configurer la durée de vie des jetons et la logique de renouvellement. Pour gRPC, vérifiez toujours le jeton avant de traiter une requête. Si le jeton est absent ou invalide, refusez l’accès à l’aide de vos règles d’autorisation.

Vous devez aussi révoquer les jetons lorsqu’un utilisateur se déconnecte ou lorsque vous détectez une activité suspecte. Cette étape empêche tout accès non autorisé. Passez régulièrement en revue votre configuration d’authentification et d’autorisation pour vérifier qu’elle répond à vos besoins de sécurité.

Astuce : automatisez le renouvellement des jetons dans vos clients pour maintenir les sessions actives sans interrompre l’utilisateur.

Déploiement et maintenance

Déploiement multiniveau

Vous pouvez organiser votre solution .NET à l’aide d’un déploiement multiniveau. Cette approche découpe votre application en couches. Chaque couche a un rôle précis. Par exemple, vous pouvez disposer d’une couche de présentation pour WPF ou ASP.NET Core MVC, d’une couche de services pour la communication gRPC et d’une couche de données pour votre base de données. Cette structure facilite la gestion de votre code et la montée en charge de votre solution.

Une configuration multiniveau type se présente ainsi :

NiveauExemple de technologieRôle
Couche de présentationWPF, ASP.NET Core MVCInterface utilisateur
Couche de servicesgRPC, Web APILogique métier, communication
Couche de donnéesSQL Server, PostgreSQLStockage des données

Vous déployez chaque niveau sur des serveurs ou des conteneurs distincts. Cette séparation améliore la sécurité et les performances. Vous pouvez mettre à jour un niveau sans affecter les autres.

Astuce : utilisez gRPC dans votre couche de services pour relier rapidement et de manière fiable vos couches de présentation et de données.

Pipelines CI/CD

Vous pouvez automatiser la génération de votre application et le processus de déploiement grâce aux pipelines CI/CD. CI signifie Continuous Integration (intégration continue) et CD signifie Continuous Deployment (déploiement continu). Ces pipelines vous permettent de livrer des mises à jour plus rapidement et avec moins d’erreurs.

Voici les principales étapes d’un pipeline CI/CD :

  1. Vous envoyez votre code vers un système de gestion de versions comme GitHub ou Azure DevOps.
  2. Le pipeline génère l’application et exécute les tests.
  3. Si les tests réussissent, le pipeline déploie l’application dans un environnement de test ou de production.

Vous pouvez utiliser des outils comme GitHub Actions, Azure Pipelines ou GitLab CI. Ces outils prennent en charge les projets .NET, ASP.NET Core et gRPC. Vous pouvez configurer des déploiements automatiques pour vos services WPF, web et gRPC.

Remarque : les pipelines CI/CD vous aident à détecter les problèmes au plus tôt. Vous pouvez annuler les modifications en cas de problème.

Supervision et mises à jour

Vous devez superviser vos applications pour les maintenir en bon état. Les outils de supervision suivent les erreurs, les performances et l’utilisation. Vous pouvez utiliser Application Insights, Prometheus ou Grafana. Ces outils fonctionnent avec les services .NET, ASP.NET Core et gRPC.

Vous devez configurer des alertes pour les événements importants. Par exemple, vous pouvez être averti si votre service gRPC tombe en panne ou si votre application web ralentit. Les mises à jour régulières maintiennent votre système sécurisé et rapide. Appliquez les correctifs à vos serveurs, mettez à jour vos bibliothèques et consultez vos journaux régulièrement.

Une liste de contrôle simple pour la maintenance :

  • Supervisez tous les services, y compris les points de terminaison gRPC.
  • Configurez des alertes pour les erreurs et les ralentissements.
  • Mettez à jour le runtime .NET et les bibliothèques.
  • Consultez les journaux et corrigez rapidement les problèmes.

Astuce : planifiez des fenêtres de maintenance régulières. Cela vous permet d’appliquer les mises à jour sans perturber les utilisateurs.

Bonnes pratiques et prochaines étapes

Modèles de conception

Vous améliorez vos projets .NET en appliquant des modèles de conception éprouvés. Ces modèles vous aident à écrire un code facile à comprendre, à tester et à maintenir. Dans le développement .NET moderne, vous utilisez souvent des modèles comme l’injection de dépendances, Repository et MVVM (Model-View-ViewModel).

  • L’injection de dépendances vous permet de gérer les dépendances entre les classes. Vous enregistrez les services dans votre code de démarrage et vous les injectez là où ils sont nécessaires. Ce modèle rend votre code flexible et testable.
  • Le modèle Repository sépare la logique d’accès aux données de la logique métier. Vous créez des classes de dépôt pour gérer les opérations sur la base de données. Cela permet de garder votre code organisé.
  • MVVM convient bien aux applications WPF. Vous séparez votre interface utilisateur, votre logique métier et vos modèles de données. Ce modèle vous aide à créer des applications de bureau réactives et faciles à maintenir.

Astuce : le podcast Modern .NET Development sur m365.fm montre souvent comment ces modèles vous aident à faire évoluer vos solutions et à anticiper les changements futurs.

Stratégies de test

Des stratégies de test solides sont indispensables pour livrer des logiciels fiables. Les tests vous permettent de détecter les bogues au plus tôt et de vérifier que votre code se comporte comme prévu. Dans .NET, vous utilisez différents types de tests :

Type de testObjectifOutils
Tests unitairesTester de petits éléments de code de manière isoléexUnit, NUnit, MSTest
Tests d’intégrationTester la manière dont les composants collaborentTestServer, WebApplicationFactory
Tests d’interface utilisateurTester les interfaces utilisateur et les parcoursSelenium, Playwright

Écrivez des tests unitaires pour votre logique métier. Utilisez les tests d’intégration pour vérifier les interactions entre vos services et vos bases de données. Pour les applications WPF et web, ajoutez des tests d’interface utilisateur afin de garantir la fluidité de l’expérience utilisateur.

  • Appliquez le développement piloté par les tests (TDD) pour écrire vos tests avant votre code.
  • Automatisez vos tests dans vos pipelines CI/CD pour obtenir un retour rapide.
  • Utilisez des mocks pour isoler vos tests et leurs dépendances.

Remarque : les tests automatisés vous font gagner du temps et réduisent les erreurs lors des mises à jour.

Documentation et collaboration

Vous gardez vos projets en bonne santé en rédigeant une documentation claire et en collaborant efficacement avec votre équipe. Une bonne documentation aide les nouveaux développeurs à comprendre votre code. Elle facilite également la maintenance et l’évolution de vos applications.

  • Rédigez des fichiers README qui expliquent l’objectif de votre projet et les étapes d’installation.
  • Utilisez des commentaires XML dans votre code pour décrire les classes et les méthodes.
  • Créez une documentation d’API avec des outils comme Swagger pour ASP.NET Core.

Vous collaborez mieux lorsque vous utilisez un système de gestion de versions comme Git. Vous suivez les modifications, relisez le code et résolvez les conflits en équipe. Les compétences en communication comptent autant que les compétences techniques. Le podcast Modern .NET Development aborde souvent la manière dont une communication solide et une documentation claire aident les équipes à réussir, en particulier à mesure que les outils d’IA se généralisent dans le développement.

Astuce : planifiez des revues de code régulières et partagez vos connaissances avec votre équipe. Cette pratique conduit à un meilleur code et à une équipe plus solide.

Ressources d’apprentissage

Vous pouvez développer vos compétences en .NET grâce à un large éventail de ressources d’apprentissage. L’écosystème .NET évolue rapidement : vous devez donc suivre en permanence les derniers outils, frameworks et bonnes pratiques. Voici quelques ressources incontournables qui vous aideront à garder vos connaissances à jour et concrètes.

📚 Podcasts et émissions recommandés

  • Modern .NET Development Podcast (m365.fm)
    Écoutez Mirko Peters et Gábor Ruzsinszki, MVP Microsoft, aborder des sujets .NET concrets. Vous bénéficiez de conseils d’experts sur WPF, ASP.NET Core, gRPC et bien d’autres sujets. Le podcast traite de l’IA dans le développement, des compétences en communication et des futures fonctionnalités de .NET.

    Astuce : abonnez-vous au podcast Modern .NET Development sur votre plateforme préférée pour recevoir les mises à jour régulières.

  • .NET Rocks!
    Cette émission propose des entretiens avec des leaders du secteur. Vous découvrez les nouvelles tendances, outils et techniques en .NET.

📖 Documentation officielle et guides

  • Microsoft Learn pour .NET
    Vous y trouverez des tutoriels pas à pas, des exemples de code et des leçons interactives. Microsoft Learn vous aide à maîtriser tous les sujets, de WPF à ASP.NET Core en passant par gRPC.

  • Documentation ASP.NET Core
    Vous y trouverez des guides détaillés sur la création d’applications web, d’API et de solutions sécurisées.

  • Documentation gRPC pour .NET
    Cette ressource explique comment configurer, utiliser et tester les services gRPC dans .NET.

🛠️ Communauté et plateformes interactives

  • Stack Overflow
    Vous pouvez poser vos questions et obtenir des réponses de développeurs .NET expérimentés. Recherchez des solutions ou partagez vos propres connaissances.

  • GitHub
    Explorez des projets .NET open source. Vous pouvez lire du code, contribuer à des dépôts et apprendre à partir d’exemples concrets.

  • Microsoft Q&A
    Ce forum vous permet d’échanger avec des ingénieurs Microsoft et la communauté .NET.

📅 Conférences et événements en ligne

  • .NET Conf
    Vous pouvez suivre des sessions et des ateliers en direct. Découvrez les dernières versions et fonctionnalités de .NET.

  • Rencontres locales
    Rejoignez les groupes d’utilisateurs .NET de votre région. Rencontrez d’autres développeurs, partagez vos expériences et travaillez ensemble sur des projets.

📝 Tableau : référence rapide des ressources d’apprentissage

Type de ressourceExemple/LienCe que vous en retirez
PodcastModern .NET Development Podcast (m365.fm)Analyses d’experts, témoignages concrets
DocumentationMicrosoft Learn, documentation ASP.NET CoreTutoriels, guides, exemples
CommunautéStack Overflow, GitHub, Microsoft Q&AQuestions-réponses, code, réseautage
Événements.NET Conf, Rencontres localesApprentissage en direct, réseautage

Remarque : Réservez chaque semaine du temps pour explorer de nouvelles ressources. L’apprentissage continu vous aide à garder une longueur d’avance dans le développement moderne avec .NET.

Vous pouvez combiner ces ressources pour bâtir des bases solides. Testez de nouveaux outils, suivez les conseils d’experts et rejoignez la communauté .NET. Vous améliorerez vos compétences et garderez vos projets modernes et efficaces.


Vous avez découvert comment connecter WPF, ASP.NET et gRPC pour le développement moderne avec .NET. Vous avez vu des étapes concrètes de migration, d’intégration et de sécurisation. Vous pouvez utiliser gRPC pour créer une communication rapide entre applications de bureau et applications web. Vous améliorez vos projets en suivant les bonnes pratiques présentées dans l’épisode Modern .NET: WPF, ASP.NET Core, and gRPC with Gábor Ruzsinszki [MVP]. Essayez gRPC dans votre prochaine solution. Vous pouvez explorer m365.fm pour d’autres conseils d’experts.

Rejoignez la communauté .NET et expérimentez avec des projets d’exemple pour développer vos compétences.

Questions fréquentes

Quel est le principal avantage de WPF pour les applications de bureau ?

WPF vous permet de créer des interfaces utilisateur riches et réactives. Le framework prend en charge les graphiques avancés et la liaison de données. Vous concevez rapidement et efficacement des applications de bureau de niveau entreprise.

Comment ASP.NET Core améliore-t-il le développement web ?

ASP.NET Core vous offre une prise en charge multiplateforme et des performances élevées. Le framework vous permet de créer des applications web et des API sécurisées. Vous déployez vos solutions sur Windows, Linux ou macOS.

Pourquoi utiliser gRPC pour la communication entre services ?

gRPC vous assure une communication rapide et fiable entre les services. Le framework utilise HTTP/2 et Protocol Buffers. Vous réduisez la latence et améliorez l’évolutivité de vos applications.

Peut-on connecter WPF et ASP.NET Core à l’aide de gRPC ?

Vous intégrez WPF et ASP.NET Core grâce à gRPC. Le framework permet à vos applications de bureau et web de partager des données et une logique métier. Vous créez des solutions unifiées pour les besoins actuels des entreprises.

Quels outils facilitent la migration des applications .NET héritées ?

Vous utilisez l’Assistant de mise à niveau .NET et Visual Studio pour la migration. Ces outils analysent votre code et vous guident tout au long du processus de mise à niveau. Vous modernisez vos applications avec moins d’efforts.

Comment sécuriser vos services ASP.NET Core et gRPC ?

Vous protégez vos services en activant HTTPS et en utilisant des jetons d’authentification. Vous mettez en œuvre une autorisation basée sur les rôles pour contrôler l’accès. Vous assurez la sécurité de vos données et de vos utilisateurs.

Où trouver des conseils d’experts sur le développement moderne avec .NET ?

Écoutez le Modern .NET Development Podcast sur m365.fm. Le podcast présente des exemples concrets et des conseils pratiques. Vous apprenez auprès d’experts du secteur et restez informé des nouvelles technologies.


🎧 Écoutez cet épisode

Vous souhaitez une explication pratique de Modern .NET ? Cet épisode présente le sujet en termes clairs et montre pourquoi il compte pour Microsoft 365, Azure, Power Platform, la sécurité, l’IA et le travail moderne.

Écoutez cet épisode si vous souhaitez :

  • Comprendre les concepts clés de Modern .NET
  • Voir comment il s’intègre dans l’écosystème technologique plus large de Microsoft
  • Découvrir où il peut apporter une valeur concrète à votre organisation

Vous apprécierez peut-être également ces épisodes M365 FM associés :

Découvrez d’autres échanges pratiques sur Microsoft sur M365 FM.

Entités dans cet article

ASP.NET Core .NET gRPC Microservices M365.FM Microsoft MVP Visual Studio ASP.NET Blazor Healthcare

Articles associés

RSS