Webサーバーオブジェクト
4Dプロジェクトは、メイン (ホスト) アプリケーションおよび、ホストされた各コンポーネントの Webサーバーを起動して監視することができます。
たとえば、メインアプリケーションに 2つのコンポーネントをインストールしている場合、アプリケーションから最大 3つの独立した Webサーバーを起動して監視することができます:
- ホストアプリケーションの Webサーバーを1つ
- コンポーネント#1 の Webサーバーを1つ
- コンポーネント#2 の Webサーバーを1つ
1つの 4Dアプリケーションプロジェクトに接続できるコンポーネントの数、つまり Webサーバーの数には、メモリ以外の制限はありません。
メインアプリケーションの Webサーバーを含む、各 4D Webサーバーは、4D.WebServer
クラスの オブジェクト として公開されます。 インスタンス化された Webサーバーオブジェクトは、多数のプロパティや関数 を使用して、カレントのアプリケーションまたは任意のコンポーネントから操作することができます。
4Dランゲージの従来の WEBコマンド はサポートされていますが、その対象となる Webサーバーを選択するこ とはできません (後述参照)。
各 Webサーバー (ホストアプリケーションまたはコンポーネント) は、個別のコンテキストで使用できます。これには、以下が含まれます:
On Web Authentication
およびOn Web Connection
データベースメソッドの呼び出し- 4Dタグの処理とメソッドの呼び出し
- Webセッションや TLSプロトコルの管理
これにより、独自の Webインターフェースを備えた独立したコンポーネントや機能を開発することができます。
Webサーバーオブジェクトのインスタンス化
ホストアプリケーション (デフォルトWebサーバー) の Webサーバーオブジェクトは、4D 起動時に自動的に読み込まれます。 したがって、新規作成したプロジェクトに次のように書いた場合:
$nbSrv:=WEB Server list.length
//$nbSrv の値は 1
Webサーバーオブジェクトをインスタンス化するには、WEB Server
コマンドを呼び出します。
// 4D.WebServer クラスのオブジェクト変数を作成します。
var webServer : 4D.WebServer
// カレントコンテキストから Webサーバーを呼び出します
webServer:=WEB Server
// 以下と同じです
webServer:=WEB Server(Web server database)
アプリケーションがコンポーネントを使用している場合に:
- コンポーネントからホストアプリケーションの Webサーバーを呼び出す場合や
- リクエストを受け取ったサーバー (どのサーバーでも) を呼び出す場合
次を使うこともできます:
var webServer : 4D.WebServer
// コンポーネントからホストの Webサーバーを呼び出す
webServer:=WEB Server(Web server host database)
// ターゲットの Webサーバーを呼び出す
webServer:=WEB Server(Web server receiving request)