OpenLaszloアドバンスド・テクニック(2) Page 1/3
Webアプリと連携するためのコーディング基礎
ネットエイト小野 圭二
2006/5/9
次期バージョン(StarAnise)でFlashとAjaxの両対応を決めたオープンソース・リッチクライアント製品のOpenLaszlo。本連載では業務アプリケーションを意識したリッチクライアントの開発テクニックを紹介する。(編集部)
■はじめに
OpenLaszloとサーバサイドプログラムの連携を知ることは、サーバへの導入に際して不可欠なものです。CGIやServletを作っているプログラマなら、「サーバサイドプログラムへのアクセスさえ分かればこっちのもの」という人も多いのではないでしょうか。OpenLaszloはサーバサイドのプログラマにFlashコンテンツ作成の手段を与えるものですから、アクセス方法さえ分かればOpenLaszloへの親近感もグッとわくことでしょう。今回はそんな方に向けた内容です。
本題に入る前に、2006年4月10日にOpenLaszlo 3.2向けのEclipseプラグイン「IDE4Laszlo」がリリースされましたので、こちらの環境に更新しておきましょう。インストール方法は前回を参照してください。今回からは最新のプラグインをインストールしたEclipseとOpenLaszlo 3.2を使って解説していきます。
■OpenLaszloの配備方法
OpenLaszloには、「プロキシ(Proxy)モード」と「ソロ(SOLO)モード」の2つの配備方式があります。
プロキシモード
プロキシモードとはLZXアプリケーションをTomcatのようなサーブレットコンテナ上で動かすものです。図1においてLZXアプリケーションは「サーブレットコンテナ/アプリケーションサーバ」に配置されます。
図1 OpenLaszloのアーキテクチャ |
プロキシモードでは、LZXアプリケーションは初めてアクセスされた時点でサーバ上で実行形式(SWF)にコンパイルされ、「Laszloプレゼンテーションサーバ」のキャッシュに格納されます(図2参照)。
図2 Laszloプレゼンテーションサーバのアーキテクチャ |
以降、このキャッシュからクライアントにLZXアプリケーションが渡されます。JSPプログラムと同様の仕組みと考えて結構です。利点としては、LZXアプリケーションをサーバ上で変更すると、すぐに反映されることがあります。また、以下の機能を使用する場合は「Laszloプレゼンテーションサーバ」が必要となるので、プロキシモードでの運用となります。
- SWF、JPG、MP3以外のメディアタイプを使用する場合
- 永続コネクションを使用する場合
- SOAP/RPCを使用する場合
- XMLリクエスト内のHTTPレスポンスヘッダを使用する場合
ソロモード
ソロモードは、LZXファイルをあらかじめSWFファイルにコンパイルし、このSWFファイルをHTTPサーバに配備することで、まるでFlashコンテンツと同じように扱うことができるものです。ソロモードでは前述の図1において、SWFファイルを「Webサーバ」のドキュメントルートに配備するだけでよく「サーブレットコンテナ/アプリケーションサーバ」は必要ありません。クライアント/サーバ間の通信をPHPやPerlのようなCGIを使ってPOST/GETで行う場合は、サーブレットコンテナは必要ないのでソロモードでの運用でいいでしょう。ただし、上記のリストに挙げた4つの機能(永続コネクションなど)はソロモードでは使用できませんので注意してください。
Eclipseでは、LZXアプリケーションをブラウザで実行すると、そのプロジェクトの「bin」ディレクトリに実行形式(SWF)ファイルが作成されます。このパス指定は、Script Explorer画面のプロジェクト上で右クリックして「プロパティー」→「Laszlo options」→「Directories Output folder」で変更できます。
■サーバ連携で取り扱うデータ形式
OpenLaszloではクライアント/サーバ間のデータ通信はXML形式で行われます。このデータはOpenLaszloアプリケーションの<dataset>タグに指定される「名前」に格納され、アプリケーションで使用されます。例えば、リスト1のようなXMLデータがサーバサイドプログラムのservertest.jspからクライアントに渡されるとします。
<resultset> |
リスト1 サーバサイドプログラムから渡されるXMLデータ |
これをLZXアプリケーションで受けるには、<dataset>タグを使用してリスト2のように記述します。
<dataset name="serverdata" |
リスト2 LZXアプリケーションでXMLデータを受け取る |
この宣言により、LZXアプリケーション内でservertest.jspを呼び出すと、サーバから送信されたXMLデータは「serverdata」オブジェクトに格納され、以降このオブジェクトを使ってデータにアクセスできます。アプリケーションの起動とともに自動的にservertest.jspからデータを取得するには「request」アトリビュートを使用してリスト3のように宣言します。
<dataset name="serverdata" |
リスト3 「request」アトリビュートを使用したXMLデータの受信 |
これで分かるとおり、OpenLaszloを使用した場合、従来サーバサイドプログラムが出力していた画面フレームとデータの代わりに、XMLデータを出力するだけになるので、既存のサーバサイドプログラムもビジネスロジックはそのままに、クライアントへの出力部分をXMLデータ化すればそのまま使えます。これは既存のサーバサイドプログラムのソース行数を大幅に減らすことになり、メンテナンス性も向上するはずです。なお、XMLデータ形式の詳細については下記の@IT記事などを参照してください。
1/3 |
INDEX |
||
OpenLaszloアドバンスド・テクニック(2) Webアプリと連携するためのコーディング基礎 |
||
Page1 はじめに Openlaszloの配備方法 サーバ連携で取り扱うデータ形式 |
||
Page2 LZXアプリケーションからサーバへのデータ送信方法 サーバからのデータの受け方 |
||
Page3 データのバインド例 |
- GASで棒、円、折れ線など各種グラフを作成、変更、削除するための基本 (2017/7/12)
資料を作る際に、「グラフ」は必要不可欠な存在だ。今回は、「グラフの新規作成」「グラフの変更」「グラフの削除」について解説する - GET/POSTでフォームから送信された値をPHPで受け取る「定義済みの変数」【更新】 (2017/7/10)
HTMLのフォーム機能についておさらいし、get/postメソッドなどの内容を連想配列で格納するPHPの「定義済みの変数」の中身や、フォーム送信値の取り扱いにおける注意点について解説します【PHP 7.1含め2017年の情報に合うように更新】 - PHPのfor文&ループ脱出のbreak/スキップのcontinue【更新】 (2017/6/26)
素数判定のロジックからbreak文やcontinue文の利点と使い方を解説。for文を使ったループ処理の基本とwhile文との違い、無限ループなども併せて紹介します【PHP 7.1含め2017年の情報に合うように更新】 - Spreadsheetデータの選択、削除、挿入、コピー、移動、ソート (2017/6/12)
Spreadsheetデータの選択、挿入、削除、コピー、移動、ソートに使うメソッドの使い方などを解説する
|
|