Connexion du client au serveur DataSnap
Remonter à Application Client DataSnap
Sommaire
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
- Génération de proxies de méthodes serveur DataSnap
- Contrôles Serveur DataSnap
- Création d'un serveur DataSnap
- Expert Serveur DataSnap