4DのビルトインWeb機能の概要
4th Dimensionと4D ServerにはWeb Serverエンジンが含まれており、4DデータベースをWeb上に公開することができます。4DのWeb Serverエンジンには次のような利点があります。
ダイレクトWebサービス
作成したアプリケーションは直接Web上に公開することができます。この際、データベースシステムやWebサイト、CGIインタフェースを開発する必要はありません。
オンラインかつ意識させないHTML変換
4Dでは特に意識しなくても、フォームやデザイン要素がオンラインでダイナミックにHTMLページへ変換されます。これらの新しいHTMLページはすぐさまWebブラウザで見ることができます。今日、大部分のWebデータベースシステムはCGIベース、またはスタティック(静的)なHTMLベースのシステムです。
CGIシステムでは大抵、データベースとWebサイト、そしてCGIを開発する必要があります。スタティックなHTMLベースのシステムでは、データベースのデザイン要素を修正するたびに、変更をHTMLに反映するためのユーティリティプログラムが必要です。両ケースとも、Web要素はオフラインで作成され、データベースまたはWeb開発者による手動での介入が必要です。4th Dimensionでは、デザイン要素をいつでも好きなだけ修正できます。デザインモードで変更を保存すると、変更項目はWebブラウザからダイナミックに利用できるようになります。この結果、アプリケーションの開発やテストを行いながら、現在接続しているWebブラウザで即座に結果を調べられます。
レコードやデータへのダイナミックアクセス
4DではWebブラウザを4Dデータベースエンジンの標準クライアントとして取り扱います。たとえば、ローカルな4Dデータベースや4D Serverのクライアントワークステーションからレコードが修正されると、修正されたレコードは即座にWebブラウザで利用することができます。HTML用にレコードを再加工する必要はありません。
ACIやACIパートナーによる4Dのコネクティビティプラグインを利用すると、SQLデータベースや従来のシステムのデータを選択、追加、更新、削除することが可能になります。パワフルな4Dの機能により、Webブラウザの機能性も向上します。
セッション管理とデータベースコンテキスト
WebブラウザではWebページをランダムに見ることができます。つまり、あるページから別のページへ、あるWebサイトから別のサイトへと移ることができるのです。クライアント/サーバデータベースでWebブラウザを利用する場合には、ブラウザ側ではデータベースのトランザクション論理に準じる必要があります。たとえば、レコードを追加している場合、そのレコード登録は確定されるか、またはキャンセルされなくてはなりません。ユーザがブラウザをナビゲートしてレコードから抜けたり、レコードを不確かな状態にしたままにしてはなりません。4DのWeb Serverエンジンには、セッションとデータベースコンテキスト管理機能が組み込まれています。WebページのURL全体で、4DはユニークなコンテキストID番号およびサブコンテキストID番号を保持しており、ブラウザで現在表示されているWebページと4Dデータベースコンテキストとの間で完全な同期がとられます。複雑なURLや隠しフォームフィールドなど、Webユーザの動作を追跡するための面倒くさい作業は不要です。
意識させないマルチユーザ管理とトランザクション管理
Webブラウザが4Dのクライアントになる場合、完全なデータベースクライアントとして取り扱われます。たとえば、Webブラウザ上でレコード修正を始めると、4Dによりそのレコードはロックされ、他のクライアントからは修正できなくなります。データ入力の確定またはキャンセルを行うと、自動的にレコードロックが解除されます。さらに、4Dではトランザクションのもとでデータ登録を行えます。Webユーザにとっても4Dのビルトイントランザクション管理機能は便利です。データ操作中にエラーが発生すると、4Dのロールバック管理システムにより、変更は自動的にキャンセルされます。
Webプロセス管理
4Dには複数のプロセスがあり、Webクライアント/サーバアーキテクチャを処理しています。メインとなるビルトインWeb ServerプロセスはWeb接続を処理します。Webブラウザがデータベースへのアクセスを許可されると、新しいプロセスが4Dにより自動作成され、そのプロセスでWeb接続が実行されます。完全に統合された4Dのマルチタスクアーキテクチャのもとでは、通常のクライアントや4D Webクライアントからクエリーなどのデータベースへの問い合わせを同時に実行できます。クエリーはデータベースエンジンにより並行処理されます。また、特定のWebクライアントからの問い合わせが他のプロセスを邪魔するようなことはありません。
最適化されたWeb Serverアーキテクチャ
4D Web Serverエンジンは4Dデータベースエンジンと同様の機能を備えています。たとえば、一連のレコード値を配列にロードする場合、処理はWebサーバマシン上でローカルに行われます。問い合わせ元であるWebクライアントには結果が送られます。
さらに、Webサーバ側でWeb接続はフル機能を備えた通常の4Dプロセスとして扱われるため、あらゆる4Dアルゴリズムを実行することができます。Webサーバ上でローカルに処理が実行され、結果だけがWebブラウザに送られます。たとえば、リレートやセットを含むクエリーを実行することができ、統計的な計算結果だけがWebブラウザへ返されます。Webエキスパート同様に、複雑なWebデータベースシステムを構築可能で、4Dアプリケーションをコンパイルすることもできます。
HTMLとJavaScriptのカプセル化
データベースをWebに公開するための作業の大部分は4Dが行いますが、4D開発をカスタマイズするためにHTMLとJavaScriptコードをカプセル化することができます。たとえば、デ−タベース/Webサイトのホームページの機能を高めて、人目を引くようなHTMLページにしたい場合などです。
カスタムなHTMLページを作り、SEND HTML FILEコマンドを使ってページをWebに送ります。4Dのフォーム内でHTMLをカプセル化することも可能です。ブラウザ側からみると、4DとHTMLオブジェクトは完全に一体化しています。カプセル化されたHTML
内で、各動作やデータ制御をクライアントのWebブラウザ側で実行するJavaScriptコードをインプリメントすることができ、リクエストをサーバに送り返す必要はありません。
HTMLと4Dオブジェクト間のバインド
4D開発においてカプセル化したHTMLコードを利用する場合、HTMLオブジェクトに入力されたデータや値を4D側に取り込みたいことがあります。複雑なHTML解析用ルーチンを作成する代わりに、4DにはHTMLオブジェクトと4D変数をバインドするシンプルなビルトイン機能があります。バインド設定は、オブジェクト同士に同じ名前を付けるだけです。この結果、HTMLのリクエストへの応答や分析を実現しやすくなります。ある4D変数にWebブラウザから返されるデータが自動的に納められる場合、この変数に関連するコードを作成するだけです。