Migration · WebDev → React

Migration WebDev :
passer à React et à une API ouverte.

Un site ou un extranet WebDev rend souvent de vrais services : prise de commande, portail client, consultation de stocks. Mais il dépend d'un serveur d'application propriétaire et d'un langage rare. Nous le reconstruisons avec React et une API REST, en conservant vos règles métier et vos données.

Pourquoi remplacer WebDev ?

WebDev permet de produire rapidement des applications web avec le même WLangage que WinDev. C'est sa force, et c'est aussi sa limite : le code serveur, le code navigateur et l'accès aux données sont mêlés dans les mêmes pages, l'application tourne sur un serveur d'application spécifique, et peu de développeurs web connaissent l'outil. Chaque évolution passe par l'atelier de l'éditeur, à la version que vous possédez.

Une architecture web standard sépare deux choses :

Ce découpage a un avantage immédiat : la même API peut servir le site web, une application mobile et vos échanges avec d'autres logiciels. Vos règles métier sont écrites une seule fois. Angular reste une alternative à React si votre équipe la connaît déjà : le raisonnement est identique.

Équivalence des concepts WebDev → React

Voici comment les briques d'un projet WebDev se retrouvent dans une architecture React + API.

Dans WebDevAvec React et une API
Page (PAGE_…)Composant React associé à une route (React Router ou équivalent)
Modèle de pagesComposant de mise en page (layout) partagé
Code navigateurCode React / TypeScript exécuté dans le navigateur
Code serveur des pagesPoints d'entrée de l'API REST (ASP.NET Core ou Node.js)
Traitements AJAXAppels fetch vers l'API, échanges en JSON
Champs de saisie liés à un fichierFormulaires contrôlés, validés côté navigateur et côté serveur
Zones répétées et tablesListes et tableaux générés à partir des données (map), pagination côté API
Contexte de session sur le serveurAPI sans état, authentification par cookie sécurisé ou jeton
Groupware utilisateurAuthentification et gestion des rôles côté API
Pages AWP destinées au référencementPages rendues côté serveur ou générées statiquement
Webservices WebDevAPI REST documentée
Serveur d'application WebDevHébergement web standard pour le front, serveur Linux ou Windows pour l'API

Exemple : une page WebDev reprise en React

Une fiche client classique : l'utilisateur saisit un code, clique sur « Rechercher », et les champs se remplissent. En WebDev, tout se trouve dans le code serveur du bouton, qui lit directement la base et affecte les champs de la page.

Avant · PAGE_FicheClient (WLangage, code serveur)
// PAGE_FicheClient · clic sur BTN_Rechercher (code serveur)
HLitRecherchePremier(Client, CodeClient, SAI_Code)
SI HTrouve(Client) ALORS
    SAI_Nom = Client.Nom
    SAI_Ville = Client.Ville
    SAI_Encours = Client.Encours
SINON
    Info("Client introuvable")
FIN

Dans la nouvelle architecture, la lecture de la base passe par un point d'entrée de l'API. Il ne renvoie que les informations utiles à l'écran, et seulement à un utilisateur authentifié.

Après · API (C# / ASP.NET Core)
// API ASP.NET Core · GET /api/clients/{code}
app.MapGet("/api/clients/{code}", async (string code, AppDbContext db) =>
{
    var client = await db.Clients
        .Where(c => c.CodeClient == code)
        .Select(c => new ClientDto(c.Nom, c.Ville, c.Encours))
        .FirstOrDefaultAsync();

    return client is null ? Results.NotFound() : Results.Ok(client);
}).RequireAuthorization();

Le composant React s'occupe uniquement de l'affichage : il appelle l'API, puis affiche la fiche ou le message d'erreur.

Après · FicheClient.tsx (React / TypeScript)
type Client = { nom: string; ville: string; encours: number };

export function FicheClient() {
  const [code, setCode] = useState('');
  const [client, setClient] = useState<Client | null>(null);
  const [erreur, setErreur] = useState('');

  async function rechercher(e: React.FormEvent) {
    e.preventDefault();
    const res = await fetch(`/api/clients/${encodeURIComponent(code)}`);
    if (res.ok) { setClient(await res.json()); setErreur(''); }
    else { setClient(null); setErreur('Client introuvable'); }
  }

  return (
    <form onSubmit={rechercher}>
      <input value={code} onChange={(e) => setCode(e.target.value)} />
      <button>Rechercher</button>
      {erreur && <p role="alert">{erreur}</p>}
      {client && <FicheResume client={client} />}
    </form>
  );
}

Le comportement est le même pour l'utilisateur. Mais chaque partie peut maintenant évoluer, être testée et être reprise par un autre développeur sans connaître WebDev.

Les pièges d'une migration WebDev

Le passage d'un serveur « avec état » à une API sans état

En mode session, WebDev conserve sur le serveur le contexte de chaque utilisateur : valeurs des champs, fichiers positionnés, variables globales. Beaucoup de pages en dépendent sans le dire. Une API REST ne garde rien entre deux appels : il faut identifier ce que chaque écran suppose déjà chargé, et le transmettre ou le relire explicitement.

Les contrôles qui n'existaient que dans le navigateur

Un contrôle de saisie fait en code navigateur peut être contourné. Dans la nouvelle architecture, chaque règle importante est appliquée par l'API, même si l'interface la vérifie aussi pour le confort de l'utilisateur. C'est un point de sécurité à traiter systématiquement.

Le code navigateur et le code serveur mélangés

Dans un même événement WebDev, une partie du traitement s'exécute dans le navigateur, une autre sur le serveur. Il faut démêler ces deux parties pour savoir ce qui revient à React et ce qui revient à l'API, sans dupliquer la règle métier des deux côtés.

Les adresses des pages et le référencement

Si votre site WebDev est public, ses adresses sont peut-être indexées par les moteurs de recherche. Changer de technologie change les URL. Il faut les inventorier et prévoir des redirections 301 vers les nouvelles pages pour ne pas perdre votre visibilité, et rendre côté serveur les pages qui doivent être référencées.

Les éditions et exports

Les états imprimés, les exports Excel ou PDF générés par WebDev doivent être repris par l'API. On les inventorie dès l'audit : ils sont souvent plus nombreux qu'on ne le pense, et certains ne servent plus.

Notre méthode pour migrer un site WebDev

  1. Audit. Inventaire des pages, des traitements serveur et navigateur, des webservices, des éditions et de l'analyse HFSQL. Voir notre audit d'application WinDev et WebDev.
  2. Conception de l'API. Les règles métier extraites du WLangage deviennent des points d'entrée REST, documentés et sécurisés.
  3. Refonte de l'interface. Les parcours qui fonctionnent sont conservés, l'ergonomie est modernisée, le site devient utilisable sur mobile.
  4. Migration progressive. Les modules sont repris par étapes : l'ancien site et le nouveau peuvent cohabiter le temps de la transition.
  5. Reprise des données. Si la base HFSQL est aussi remplacée, ses données sont transférées vers PostgreSQL, MySQL / MariaDB ou SQL Server. Voir HFSQL vers PostgreSQL.
  6. Mise en ligne et évolutions. Déploiement sur un hébergement standard, redirections, accompagnement des utilisateurs, maintenance.

Vous avez aussi une application WinDev de bureau ? Elle peut s'appuyer sur la même API que le nouveau site. Voir notre page WinDev vers C# / .NET.

Le code source vous est livré en totalité et repose sur des technologies open source : pas de redevance éditeur, et vous restez libre de choisir qui fera évoluer votre application demain. Pour l'ensemble de notre démarche, consultez la page migration et refonte WinDev, WebDev et WinDev Mobile.

Questions fréquentes

Migration WebDev : vos questions.

Pourquoi remplacer WebDev par React ?

React est l'une des bibliothèques les plus utilisées pour construire des interfaces web. Elle s'appuie sur des standards ouverts (HTML, CSS, JavaScript / TypeScript), fonctionne avec n'importe quel serveur et se maintient facilement : vous ne dépendez plus d'un serveur d'application propriétaire ni d'un éditeur unique.

Quel serveur remplace le serveur d’application WebDev ?

Le code serveur devient une API REST, écrite en C# avec ASP.NET Core ou en Node.js selon votre contexte. Le front React est un ensemble de fichiers statiques, servis par un hébergement web classique. Les deux se déploient sur des serveurs standards, Linux ou Windows.

Peut-on migrer un site WebDev page par page ?

Oui. Les pages sont reprises par modules, en commençant par celles qui apportent le plus. Pendant la transition, l'ancien site et la nouvelle application peuvent cohabiter et partager les mêmes données, avec des redirections propres pour les adresses qui changent.

Nos utilisateurs devront-ils réapprendre l’application ?

Le moins possible. La migration conserve les parcours qui fonctionnent et les règles métier. C'est aussi l'occasion d'améliorer l'ergonomie, mais toujours avec vos utilisateurs, pour ne pas changer leurs habitudes de travail sans raison.

Dossier migration

Les autres étapes de votre migration.

Contact

Parlons de votre
prochaine version.

Décrivez-nous votre projet en quelques mots. Nous revenons vers vous sous 48 h ouvrées.

Adresse55 rue Camille Pelletan
33150 Cenon