# Migrer une application WinForms ou WPF vers le web : comment chiffrer

Source : https://consignestudio.fr/guides/migration-winforms-wpf-vers-web/ · publié le 2026-10-30 · Antoine Despres, Consigne

Une application WinForms ou WPF ne peut pas être « déplacée » dans un navigateur, elle se réécrit écran par écran. Le chiffrage sérieux part donc d'un inventaire mesuré dans le code (écrans, contrôles, dépendances, usages propres à Windows), puis d'un découpage en lots dont chacun reçoit son prix. Cette page détaille la méthode et donne les ordres de grandeur publiés par Consigne.

## Trois destinations possibles, à ne pas confondre

« Migrer » recouvre trois projets très différents, et le budget dépend d'abord de celui que vous visez.

| Destination | Ce que cela change | Ce que cela ne change pas |
|---|---|---|
| De .NET Framework vers .NET récent | Le format de projet, certaines API, les dépendances NuGet | L'application reste un programme Windows à installer |
| D'une version de .NET à la suivante (par exemple 9 vers 10) | La cible du projet, les changements cassants à examiner, les dépendances | Tout le reste |
| Vers une application web | L'interface, l'architecture, le déploiement : tout est réécrit | Les règles métier, qu'il faut retrouver à l'identique |

La documentation de Microsoft sur la migration le dit sans ambiguïté : Windows Forms est prise en charge sur .NET et reçoit un investissement actif, mais les applications de bureau pour .NET restent réservées à Windows. Passer à .NET récent est donc une mise à niveau ; ce n'est pas un chemin vers le navigateur. Pour le web, il faut une nouvelle interface.

> **Une échéance à connaître.** D'après la politique de support de Microsoft, .NET 8 (LTS) et .NET 9 (STS) arrivent tous deux en fin de support le 10 novembre 2026. .NET 10 (LTS) est supporté jusqu'au 14 novembre 2028. Si votre application est déjà sur .NET 8 ou 9, la montée vers .NET 10 est un chantier distinct, plus court, à ne pas mélanger avec la réécriture web.

## Pourquoi un chiffrage « au doigt mouillé » échoue

Compter les écrans d'une solution ne suffit pas. Deux fenêtres qui paraissent semblables peuvent différer de dix fois en travail : l'une affiche un formulaire de saisie, l'autre pilote un automate, dessine un graphique sur mesure et imprime un état imposé. Trois pièges reviennent.

* **Les écrans morts.** Une solution contient souvent des fenêtres que plus aucun chemin n'atteint. Elles ne doivent pas figurer dans le prix.
* **Les écrans ouverts par configuration.** À l'inverse, un écran créé par réflexion ou par un fichier de paramètres échappe à l'analyse automatique. Il faut le remettre dans le périmètre à la main.
* **Les usages propres au poste Windows.** Registre, ports série, appels P/Invoke, composants COM, impression, fichiers locaux, protocoles industriels : aucun ne fonctionne tel quel dans un navigateur. Chacun devient un chantier commun à traiter une fois pour toute l'application.

## Mesurer avant de promettre

La méthode que Consigne publie repose sur un inventaire produit par l'outil libre `winmig` (licence MIT), qui lit le code source sans le compiler ni l'exécuter et sans ouvrir de connexion réseau. Un projet qui ne compile plus peut donc être analysé. L'inventaire donne, pour chaque écran, ses contrôles, ses gestionnaires d'événements, ses liaisons de données et ses lignes de logique, plus la liste des dépendances classées par famille.

Chaque écran reçoit ensuite un score, puis une classe et des unités d'écran.

| Classe | Score | Unités d'écran |
|---|---|---|
| S | moins de 30 | 0,5 |
| M | 30 à 79 | 1 |
| L | 80 à 179 | 2 |
| XL | 180 et plus | 3 |

Le score vaut : contrôles + 2 × gestionnaires d'événements + liaisons de données + lignes de logique ÷ 15 + 0,5 × branches + 4 × contrôles tiers. Chaque point lourd propre à l'écran (accès direct à une base, dessin personnalisé, animation) ajoute 0,5 unité. On y ajoute un socle de 4 unités (application, authentification, thème, temps réel, intégration continue) et les chantiers transverses, dont le coût croît avec le nombre de fichiers touchés.

Ce que l'outil ne voit pas, il faut le demander explicitement à celui qui chiffre : les écrans créés par réflexion ou par configuration, les contrôles créés à l'exécution, et la logique cachée dans la base de données (procédures stockées, déclencheurs).

## Du nombre d'unités au prix

Chez Consigne, une unité d'écran vaut 2 500 € HT, soit 2,4 à 3,2 jours de travail. Le travail est découpé en lots.

* Le premier lot livre le socle web, les chantiers communs et la fenêtre principale, qui tourne dans un navigateur avec des données de test représentatives. Il compte en général 15 à 20 unités, soit 37 500 à 50 000 € HT et 9 à 13 semaines.
* Les lots suivants comptent environ 10 unités, soit environ 25 000 € HT et 5 à 7 semaines.
* Un lot se facture à ses unités réelles, avec un minimum de 5 unités.

Le rapport d'exemple publié sur l'application open source OPC UA Reference Client donne 19,5 unités pour son premier lot. À 2 500 € l'unité, cela fait 48 750 € HT, et entre 47 et 62 jours de travail avec les deux bornes de 2,4 et 3,2 jours (calcul fait ici à partir des chiffres publiés).

> **Un chiffrage mesuré reste indicatif.** Il évalue le code, pas votre organisation ni la qualité de vos jeux de test. Seule une proposition écrite portant sur un lot précis engage un prix. Méfiez-vous d'un devis global signé sans relecture du périmètre.

## Choisir l'architecture cible

Le prix dépend de la cible. Les options sérieuses, telles que la méthode de Consigne les compare, sont les suivantes.

| Option | Atout | Limite |
|---|---|---|
| Transposition automatique par outil commercial | Rapide, le code C# reste | Licence d'exécution aux conditions de l'éditeur ; l'ergonomie reste celle d'un écran de bureau |
| Avalonia ou .NET récent en gardant le client lourd | Garde le client lourd, multiplateforme | Reste une application à installer |
| Blazor | Du C# jusque dans l'interface | Écosystème de composants plus petit ; même réécriture écran par écran |
| Réécriture Angular et ASP.NET Core | Vraie application web, prix ferme par lot | Demande une recette sérieuse, écran par écran |

Dans l'offre de Consigne, Angular est le choix par défaut pour des applications métier web durables, et si Blazor convient mieux à votre équipe, l'audit le recommande et revoit le chiffrage, calibré pour Angular.

## Les états Crystal Reports, à part

Si votre application utilise Crystal Reports, mettez ces états à part dans le budget. Selon la méthode publiée, le moteur ne fonctionne ni sur .NET 5 et suivants, ni dans un navigateur. Chaque fichier `.rpt` est donc listé avec le code qui l'ouvre, puis chiffré séparément : 250 € HT pour un état simple, 550 € pour un état moyen, 1 100 € pour un état complexe, d'après des critères publics (sources, sous-rapports, formules, graphiques, tableaux croisés, codes-barres, imprimé imposé).

## Questions à poser à celui qui vous chiffre

1. Le périmètre est-il relu avec moi, écran mort par écran mort, ou compté mécaniquement ?
2. Les chantiers communs (matériel, impression, registre) sont-ils chiffrés à part, avec leur règle de calcul ?
3. Le prix est-il ferme par lot, et puis-je m'arrêter après n'importe lequel sans pénalité ?
4. Quelle recette, quelle garantie, et que devient une évolution demandée en cours de route ?
5. Mon code doit-il quitter mes machines pour obtenir le chiffrage ?

Dans la méthode de Consigne, la recette dure 10 jours ouvrés après chaque lot, avec 3 mois de garantie sur les anomalies du lot recetté, et le paiement se fait à 30 % à la commande, 40 % à mi-parcours et 30 % à la recette.

## L'audit de migration de Consigne, en bref

[L'audit de migration WinForms](https://consignestudio.fr/migration-winforms-wpf-vers-web/) applique cette méthode, entièrement à distance, pour 4 900 € HT. Vous lancez `winmig` sur votre solution et vous envoyez l'inventaire, que vous pouvez relire avant l'envoi, avec un questionnaire de cadrage de 20 questions. Un développeur senior relit le périmètre, rédige l'avis et maquette deux écrans en HTML. Vous recevez, sous 10 jours ouvrés, un rapport PDF avec un plan de lots chiffré, ainsi qu'une proposition ferme pour le premier lot, valable 3 mois et déduite du prix de l'audit.

Les limites sont écrites sur la page de l'offre : une application par audit, jusqu'à 80 écrans dans le périmètre, WinForms et WPF en C# ou VB.NET, de .NET Framework à .NET 10. VB6 relève d'un diagnostic distinct, Delphi et C++/MFC ne sont pas couverts. La réalisation de la migration, la reprise des données et les licences de composants tiers ne sont pas dans l'audit. L'outil `winmig` reste utilisable seul, gratuitement, pour obtenir un premier inventaire.

## Sources

- [Migrer vers .NET, documentation Windows Forms, Microsoft Learn](https://learn.microsoft.com/fr-fr/dotnet/desktop/winforms/migration/)
- [Politique de support de .NET et .NET Core, Microsoft](https://dotnet.microsoft.com/en-us/platform/support/policy/dotnet-core)
- README et méthode de l'outil libre winmig, Consigne
- Fiche de l'offre Audit de migration WinForms, Consigne
- Textes relus le 30 octobre 2026
