Verbinden des Clients mit dem DataSnap-Server
Nach oben zu DataSnap-Client-Anwendung
Inhaltsverzeichnis
TSQLConnection
Die Komponente TSQLConnection kann aus der Tool-Palette auf ein Formular gezogen werden, oder Sie können sie explizit in Ihrem Quelltext angeben. Als Treiber muss DataSnap verwendet werden. Deaktivieren Sie die Verbindungseigenschaft Anmeldeaufforderung, damit kein Authentifizierungsfenster angezeigt wird, wenn Sie die Verbindung zu einem DataSnap-Server herzustellen versuchen.
Die folgende Tabelle enthält die Treibereigenschaften und ihre Bedeutung:
Eigenschaft | Beschreibung |
---|---|
BufferKBSize | Gibt die maximale Größe des Pakets an, das zwischen dem Client und den Server ausgetauscht werden kann. Der aktuelle Wert 32 wird für das TCP/IP-basierte Protokoll für eine optimale Kommunikation empfohlen. |
CommunicationProtocol | Akzeptiert abhängig vom Transporttyp des Servers TCP/IP oder HTTP. |
ConnectTimeout | Gibt die erwartete Verbindungszeit in Millisekunden an. Die Verbindungszeit ist als Intervall zwischen der Initiierung der Kommunikation und dem ersten Öffnen des Server-Sockets definiert. |
DSAuthPassword | Wird aktuell für die HTTP-Authentifizierung verwendet. Der Server sollte über eine verknüpfte Authentifizierungsmanagerkomponente verfügen, die diesen Wert verarbeitet. |
DSAuthUser | Wird aktuell für die HTTP-Authentifizierung verwendet. Der Server sollte über eine verknüpfte Authentifizierungsmanagerkomponente verfügen, die diesen Wert zusammen mit dem angegebenen Passwort verarbeitet. Es wird empfohlen, entweder beide oder keines der Felder auszufüllen. |
HostName | Name des Computers (oder IP-Adresse), auf dem der Server ausgeführt wird. |
PassWord | Benutzerpasswort für die Datenbank für den Fall, dass der Server eine Datenbankverbindung öffnen und Datenbankanforderungen des Clients über diese Verbindung leiten muss. Wenn keine Serververbindung erforderlich ist, belassen Sie diese Eigenschaft leer. |
Port | Gibt den Wert für den Port an, über den der Server DataSnap-Verbindungen empfängt. Der Wert sollte mit dem für die Transportkomponente auf der Serverseite definierten übereinstimmen. |
ServerConnection | Enthält den Namen der Serververbindung, die die Anmeldeinformationen für eine vom Server zu öffnende Datenbankverbindung bereitstellt. Der Server dient als Proxy für alle datenbankspezifischen Client-Anforderungen. Beispiel: DSAdmin.GetConnection("ASACONNECTION"). |
URLPath | Entspricht dem Kontext, in dem der HTTP-Transport-basierte Server Anforderungen empfängt. |
UserName | Gibt den Benutzernamen an, der für die Serververbindung verwendet werden soll. UserName sollte leer sein, wenn keine Serververbindung erforderlich ist. |
DelegateName | Optional. Speichert den Namen der Delegatverbindung. |
DelegateConnection | Optional. Speichert den Namen des Delegattreibers. Delegattreiber stellen eine zusätzliche Schicht zwischen der Anwendung und dem eigentlichen Treiber bereit. Sie sind beim Verbindungs-Pooling, beim Erstellen von Treiberprofilen, bei der Ablaufverfolgung, beim Auditing usw. hilfreich. |
- Hinweise:
- Es ist wichtig, dass die Verbindung in einem Kontext ausgeführt wird, der das Instantiieren von Filtern ermöglicht, sofern Filter auf der Serverseite definiert sind. Die Registrierung der Filter muss von der entsprechenden Unit vor dem Erstellen einer gefilterten Verbindung vorgenommen werden.
-
- Wenn das HTTP-Protokoll zur Laufzeit verwendet werden soll, muss die Unit DSHTTPLayer der uses-Liste in der Client-Anwendung hinzugefügt werden.
Schließen der TSQLConnection
Sobald das Datenmodul eine Datasnap-Verbindung erzeugt, erstellt es ebenso eine DBXConnection, die einen Tunnel zwischen DataSnap-Server und Client einrichtet. Wenn Sie die TSQLConnection unterbrechen, schließt dies ebenso die DBXConnection und mit sich den Tunnel. Dieser Tunnel wird selbst bei erneutem Öffnen einer Verbindung nicht wieder eingerichtet. Deshalb sollten Sie beim Schließen von TSQLConnection das TServerMethodsClient
-Objekt freigeben, um eine erneute Erstellung des Tunnels zu erzwingen. Das folgende Codefragment dient zur Veranschaulichung:
DataModule2.SQLConnection1.Close;
DataModule2.ServerMethods1Client := nil;
- Warnung: Wenn Sie das
TServerMethodsClient
-Objekt beim Schließen von TSQLConnection nicht freigeben und danach eine SQL-Verbindung öffnen, löst das Projekt einen Fehler TDBXError mit der Meldung'Operation failed. Connection was Closed'
aus.
Instantiieren der Proxy-Methodenklasse
Mit der Eigenschaft DBXConnection von TSQLConnection kann die Proxy-Methodenklasse instantiiert werden. Explizite Aufrufe von Servermethoden können auf der Grundlage von TSQLServerMethod-Instanzen, wie im folgenden Beispiel, ausgeführt werden:
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
Die Komponente TDSRestConnection kann aus der Tool-Palette auf ein Formular gezogen werden, oder Sie können sie explizit in Ihrem Quelltext angeben. Deaktivieren Sie die Verbindungseigenschaft Anmeldeaufforderung, damit kein Authentifizierungsfenster angezeigt wird, wenn Sie die Verbindung zu einem DataSnap-Server herzustellen versuchen.
Die folgende Tabelle enthält die Verbindungseigenschaften, die für das Erstellen einer DataSnap-Client-Anwendung geändert werden müssen:
Eigenschaft | Beschreibung |
---|---|
Host | Name des Computers (oder IP-Adresse), auf dem der Server ausgeführt wird. |
Password | Benutzerpasswort für die Datenbank für den Fall, dass der Server eine Datenbankverbindung öffnen und Datenbankanforderungen des Clients über diese Verbindung leiten muss. Wenn keine Serververbindung erforderlich ist, belassen Sie diese Eigenschaft leer. |
Port | Gibt den Wert für den Port an, über den der Server DataSnap-Verbindungen empfängt. Der Wert sollte mit dem für die Transportkomponente auf der Serverseite definierten übereinstimmen. |
Protocol | Akzeptiert abhängig vom Transporttyp des Servers HTTP oder HTTPS. |
UserName | Gibt den Benutzernamen an, der für die Serververbindung verwendet werden soll. UserName sollte leer sein, wenn keine Serververbindung erforderlich ist. |
Hinweis: Wenn das HTTP-Protokoll zur Laufzeit verwendet werden soll, muss die Unit DSHTTPLayer der uses-Liste in der Client-Anwendung hinzugefügt werden.
REST
Auf spezifische Servermethoden kann über das Protokoll REST zugegriffen werden. Dies kann aus webbasierten Client-Anwendungen mit JavaScript-Code oder nativ über die Unit DSHTTP erreicht werden.
Das folgende Codefragment einer nativen Methode sendet einen GET-Befehl über den REST-Serverdienst.
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;