クライアントの DataSnap サーバーへの接続

提供: RAD Studio
移動先: 案内検索

DataSnap クライアント アプリケーション への移動


TSQLConnection

TSQLConnection コンポーネントは、[ツール パレット]からフォームにドロップすることもできますし、コード内で明示的に使用することもできます。 ドライバは DataSnap を使用する必要があります。 接続プロパティ Login Prompt を false に設定すると、DataSnap サーバに接続するときに認証メッセージのウィンドウが開かないようにすることができます。

ドライバのプロパティとその意味を以下の表に示します。

プロパティ 説明
BufferKBSize クライアントとサーバーの間で交換できるパケットの最大サイズです。TCP/IP ベースのプロトコルの場合、通信時間を最適化するには現在の 32 という値をお勧めします。
CommunicationProtocol サーバーのトランスポート タイプにより、TCP/IPHTTP のいずれかを受け付けます。
ConnectTimeout 予想される接続時間(ミリ秒単位)です。接続時間は、通信に着手してからサーバー ソケットが最初に開くまでの時間と定義されています。
DSAuthPassword 現在は HTTP 認証用に使われています。サーバーには認証マネージャ コンポーネントがリンクされるはずです。そのコンポーネントでこの値を使用します。
DSAuthUser 現在は HTTP 認証用に使われています。サーバーには認証マネージャ コンポーネントがリンクされるはずです。そのコンポーネントでこの値と渡されたパスワードとを使用します。この 2 つのフィールドは、両方を指定するか両方を指定しないかにすることをお勧めします。
HostName サーバーが稼働しているマシンの名前(または IP アドレス)です。
PassWord サーバーがデータベース接続を開き、その接続を通じてクライアントのデータベース要求を渡すことが見込まれる場合の、データベース ユーザー パスワードです。サーバー接続が必要でない場合は、このプロパティを指定しないでください。
Port サーバーが DataSnap 接続をリスンするポートの値です。この値は、サーバー側のトランスポート コンポーネントで定義されているものと一致する必要があります。
ServerConnection サーバー接続の名前を保持します。これは、サーバーがデータベース接続を開くときの資格情報となります。データベース固有のクライアント要求すべてに対して、サーバーはプロキシの役割を果たします。例: DSAdmin.GetConnection("ASACONNECTION")
URLPath HTTP トランスポートベースのサーバーが要求をリスンするコンテキストに一致します。
UserName サーバー接続に使用されるユーザー名です。サーバー接続が必要でない場合は、UserName を指定しないことをお勧めします。
DelegateName 省略可能。デリゲート接続の名前を格納します。
DelegateConnection 省略可能。デリゲート ドライバの名前を格納します。デリゲート ドライバは、アプリケーションと実際のドライバとの間の追加のレイヤになります。デリゲート ドライバは、接続プール、ドライバ プロファイリング、追跡、監査などに役立ちます。


メモ:
  • サーバー側で定義されているフィルタをインスタンス化できるコンテキストで、接続を行うことが重要です。 フィルタを登録するユニットは、フィルタ付き接続を作成する前にフィルタを登録しなければなりません。
  • 実行時に HTTP プロトコルを使用する場合は、クライアント アプリケーションの uses リストに DSHTTPLayer ユニットを追加する必要があります。

TSQLConnection のクローズ

データ モジュールが一度 Datasnap 接続を生成したら、DataSnap サーバークライアント間にトンネルを確立する DBXConnection を作成します。TSQLConnection をクローズすると、DBXConnection もまたクローズされ、トンネルも破壊されます。このトンネルは、接続が再びオープンされると、また確立されます。このため、TSQLConnection をクローズする際には、TServerMethodsClient オブジェクトを解放して、トンネルが再度構築されるようにしなければなりません。次のコード スニペットを参照してください。

DataModule2.SQLConnection1.Close;
DataModule2.ServerMethods1Client := nil;
警告:


TSQLConnection をクローズし、新しい SQL 接続をオープンした際に、TServerMethodsClient オブジェクトを解放すると、プロジェクトはメッセージ「オペレーションが失敗ました。接続が閉じられます」と共に、TDBXError を発生させます。

プロキシ メソッド クラスのインスタンス化

TSQLConnectionDBXConnection プロパティは、プロキシ メソッド クラスのインスタンス化のために使用できます。TSQLServerMethod インスタンスを使って、サーバー メソッドを明示的に呼び出すことができます。次の例を参照してください。

  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

TDSRestConnection コンポーネントは、[ツール パレット]からフォームにドロップすることもできますし、コード内で明示的に使用することもできます。接続プロパティ Login Prompt を false に設定すると、DataSnap サーバーに接続するときに認証メッセージのウィンドウが開かないようにすることができます。

DataSnap クライアント アプリケーションの作成時に変更する必要がある接続プロパティの一覧を次の表に示します。

プロパティ 説明
Host サーバーが稼働しているマシンの名前(または IP アドレス)です。
Password サーバーがデータベース接続を開き、その接続を通じてクライアントのデータベース要求を渡すことが見込まれる場合の、データベース ユーザー パスワードです。サーバー接続が必要でない場合は、このプロパティを指定しないでください。
Port サーバーが DataSnap 接続をリスンするポートの値です。この値は、サーバー側のトランスポート コンポーネントで定義されているものと一致する必要があります。
Protocol サーバーのトランスポートの種類に応じて、HTTPHTTPS のいずれかを使用できます。
UserName サーバー接続に使用されるユーザー名です。サーバー接続が必要でない場合は、UserName を指定しないことをお勧めします。

メモ: 実行時に HTTP プロトコルを使用する場合は、クライアント アプリケーションの uses リストに DSHTTPLayer ユニットを追加する必要があります。

REST

特定のサーバー メソッドには REST プロトコルを使ってアクセスすることができます。これは、JavaScript コードやネイティブ コードを使った Web ベースのクライアント アプリケーションで DSHTTP ユニットを使うことで実現できます。

次のコードは、REST サーバー サービス経由で GET コマンドを送信するネイティブ メソッドです。

  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;

関連項目