OpenLaszloアドバンスド・テクニック
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>
  <result state="ok" data1="データ1"/>
  <result state="ok" data1="データ2"/>
</resultset>
リスト1 サーバサイドプログラムから渡されるXMLデータ

 これをLZXアプリケーションで受けるには、<dataset>タグを使用してリスト2のように記述します。

<dataset name="serverdata"
         src="http://<server>/servertest.jsp"/>
リスト2 LZXアプリケーションでXMLデータを受け取る

 この宣言により、LZXアプリケーション内でservertest.jspを呼び出すと、サーバから送信されたXMLデータは「serverdata」オブジェクトに格納され、以降このオブジェクトを使ってデータにアクセスできます。アプリケーションの起動とともに自動的にservertest.jspからデータを取得するには「request」アトリビュートを使用してリスト3のように宣言します。

<dataset name="serverdata"
         src="http://<server>/servertest.jsp"
         request="true"/>
リスト3 「request」アトリビュートを使用したXMLデータの受信

 これで分かるとおり、OpenLaszloを使用した場合、従来サーバサイドプログラムが出力していた画面フレームとデータの代わりに、XMLデータを出力するだけになるので、既存のサーバサイドプログラムもビジネスロジックはそのままに、クライアントへの出力部分をXMLデータ化すればそのまま使えます。これは既存のサーバサイドプログラムのソース行数を大幅に減らすことになり、メンテナンス性も向上するはずです。なお、XMLデータ形式の詳細については下記の@IT記事などを参照してください。

  1/3

 INDEX

OpenLaszloアドバンスド・テクニック(2)
 Webアプリと連携するためのコーディング基礎
Page1
はじめに
Openlaszloの配備方法
サーバ連携で取り扱うデータ形式
  Page2
LZXアプリケーションからサーバへのデータ送信方法
サーバからのデータの受け方
  Page3
データのバインド例




HTML5 + UX フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

HTML5+UX 記事ランキング

本日 月間