Verbinden des Clients mit dem DataSnap-Server

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu DataSnap-Client-Anwendung


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;

Siehe auch