TRemoteDataModule の構成

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

多層アプリケーションの作成:インデックス への移動

TRemoteDataModule コンポーネントをアプリケーションに追加するには、ファイル > 新規作成 > その他... を選択し、[新規項目]ダイアログの[多層サポート] ページで[リモート データ モジュール]を選択します。[リモート データ モジュール ウィザード]が表示されます。

リモート データ モジュールのクラス名を指定しなければなりません。 これは、アプリケーションで作成する TRemoteDataModule の下位クラス名の土台となるものです。 また、そのクラスのインターフェイスの名前の土台にもなります。 たとえば、クラス名を MyDataServer と指定すると、ウィザードでは、新しいユニットを作成して、そこで TRemoteDataModule の下位クラスである TMyDataServer を宣言し、そのクラスで IAppServer の下位インターフェイスである IMyDataServer を実装します。

メモ: 新しく作成されるインターフェイスには、独自のプロパティやメソッドを追加することができます。 さらなる情報については、「アプリケーション サーバーのインターフェイスを拡張する」を参照してください。

[リモート データ モジュール ウィザード]では、スレッド モデルを指定しなければなりません。 [シングルスレッド モデル]、[アパートメントスレッド モデル]、[フリースレッド モデル]、もしくは[フリー/アパートメント両用]、[ニュートラル]から選択することができます。

  • シングルスレッドを選択した場合、COM は、一度に 1 つのクライアント リクエストだけを処理するようにします。クライアント要求の相互干渉を気にする必要がありません。
  • アパートメントスレッドを選択した場合、COM は、リモート データ モジュールのどのインスタンスも、一度に 1 つのリクエストだけを処理するようにします。アパートメントスレッド ライブラリでコーディングする場合、グローバル変数や、リモート データ モジュール内にないオブジェクトをするなら、スレッドの衝突に対する対策を考えなければなりません。これは、BDE 対応データセットを使用する場合に推奨されるモデルです。(AutoSessionName プロパティが True に設定されているセッション コンポーネントで、BDE 対応データセットについてのスレッド問題を処理する必要がある点に、注意してください)。
  • フリースレッドを選択した場合、アプリケーションは複数のスレッド上で、クライアント リクエストを同時に受信することができます。アプリケーションがスレッドセーフに動作するようにするのは、開発者の役目です。複数のクライアントがリモート データ モジュールに同時にアクセスできるため、グローバル変数と同様、インスタンス データ(プロパティ、保有するオブジェクトなど)を保護しなければなりません。これは、ADO データセットを使用する場合に推奨されるモデルです。
  • 両用を選択した場合、ライブラリはフリースレッドを選択した際と同じように動作しますが、1 点だけ例外があります: すべてのコールバック(クライアント インターフェイスへの呼び出し)は、シリアライズされます。
  • ニュートラルを選択した場合、フリースレッド モデルと同様、リモート データ モジュールは、複数の呼び出しを複数のスレッド上で同時に受信することができますが、COM が、2 つのスレッドが同じメソッドに同時にアクセスすることがないよう、保証してくれます。

.EXE を作成する場合も、どのタイプのインスタンス化を使用するか、指定しなければなりません。[シングル インスタンス]または[マルチ インスタンス]を選択することができます([内部インスタンス]は、クライアント コードが同じプロセス空間の一部である場合にのみ、適用されます)。

  • [シングル インスタンス]を選択した場合、各クライアント接続は、実行可能ファイルのインスタンスをそれぞれ起動します。そのプロセスが、リモート データ モジュールの 1 つのインスタンスをインスタンス化し、これが、そのクライアント接続専用となります。
  • [マルチ インスタンス]を選択した場合、アプリケーション(プロセス)の単一のインスタンスが、クライアントのためにすべてのリモート データ モジュールのインスタンスを生成する。 各リモートデータモジュールは、1 つのクライアント接続専用になりますが、すべて同じプロセス空間を共有します。

関連項目