Attribut Exécuter sur serveur

4D - Documentation   Français   English   German   Manuel de référence de 4D Server, Sommaire   Manuel de référence de 4D Server, Index   Retour   Précédent   Suivant

version 11.2


L'attribut de méthode projet "Exécuter sur serveur" peut être défini dans la boîte de dialogue de modification globale des attributs ou dans la boîte de dialogue des propriétés de la méthode :

Lorsque cette option est cochée, la méthode projet est toujours exécutée sur le serveur, quel que soit le mode d'appel de la méthode.

Note : Cet attribut est pris en compte uniquement dans le cadre d'une application 4D exécutée en client/serveur.

Contexte d'exécution

Lorsque cet attribut est coché, le contexte d'exécution de la méthode projet est le même que celui des triggers : la méthode sur le serveur partage le même contexte de base de données pour le verrouillage d'enregistrements et les transactions que le contexte correspondant côté client (cf. section 4D Server et le langage 4D).

Tous les paramètres de la méthode ($1, $2, etc.) sont envoyés sur le serveur et la valeur du paramètre $0, s'il est utilisé, est retournée sur le client.

A la différence de la commande Executer sur serveur, cette option ne provoque pas de création de process sur le serveur. 4D Server utilise le process "jumeau" du process client qui a demandé l'exécution.

En outre, cette option simplifie le principe de délégation de l'exécution d'une méthode sur le serveur car le transfert des paramètres s'effectue automatiquement dans les deux sens, comme pour un appel de méthode "normal".

La commande Executer sur serveur, elle, a un fonctionnement asynchrone et requiert donc davantage de programmation et le recours aux sémaphores pour la lecture des résultats.

Commandes utilisables

Les méthodes ayant l'attribut "Exécuter sur serveur" sont soumises aux mêmes règles que les procédures stockées en matière d'usage des commandes du langage 4D. L'exécution de certaines commandes est interdite sur le serveur, d'autres sont déconseillées. Pour plus d'informations, reportez-vous au paragraphe "Que ne peut pas faire une procédure stockée (exécutée sur le serveur) ?" dans la section Procédures stockées.

Pointeurs

Si vous passez un pointeur sur une variable (variable simple, tableau ou élément de tableau), la valeur pointée est également envoyée sur le serveur. Si la valeur pointée est modifiée sur le serveur par la méthode, la valeur modifiée est retournée sur le client pour mise à jour de la variable correspondante côté client.

Les pointeurs sur une table ou un champ sont envoyés sous forme de référence (numéro de table, numéro de champ). La valeur de l'enregistrement courant n'est pas échangée automatiquement.

Note : L'option fonctionne de la même manière en mode interprété et en mode compilé.

Exemple

Voici le code la méthode projet Monappli ayant l'attribut "Exécuter sur serveur" :

   C_POINTEUR($1)  `Pointeur sur table
   C_POINTEUR($2)  `Pointeur sur champ
   C_POINTEUR($3)  `Pointeur sur tableau
   C_TEXTE($4)  `Valeur à rechercher
   C_ENTIER LONG($0)  `Résultat

      `Rechercher et rapatrier des valeurs pour chaque enregistrement
   CHERCHER($1-> ; $2-> = $4)
   Tant que(Non(Fin de selection($1->)))
      AJOUTER A TABLEAU($3-> ; maFormule($1))
      ENREGISTREMENT SUIVANT($1->)
   Fin tant que
   LIBERER ENREGISTREMENT($1->)
   $0 := Enregistrements trouves( $1->)

Côté client, l'appel de la méthode s'effectue ainsi :

   TABLEAU TEXTE(monTab; 0)
   $vlnombre := MonAppli ( ->[Table_1] ; ->[Table_1]Champ_1 ; ->monTab ;"à trouver")

4D - Documentation   Français   English   German   Manuel de référence de 4D Server, Sommaire   Manuel de référence de 4D Server, Index   Retour   Précédent   Suivant