3 層アプリケーションの概要
次の手順で、プロバイダベースの 3 層アプリケーションで通常発生する処理の流れを説明します:
- ユーザーがクライアント アプリケーションを起動します。クライアントはアプリケーション サーバー(設計時または実行時に指定可能)に接続します。アプリケーション サーバーが実行中でない場合、起動します。クライアントは、アプリケーション サーバーと通信するのに必要な IAppServer インターフェイスを受け取ります。
- クライアントがアプリケーション サーバーのデータを要求します。クライアントは、1 度にすべてのデータを要求する場合もありますが、セッションを通じてチャンク形式でデータを要求(必要に応じて取得)する場合もあります。
- アプリケーション サーバーは、(必要な場合ははじめにデータベース接続を確立して)データを取得し、クライアント用にパッケージ化して、クライアントにデータ パケットを返します。追加情報(フィールドの表示特性など)を、データ パケットのメタデータに設定することができます。データをデータ パケットにパッケージ化するプロセスを "プロバイドする" といいます。
- クライアントがデータ パケットをデコードして、ユーザーにデータを表示します。
- ユーザーがクライアント アプリケーションで作業すると、データが更新されます(レコードの追加、削除、または変更)。 これらの変更は、クライアントによって変更ログに保存されます。
- 最終的に、クライアントはこれらの更新を(通常はユーザー アクションへの応答として)アプリケーション サーバーに適用します。更新を適用するために、クライアントは変更ログをパッケージ化して、データ パケットとしてサーバーに送信します。
- アプリケーション サーバーはこのパッケージをデコードして、(トランザクションの範囲内で適切な場合に)更新を登録します。レコードを登録できない場合(たとえば、クライアントがレコードを要求した後や、クライアントがレコードの更新を適用する前に、他のアプリケーションがそのレコードを変更した場合)、アプリケーション サーバーはクライアントの変更を現在のデータで調停しようとするか、登録できなかったレコードを保存します。 レコードを登録したり問題のあるレコードをキャッシュするプロセスを、"解決する" といいます。
- アプリケーション サーバーで解決プロセスが完了したときに登録されなかったレコードがある場合、別の方法で解決するために、アプリケーション サーバーはクライアントにそのレコードを返します。
- クライアントは、未解決のレコードを調停します。クライアントが未解決のレコードを調停する方法は、さまざまです。通常クライアントは、レコードの登録を妨げる状況を修正しようとするか、変更を破棄します。 エラーが発生した状況を修正できた場合、クライアントは再度更新を適用します。
- クライアントはサーバーのデータをリフレッシュします。
DataSnap を使用して 3 層アプリケーションを作成する
DataSnap を使用すると、インターネット、ローカル ネットワーク、またはローカル ホストを介して通信するクライアント/サーバー アプリケーションを作成できます。 DataSnap では、サーバー メソッドのプロトタイプを含め、クライアントがサーバーと通信するのに必要なインターフェイスが自動的に生成されます。DataSnap 技術で開発された 3 層アプリケーションを使用すると、クライアント ユーザーはすべてのサーバー メソッドを呼び出すことができます。
DataSnap を使ってアプリケーションを作成する方法の例については、次のページを参照してください:
多層 DataSnap アプリケーションを配置する
DataSnap には、Delphi アプリケーションに対する多層データベース機能があり、クライアント アプリケーションによるアプリケーション サーバーのプロバイダへの接続を実現します。
アプリケーションと共に再配布が必要なファイルの詳細については、DEPLOY ドキュメント(Delphi のメイン ディレクトリにあります)を参照してください。 再配布できる DataSnap ファイルの種類やその方法の関連情報については、REMOTE ドキュメントも参照してください。