Aller au contenu principal
Version: 19

Utiliser des process web préemptifs

Le serveur Web de 4D vous permet de tirer pleinement parti des ordinateurs multi-coeurs en utilisant des process Web préemptifs dans vos applications compilées. Vous pouvez configurer votre code lié au Web, y compris les balises 4D, les méthodes base Web ou les fonctions de classe Rest de Orda, afin qu'il s'exécute simultanément sur le plus grand nombre de coeurs possibles.

Pour plus d'informations sur la fonctionnalité des process préemptifs dans 4D, veuillez vous référer à la section Process 4D préemptifs du manuel de language 4D.

Disponibilité du mode préemptif pour les process Web

Le tableau suivant indique si l'utilisation du mode préemptif pour les process Web est disponible selon le contexte d'exécution :

4D ServerInterprété, projet (client connecté en local)Interprété, projet (sans client connecté en local) ou binaireCompilé
Serveur RESTcoopératifpréemptifpréemptif
Serveur Webcoopératifcoopératifparamètre web
Server Web Servicescoopératifcoopératifparamètre web
Ancien RESTcoopératifparamètre webparamètre web
4D distant/monoposteInterprétéCompilé
Serveur RESTcoopératifpréemptif
Serveur Webcoopératifparamètre web
Server Web Servicescoopératifparamètre web
Ancien RESTcoopératifparamètre web
  • Serveur REST : gère les fonctions de classe du modèle de données ORDA
  • Serveur Web : gère les modèles Web, 4DACTION et les méthodes base
  • Serveur de services Web : gère les requêtes SOAP
  • Ancien REST: requêtes directes aux méthodes 4D (/rest/{table}/{methodName})
  • paramètre web signifie que le mode préemptif dépend d'un paramétrage :
    • lorsque l'option Sessions évolutives est sélectionnée, le mode préemptif est automatiquement utilisé pour les process web.
    • sinon, l'option Utiliser des process préemptifs est prise en compte.
    • en ce qui concerne les process de service Web (serveur ou client), le mode préemptif est pris en charge au niveau de la méthode. Vous devez simplement sélectionner la propriété "Peut être exécutée dans un process préemptif" pour les méthodes de serveur SOAP publiées (voir Publication d'un service Web avec 4D) ou les méthodes de client proxy (voir Abonnement à un service Web dans 4D) et vous assurer qu'elles sont confirmées comme étant thread-safe par le compilateur.

Ecrire du code serveur Web thread-safe

Tout le code 4D exécuté par le serveur Web doit être thread-safe si vous souhaitez que les process Web soient lancés en mode préemptif. Lorsque l'option Utiliser des process préemptifs est cochée dans la boîte de dialogue Propriétés, les parties suivantes de l'application seront automatiquement évaluées par le compilateur 4D :

  • Toutes les méthodes base liées au web :

  • La méthode projet compiler_web (indépendamment de sa propriété "Mode d'exécution") ;

  • En principe, tout code traité par la commande PROCESS 4D TAGS dans le contexte du web, par exemple par le biais de pages .shtml.

  • Toute méthode projet comportant l'attribut "Available through 4D tags and URLS (4DACTION, etc.)"

  • Triggers pour les tables comportant l'attribut "Expose as REST resource"

  • Fonctions de classe du modèle de données ORDA appelées via REST

  • Méthodes projet avec la propriété "REST Server" cochées (appels REST hérités)

Pour chacune de ces méthodes ou parties de code, le compilateur vérifiera si les règles thread-safe sont respectées, et retournera une erreur en cas de problème. Pour plus d'informations à propos des règles thread-safe, veuillez vous référer au paragraphe Ecrire une méthode thread-safe dans le chapitre Process du manuel de Langage 4D.

Code web 4D thread-safe

La plupart des commandes, fonctions, méthodes base et URLs 4D sont thread-safe et peuvent être utilisées en mode préemptif.

4D commands and database methods

Toutes les commandes 4D relatives au Web sont thread-safe, à savoir :

  • toutes les commandes du thème Web Server
  • toutes les commandes du thème Client HTTP.

Les méthodes base liées au web sont thread-safe et peuvent être utilisées en mode préemptif (voir ci-dessous) : On Web Authentication, On Web Connection, On REST Authentication...).

Bien sûr, le code exécuté par ces méthodes doit aussi être thread-safe.

URL Web Server

Les URLs Web Server ci-dessous sont thread-safe et peuvent être utilisées en mode préemptif :

  • 4daction/ (la méthode projet appelée doit également être à thread-safe)
  • 4dcgi/ (les méthodes base appelées doivent également être thread-safe)
  • 4dwebtest/
  • 4dblank/
  • 4dstats/
  • 4dhtmlstats/
  • 4dcacheclear/
  • rest/
  • 4dimgfield/ (généré par PROCESS 4D TAGS pour les requêtes web relatives aux champs images)
  • 4dimg/ (généré par PROCESS 4D TAGS pour les requêtes web sur les variables image)

Icône de process web préemptif

Dans l'Explorateur d'exécution et dans la fenêtre d'administration de 4D Server, une icone spécifique s'affiche pour les process Web préemptifs :

Type de processIcône
Méthode Web (process préemptif)