Connexion du client au serveur DataSnap

De RAD Studio
Aller à : navigation, rechercher

Remonter à Application Client DataSnap


TSQLConnection

Le composant TSQLConnection peut être déposé depuis la palette d'outils dans une fiche, ou vous pouvez l'utiliser explicitement dans votre code. Le pilote à utiliser est DataSnap. Désactivez la propriété de connexion Login Prompt (Invite de connexion) pour empêcher l'affichage d'une fenêtre de message d'authentification quand vous tentez d'établir la connexion à un serveur DataSnap.

Le tableau suivant liste les propriétés de pilote et leur signification :

Propriété Description
BufferKBSize Fournit la taille maximale du paquet qui peut être échangé entre le client et le serveur. La valeur en cours (32) est recommandée pour le protocole TCP/IP afin d'obtenir un temps de communication optimal.
CommunicationProtocol Accepte TCP/IP ou HTTP, selon le type de transport du serveur.
ConnectTimeout Fournit le temps de connexion attendu, en millisecondes. Le temps de connexion est défini comme l'intervalle entre l'instant où la communication est initiée et celui où le socket serveur est initialement ouvert.
DSAuthPassword Actuellement utilisé pour l'authentification HTTP. Un composant gestionnaire d'authentification, qui traitera cette valeur, doit être lié au serveur.
DSAuthUser Actuellement utilisé pour l'authentification HTTP. Un composant gestionnaire d'authentification, qui traitera cette valeur conjointement au mot de passe fourni, doit être lié au serveur. Nous recommandons que les deux champs soient tous les deux remplis ou vides.
HostName Nom de la machine (ou adresse IP) où le serveur s'exécute.
PassWord Mot de passe utilisateur de base de données dans le cas où le serveur doit ouvrir une connexion de base de données et y canaliser les demandes de base de données du client. Si aucune connexion serveur n'est requise, ne remplissez pas cette propriété.
Port Fournit la valeur du port où le serveur écoute les connexions DataSnap. La valeur doit correspondre à celle définie au niveau du composant transport sur le côté serveur.
ServerConnection Contient le nom de la connexion serveur qui fournira les informations d'identification pour une connexion de base de données à ouvrir par le serveur. Le serveur agira comme un proxy pour toutes les demandes client spécifiques aux bases de données. Exemple : DSAdmin.GetConnection("ASACONNECTION").
URLPath Correspond au contexte où le serveur basé sur le transport HTTP écoute les demandes.
UserName Fournit le nom d'utilisateur à utiliser pour la connexion serveur. Il est conseillé de laisser vide UserName si aucune connexion serveur n'est requise.
DelegateName Facultatif. Stocke le nom de la connexion déléguée.
DelegateConnection Facultatif. Stocke le nom du pilote délégué. Les pilotes délégués fournissent une couche supplémentaire entre l'application et le pilote réel. Ils sont utiles pour le pooling de connexion, le profilage de pilote, le traçage, l'audit, et ainsi de suite.


Remarques :
  • Il est important que la connexion se fasse dans un contexte qui permet aux filtres d'être instanciés si de tels filtres sont définis côté serveur. L'unité qui enregistre les filtres doit faire ceci avant la création d'une connexion filtrée.
  • Si le protocole HTTP doit être utilisé à l'exécution, l'unité DSHTTPLayer doit être ajoutée à la liste uses de l'application client.

Fermeture de TSQLConnection

Une fois que le module de données génère une connexion Datasnap, il crée un DBXConnection qui établit un tunnel entre le serveur DataSnap et le client. La fermeture de TSQLConnection ferme également le DBXConnection et rompt le tunnel. Ce tunnel ne sera pas réétabli si vous ouvrez à nouveau une connexion. C'est pourquoi, lorsque vous fermez TSQLConnection, vous devez libérer l'objet TServerMethodsClient afin de forcer la nouvelle création du tunnel. Voir l'extrait de code suivant :

DataModule2.SQLConnection1.Close;
DataModule2.ServerMethods1Client := nil;
Avertissement : Si vous ne libérez pas l'objet TServerMethodsClient lors de la fermeture de TSQLConnection et de l'ouverture d'une nouvelle connexion SQL, le projet va déclencher un TDBXError avec le message 'L'opération a échoué. La connexion a été fermée.'.

Instanciation de la classe de méthode proxy

La propriété DBXConnection de TSQLConnection peut être utilisé pour instancier la classe de méthode proxy. Des appels explicites peuvent être effectués pour les méthodes serveur basées sur des instances TSQLServerMethod, comme dans l'exemple suivant :

  procedure TForm1.Button8Click(Sender: TObject);
  var
    reader: TDataSet;
 
  begin
    SQLServerMethod:= TSQLServerMethod.Create(nil);
    SQLServerMethod.SQLConnection:= SQLConnection1;
 
    try
      SQLServerMethod.ServerMethodName:= 'TDSUtilityMethods.echoOutStr';
      SQLServerMethod.Params[0].AsString := '123';
      SQLServerMethod.ExecuteMethod;
      memOutput.Text := SQLServerMethod.Params[1].AsString;
    finally
      SQLServerMethod.Close;
      FreeAndNil(SQLServerMethod);
    end;
  end;

TDSRestConnection

Le composant TDSRestConnection peut être déposé depuis la palette d'outils dans une fiche, ou vous pouvez l'utiliser explicitement dans votre code. Désactivez la propriété de connexion Login Prompt (Invite de connexion) pour empêcher l'affichage d'une fenêtre de message d'authentification quand vous tentez d'établir la connexion à un serveur DataSnap.

Le tableau suivant liste les propriétés de connexion devant être changées lorsque vous créez une application Client DataSnap :

Propriété Description
Host Nom de la machine (ou adresse IP) où le serveur s'exécute.
Password Mot de passe utilisateur de base de données dans le cas où le serveur doit ouvrir une connexion de base de données et y canaliser les demandes de base de données du client. Si aucune connexion serveur n'est requise, ne remplissez pas cette propriété.
Port Fournit la valeur du port où le serveur écoute les connexions DataSnap. La valeur doit correspondre à celle définie au niveau du composant transport sur le côté serveur.
Protocol Accepte HTTP ou HTTPS, selon le type de transport du serveur.
UserName Fournit le nom d'utilisateur à utiliser pour la connexion serveur. Il est conseillé de laisser vide UserName si aucune connexion serveur n'est requise.

Remarque : Si le protocole HTTP doit être utilisé à l'exécution, l'unité DSHTTPLayer doit être ajoutée à la liste uses de l'application client.

REST

Des méthodes serveur spécifiques sont accessibles par le biais du protocole REST. Cela peut être accompli depuis des applications client web basées sur du code JavaScript, ou natif, en utilisant l'unité DSHTTP.

Voici un extrait de code d'une méthode native qui envoie une commande GET via le service serveur REST.

  procedure TForm1.SendGetRequest(var response: string; out responseCode: Integer);
  var
    http: TDSHTTP;
 
  begin
    http := TDSHTTP.Create;
 
    try
      response := http.Get(edtUri.Text);
    except
      response := http.ResponseText;
    end;
    responseCode := http.ResponseCode;
 
    http.Free;
  end;

Voir aussi