Interrogation du serveur Web 4D à partir d'un serveur Web Windows

Chiheb NASR

Dans cette note technique, nous présenterons l'installation et la configuration de l'extension 4DISAPI.DLL. Les informations techniques citées sont également valables pour le programme NPH-CGI4D.exe. Le but de cette note est de répondre aux fréquentes questions et interrogations relatives au déploiement de ces deux extensions : 4DISAPI.DLL et NPH-CGI4D.EXE. ♪

- Titre : Interrogation du serveur Web 4D à partir d'un serveur Web Windows

- Auteur : Chiheb NASR

- Parution : 1 novembre 2004

- Licence : Ce document est issu de https://www.developpez.comet reste la propriété exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise à l'obtention préalable de l'autorisation de l'auteur.

Sommaire

- I. Introduction

- II. Fonctionnement des deux extensions

- III. Les URL spécifiques à 4DISAPI

- IV. Peut-on changer ou renommer le dossier SCRIPTS (ou CGI-BIN) ?

- V. Peut-on renommer le nom du DLL ?

- VI. Peut-on interroger plusieurs serveurs Web 4D en même temps ?

- VII. Test de fonctionnement de l'extension et du serveur Web 4D

- VIII. Exemple d'installation

- IX. Conclusion

I - Introduction

Dans cette note technique, nous présenterons l'installation et la configuration de l'extension 4DISAPI.DLL. Les informations techniques citées sont également valables pour le programme NPH-CGI4D.exe. Le but de cette note est de répondre aux fréquentes questions et interrogations relatives au déploiement des deux extensions : 4DISAPI.DLL et NPH-CGI4D.EXE.

II - Fonctionnement des deux extensions

Les deux extensions 4DISAPI.DLL et NPH-CGI4D.EXE permettent à un serveur http Windows comme IIS de rediriger des requêtes vers un serveur Web 4D par le biais des URL. Les deux modules ont un fonctionnement identique, mais les extensions CGI sont généralement moins performantes que celles des extensions ISAPI. En effet, 4DISAPI est un module chargé par le serveur Web Windows comme un plug-in et les requêtes sont donc transférées à 4D directement à partir du serveur Web Windows. Par contre, dans le cas de l'extension NPH-CGI4D.exe, qui est un programme externe, les requêtes sont envoyées du serveur Web Windows vers le programme CGI, puis à partir ce dernier vers le serveur Web 4D.

La réponse est ensuite acheminée au navigateur en sens inverse. Le corps de la requête ou de la réponse HTTP n'est jamais modifié par les extensions.

Pour plus d'informations sur le fonctionnement de ces deux extensions et sur le support des CGI en générale, vous pouvez consulter les documentations disponibles aux emplacements suivants :

Pour la gamme 6.8 et 2003 :

https://4d.developpez.com/documentation/4DDoc2003/CMF/CMF02066.HTM

Pour la gamme 2004 :

https://4d.developpez.com/documentation/4DDoc2004/CMF/CMF02066.HTM

Notes

1. Cette solution ne supporte pas les requêtes SOAP. Les Web Services, disponibles depuis la version 2003.0 de 4D, sont une nouvelle technologie de communications basée sur des standards (SOAP, XML) et qui n'a absolument pas besoin de ce genre d'intermédiaires. Les Web services devraient être l'orientation de nos futures applications Web en termes de communication Serveur-Serveur et/ou Serveur-Client.

2. La requête initiale envoyée au serveur IIS peut être effectuée en clair ou en mode sécurisé (SSL). La communication entre les deux serveurs HTTP et l'extension 4DISAPI.DLL s'effectue en clair.

3. 4DISAPI n'est pas compatible avec le mode contextuel du serveur Web 4D.

4. Il n'est pas possible de procéder à une authentification au niveau HTTP via l'extension 4DISAPI. Pour cela, il est nécessaire d'utiliser un formulaire HTML.

III - Les URL spécifiques à 4DISAPI

Pour reconnaître une URL destinée au serveur Web 4D, le serveur Web de Windows analyse son contenu et s'il détecte la présence du nom d'extension « 4disapi.dll », il extrait la partie utile de l'URL pour la transférer à 4D. La portion de l'URL envoyée à 4D contient aussi les paramètres. L'exemple suivant illustre ce mécanisme :

http://www.MonsiteIIS.com/Scripts/4disapi.dll/4DACTION/Mamethode/Mesparams

Dans cet exemple l'adresse du site Web principal est  www.MonsiteIIS.com. Lorsque le serveur Web IIS reçoit cette URL, il redirige la portion de chemin qui suit le nom de l'extension au serveur Web 4D :

« /4DACTION/Mamethode/Mesparams »

IV - Peut-on changer ou renommer le dossier SCRIPTS (ou CGI-BIN) ?

Le dossier SCRIPTS (ou CGI-BIN selon le système) est le dossier par défaut d'emplacement des modules externes (Dll, CGI). On peut bien entendu choisir un autre dossier et/ou lui donner un autre nom pourvu qu'il ait les mêmes droits d'accès que le dossier par défaut en particulier le droit d'exécuter des programmes.

V - Peut-on renommer le nom du DLL ?

L'installation des extensions 4DISAPI s'effectue par simple copie des fichiers 4DISAPI.DLL ou dans le dossier [Scripts] du serveur http Windows (IIS). Chaque DLL installée doit être accompagnée d'un fichier de configuration (.INI). Le fichier .INI doit porter le même nom que la Dll (par exemple 4DISAPI.INI). L'extension et son fichier de configuration doivent être placés dans le même dossier. On peut les renommer en leur donnant un nom plus significatif pour l'utilisateur Web, par exemple Facturation.DLL et Facturation.INI. Dans ce cas les URL seront de la forme suivante :

http://www.MonsiteIIS.com/Scripts/Facturation.dll/{Chemin d'accès}

VI - Peut-on interroger plusieurs serveurs Web 4D en même temps ?

4DISAPI permet également de rediriger des requêtes http à partir d'un serveur Web Windows vers un ou plusieurs serveurs Web 4D. Les Serveurs 4D peuvent se trouver aussi bien sur la même machine que sur des machines différentes. Dans ce cas, placez dans le dossier [Scripts] du serveur IIS autant d'extensions que de serveurs 4D. Ensuite, il faudra les renommer par exemple Paiement.DLL, Boutiques.DLL, etc. Il est également indispensable d'insérer un fichier de configuration par extension, et de le renommer en conséquence (Paiement.INI, Boutiques.INI, etc.).

Le fichier .INI est constitué d'une seule section : [Forward]. Cette section accepte les commandes suivantes :

TargetServer = Nom ou adresse IP du serveur Web. Par défaut 127.0.0.1 :

TargetPort = Port d'écoute. Par défaut 8080 :

Timeout = Délai maximum d'attente de la réponse du serveur. Par défaut 30 ;

Allowed = Liste des URL autorisées, séparées par des virgules ;

Forbidden = Liste des URL interdites, séparées par des virgules.

Vous trouverez plus de détails sur ces commandes dans la documentation disponible à l'emplacement cité plus haut.

VII - Test de fonctionnement de l'extension et du serveur Web 4D

On peut tester le fonctionnement de l'extension grâce à l'écho de la requête :

http://adresse-serveur/Scripts/4disapi.dll/ ~~echo

Il est important de noter que la réponse à cette requête est retournée même en cas de non-disponibilité du serveur Web 4D. Par conséquent, il ne peut pas nous servir à tester le bon fonctionnement du serveur Web 4D. Voici la réponse retournée par la version 6.8 de l'extension 4DISAPI.DLL :

-------------------------------------------
Product information
Script name : /Scripts/Boutique.DLL(6.8)
Server software : Microsoft-IIS/5.0
Server protocol : HTTP/1.1
Gateway interface : CGI/1.1
-------------------------------------------

Des informations sur l'extension peuvent également être obtenues par le mot clé ~~info comme le montre l'URL suivant :

http://adresse-serveur/Scripts/4disapi.dll/ ~~info

Ci-après un exemple de réponse obtenue également aussi bien en cas de fonctionnement ou pas du serveur Web 4D :

-------------------------------------------
GET /~~echo HTTP/1.0
Accept: */*
Accept-Encoding: gzip, deflate
Accept-Language: fr
Authorization:
Connection: Keep-Alive
Host: 127.0.0.1
User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)
----------------------------------------------------------------

Enfin, le mot clé ~~target est celui qui vous permet de tester si le serveur cible est joignable :

http://adresse-serveur/Scripts/4disapi.dll/ ~~target

L'une des deux réponses suivantes est retournée :

Good: target server reached : le serveur cible a répondu

Bad: target server not reached : le serveur est injoignable.

VIII - Exemple d'installation

Dans cet exemple on va créer un site Web principal nommé Demo_ISAPI publié par un serveur web IIS sous Windows 2000 via le port 80. Les fichiers html qui constituent le site Demo_ISAPI sont placés dans le dossier « D:\SITWEB_IIS ». On va faire communiquer ce site avec deux serveurs Web 4D : Boutiques et Paiement, publiés respectivement via le port 8080 et 8081.

Nous vous proposons, dans ce qui suit, un scénario d'installation et de test de fonctionnement de notre configuration :

On crée un site virtuel et on le nomme Demo_ISAPI.

On lui accorde l'autorisation d'exécution des extensions (Dll) et des programmes (CGI, exe). Ci-après une copie d'écran des propriétés de notre application Demo_ISAPI.

Dans le dossier [Scripts] de Windows 2000, on copie le fichier 4DISAPI.DLL et son fichier d'accompagnement 4DISAPI.INI et on les renomme respectivement Boutiques.DLL et Boutiques.INI. Ensuite, on duplique ces deux fichiers et on renomme les deux nouveaux fichiers Paiement.DLL et Paiement.INI. Enfin, on édite le fichier Paiement.INI pour modifier le numéro de port d'écoute (par défaut 8080) et on le remplace par 8081. Voici comment le dossier [Scripts] se présente :

Dans la page d'accueil de notre site Demo_ISAPI, on définit deux liens qui permettent d'interroger les deux sites Web 4D.

Le premier lien « Interroger le serveur Web 4D Boutiques » interroge le site Web 4D Boutiques via l'URL :

http://127.0.0.1/Scripts/Boutique.DLL/4DACTION/M_Hello

Le deuxième lien « Interroger le serveur Web 4D Paiement » fait appel au site Web Paiement via l'URL:

http://127.0.0.1/Scripts/Paiement.DLL/4DACTION/M_Hello

L'URL http://127.0.0.1/demo_isapi/ permet d'afficher la page d'accueil de notre application Demo_ISAPI.

Voici le code 4D de la méthode M_Hello :

1. $vheure:= Chaine( Heure courante(*))

2. $vMessage:="Cette page est servie par le serveur Web 4D (Boutiques) "+"<br>"+"<br>"

3. ENVOYER TEXTE HTML($vMessage+"Coucou je suis le site Boutiques : "+$vheure)

La méthode M_Hello est identique dans les deux bases de données à l'exception du changement du nom de serveur Web inséré dans le texte (Boutiques ou Paiement).

- On lance une première base de données 4D (Boutiques) et on publie son serveur Web sur le port 8080.

- On lance une deuxième base de données 4D (Paiement) et on publie son serveur Web sur le port 8081.

- On ouvre une session du navigateur et on demande l'url suivant : http://127.0.0.1/demo_isapi/

La page d'accueil suivante de notre site Demo_ISAPI sera affichée :

Lorsque l'on clique sur le lien « Interroger le serveur Web 4D Boutiques », qui fait appel au serveur Web 4D via l'extension Boutique.dll, la page html suivante sera envoyée par le serveur Web 4D (Boutiques) :

Lorsque l'on clique sur le lien « Interroger le serveur Web 4D Paiement », qui fait appel au serveur Web 4D via l'extension Paiement.dll, la page html suivante sera envoyée par le serveur Web 4D (Paiement) :

IX - Conclusion

Dans cette note technique, nous avons présenté, tout en nous appuyant sur un exemple concret, le principe de fonctionnement, l'installation et l'exploitation de l'extension 4DISAPI.DLL. Nous avons également essayé de répondre aux fréquentes questions et interrogations relatives au déploiement de cette extension et du programme NPH-CGI4D.EXE.

Attention : il est important de vous signaler une incompatibilité de la librairie 4DISAPI.DLL et du serveur Web IIS version 6 installé par défaut sur le système Windows 2003 Serveur. Il s'agit d'un problème de chargement de la DLL qui est en cours d'étude par le service Contrôle Qualité de 4D SA.