20 septembre 2010
publié par 
Il s'agit d'un interrogation revenant très régulièrement au Support Technique Gratuit, notamment lorsque l'on a une expérience avec WINDEV. En effet WINDEV offre pratiquement toutes les combinaisons de traitements possibles avec la fonction WLangage "ExécuteTraitement".

Dans un site Web, il est important de garder en permanence à l'esprit qu'il y a deux processus sur deux ordinateurs distincts qui permettent l'exécution du site (une application WINDEV s'exécute sous la forme d'un processus unique) :

- le code navigateur sur le poste de l'Internaute s'exécute dans le navigateur qui affiche la page (processus Chrome, Firefox, Internet Explorer...),

- le code serveur qui en revanche s'exécute sur le poste qui héberge le site (processus "WDSession" sur serveur Windows 2003 / 2008 serveur, Linux).

Il n'y a donc pas de communication ou interaction directe entre ces codes exécutés dans deux processus bien distincts. Il y a en revanche un mécanisme d'aller / retour passant de l'un à l'autre à chaque validation (submit) de page. Par exemple l'Internaute validant une page par un clic sur un bouton, provoque l'enchaînement :
- code navigateur du bouton (l'internaute est sur son poste),
- envoi de la page au serveur avec le contenu des champs,
- code serveur du bouton, là il est possible de faire appel à d'autres codes serveurs,
- code de déclaration et d'initialisation de la page,
- retour de la page au navigateur avec ses modifications,
- code navigateur de la page lorsque le navigateur "reprend la main" pour un nouvel affichage (code "onload" de la page).

Lorsqu'un code serveur s'exécute, il va à son terme avant de renvoyer la page au navigateur.

Ce découpage en deux processus distincts explique également que le code serveur n'ait pas accès directement aux ressources de l'Internaute : disque, imprimante, périphériques usb... En effet le code serveur s'exécute donc sur le serveur, il n'a accès qu'aux périphériques du serveur. Sur ce point les navigateurs sont de plus conçus pour qu'il ne soit pas possible à un site d'accéder aux ressources de l'Internaute. Tout manquement constitue une faille de sécurité.

Pour certains traitements (contrôle de saisie...) il existe tout de même une solution permettant un échange entre un code navigateur et un code serveur, en court-circuitant le mécanisme d'aller/retour complet des pages. En effet en s'appuyant sur la technologie Ajax, il est possible, depuis un code navigateur d'appeler une procédure du serveur puis de poursuivre le code navigateur sans aller/retour de la page. Cette possibilité est offerte par les fonctions "AjaxExécute" et "AjaxExécuteAsynchrone".

< Retour