アプリケーション サーバーの構造
アプリケーション サーバーをセットアップして実行しても、クライアント アプリケーションとの接続が確立されるわけではありません。 そうではなく、クライアント アプリケーション側で接続を開始し、維持します。 クライアント アプリケーションは、接続コンポーネントを使ってアプリケーション サーバーに接続し、アプリケーション サーバーのインターフェイスを使って選択したプロバイダと通信します。 これらは、受信した要求を管理したりインターフェイスを提供するコードを書かなくても、すべて自動的に行われます。
DataSnap は、TCP ベース(TDSTCPServerTransport)または HTTP(TDSHTTPService)トランスポート プロトコルを使用し、インターネット、ローカル ネットワーク、ローカル ホストのいずれかによって通信を行う、多層クライアントサーバー型アプリケーションを作成するための汎用技術です。 DataSnap サーバーの構造の詳細は、「DataSnap サーバーの作成」および「サーバー アプリケーションを作成する」を参照してください。
アプリケーション サーバーの基本は、リモート データ モジュール、つまり IAppServer インターフェイスをサポートする専用のデータ モジュールです(Web サービスとしても機能するアプリケーション サーバーの場合、リモート データ モジュールは IAppServerSOAP インターフェイスもサポートし、それを IAppServer よりも優先して使用します)。 クライアント アプリケーションは、リモート データ モジュールのインターフェイスを使用して、アプリケーション サーバー上のプロバイダと通信します。 リモート データ モジュールが IAppServerSOAP を使用している場合には、接続コンポーネントによって、クライアント データセットが使用できる IAppServer インターフェイスに適合させられます。
リモート データ モジュールには次の 4 種類があります。
- TDSServerModule: DataSnap サーバー用のリモート データ モジュールです。 サーバーからクライアントに、データセット、メソッド、SQL 接続、共有プロバイダを公開するには、このリモート データ モジュールを使用します。
- TRemoteDataModule: デュアル インターフェイスのオートメーション サーバーです。 クライアントで DCOM、HTTP、ソケット、または OLE を使用してアプリケーション サーバーに接続する場合には、このリモート データ モジュールを使用します。ただし、COM+ を使用するようにアプリケーション サーバーをインストールする場合は例外です。
- TMTSDataModule: デュアル インターフェイスのオートメーション サーバーです。 COM+(または MTS)を使用するようにインストールされるアクティブ ライブラリ(.DLL)としてアプリケーション サーバーを作成する場合には、このリモート データ モジュールを使用します。 MTS リモート データ モジュールは、DCOM、HTTP、ソケット、または OLE と一緒に使用することができます。 アプリケーション サーバーで MTS または COM+ を使用する場合の利点と制限については、「トランザクション データ モジュールを使用する」を参照してください。
- TSoapDataModule: Web サービス アプリケーション内で IAppServerSOAP インターフェイスを実装するデータ モジュールです。 Web サービスとしてデータにアクセスするクライアントにデータを提供するには、このリモート データ モジュールを使用します。
メモ: COM+(または MTS)下にアプリケーション サーバーを配置する場合には、アプリケーション サーバーがアクティブまたは非アクティブになったときに発生するイベントが、リモート データ モジュールに含められます。 これにより、アクティブになればデータベース接続を取得し、非アクティブになれば解放することが可能になります。
データ モジュールの内容
どのようなデータ モジュールでも同じですが、リモート データ モジュールには任意の非ビジュアル コンポーネントを含めることができます。 ただし、以下のように、必ず含めなければならないコンポーネントもあります。
- データベース サーバーから取り出した情報をリモート データ モジュールで公開する場合には、そのデータベース サーバーのレコードを表すデータセット コンポーネント。 データセットがデータベース サーバーとやり取りできるようにするには、いずれかの種類のデータベース接続コンポーネントなど、別のコンポーネントが必要になる可能性もあります。
- リモート データ モジュールがクライアントに対して公開するデータセットそれぞれについて、リモート データ モジュールにデータセット プロバイダを 1 つ含める必要があります。 データセット プロバイダは、クライアント データセットに送信するためのデータ パケットにデータをまとめ、クライアント データセットから受け取った更新をソース データセットまたはデータベース サーバーに適用します。
- 各 XML ドキュメントの XML プロバイダで、リモート データ モジュールがクライアントにこれを公開します。 XML プロバイダの働きはデータセット プロバイダと似ていますが、データの取得や更新の適用を行う対象がデータベース サーバーではなく XML ドキュメントである点が異なります。
DataSnap アーキテクチャで使われるサーバー メソッドを使って、中間層の一部となるメソッドを開発することができます。 これらのメソッドはクライアントからシームレスに使用することができ、クライアントのバイナリ内でコードを実行している場合とまったく同じように呼び出すことができます。 サーバー メソッドを使用するには、[サーバー メソッド クラス]オプションを、DataSnap サーバー ウィザードで選択します。
(クライアントが呼び出した)サーバー メソッドの実行中に、サーバーからコールバック関数を呼び出すことができます。このコールバック関数は、DataSnap クライアントからサーバー メソッドに引数として渡されたものです。 コールバックの使い方については、「コールバックの利用」のページを参照してください。
メモ: データセットをデータベース サーバーに接続するデータベース接続コンポーネントと、多層アプリケーションでクライアント アプリケーションが使用する接続コンポーネントとを、混同しないでください。 多層アプリケーションの接続コンポーネントは、[ツール パレット]の[DataSnap]カテゴリまたは[WebServices]カテゴリに含まれています。