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.
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.
Voici comment les briques d'un projet WebDev se retrouvent dans une architecture React + API.
| Dans WebDev | Avec React et une API |
|---|---|
| Page (PAGE_…) | Composant React associé à une route (React Router ou équivalent) |
| Modèle de pages | Composant de mise en page (layout) partagé |
| Code navigateur | Code React / TypeScript exécuté dans le navigateur |
| Code serveur des pages | Points d'entrée de l'API REST (ASP.NET Core ou Node.js) |
| Traitements AJAX | Appels fetch vers l'API, échanges en JSON |
| Champs de saisie liés à un fichier | Formulaires contrôlés, validés côté navigateur et côté serveur |
| Zones répétées et tables | Listes et tableaux générés à partir des données (map), pagination côté API |
| Contexte de session sur le serveur | API sans état, authentification par cookie sécurisé ou jeton |
| Groupware utilisateur | Authentification et gestion des rôles côté API |
| Pages AWP destinées au référencement | Pages rendues côté serveur ou générées statiquement |
| Webservices WebDev | API REST documentée |
| Serveur d'application WebDev | Hébergement web standard pour le front, serveur Linux ou Windows pour l'API |
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.
// 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")
FINDans 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é.
// 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.
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.
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.
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.
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.
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 é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.
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.
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.
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.
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.
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.
Décrivez-nous votre projet en quelques mots. Nous revenons vers vous sous 48 h ouvrées.