1. はじめに
Macromedia の Flash は現在、Web サイトのコンテンツ記述を強化するためにインターネットで広く使用されています。 Macromedia の最近の Flash リリース (Flash 6 および Flash MX) は、Macromedia が Web アプリケーション開発のインターフェースとして Flash を真剣に検討していることを明らかにしました。インターフェイスとしては Flash が最適かもしれませんが、この選択は、ビジネス ロジック、クエリ管理、およびセキュリティを置き換えるために使用するものではありません。 Web 開発者が真に強力なパフォーマンスとエンタープライズ クラスの機能を実現するには、.NET、Flash、リッチ記述層のサポートと、Microsoft の .NET テクノロジを組み合わせる必要があります。
Flash には、アニメーションに対話性を追加するために使用されるスクリプト言語である ActionScript が含まれています。 Flash 5 での ActionScript の導入以来、Macromedia は、ActionScript を単純なスクリプト言語から、まだ多くの制限があるもののかなり堅牢なプログラミング機能に改良し続けてきました。 Flash MX 2004 では、Macromedia は ActionScript 2.0 を導入しました。これは、新しい機能とコードを構造化する新しい方法をサポートします。この記事を理解しやすくするために、まず、ActionScript を使用した Flash サイトの構築に関する基本的な知識を読んでください。
マクロメディアは、外部データを Flash アプリケーションに簡単に統合する方法を導入し、より複雑で堅牢なデータ駆動型アプリケーションを可能にしました。 Flash と .NET は両方ともクロスプラットフォーム ソリューションとして宣伝されているため、自然なパートナーになります。それでも、2 つのテクノロジーをリンクするのは簡単な作業ではありません。この記事では、Flash アプリケーションと .NET アプリケーションを統合するいくつかの方法について説明します。
2. Flash と ASP.NET を統合し
、Flash アニメーションを ASP.NET ページに埋め込みます。Macromedia
Flash アニメーションは、OBJECT タグと EMBED タグを併用して .aspx ページに配置されます。 EMBED タグは、もともと Netscape 2.0 以降で動作するように Netscape によって開発されました。その後、このタグは Microsoft Internet Explorer (MSIE) に採用されました。ブラウザの互換性を確保するために、MSIE 固有の OBJECT タグと EMBED タグを併用できます。次の HTML コードは、OBJECT タグと EMBED タグを使用して Flash アニメーション (*.swf ファイル) を埋め込む方法を示しています。
3. Flash を外部データに接続する
Flash アニメーションを外部データと統合するには、FlashVars、LoadVars、および新しい FlashRemoting テクノロジーの 3 つの方法があります。最も簡単な方法の 1 つは、FlashVars を使用してコードの HTML 部分で変数を渡すことにより、外部データを .aspx ページから Web ページに埋め込まれた Flash アニメーションに渡すことです。 FlashVars を使用して設定されたこれらの変数の値には、Flash アニメーションのルート レベルでアクセスできます。すべてのブラウザ環境で実行するには、FlashVars 属性に OBJECT タグと EMBED タグの値を割り当てる必要があります。
以下は、object タグで使用される FlashVars です:
<PARAM Name="FlashVars" Value="init=yes&check=true">
以下は、EMBED タグで使用される FlashVars です:
<EMBED src="test.swf" FlashVars=" init =yes&check=true"></EMBED>
4. FlashVars を使用する理由
FlashVars を借用する代わりに、変数を HTML タグに含めることもできます。変数をクエリ文字列を通じて .SWF ファイルの URL の末尾に追加し、それを Flash アニメーションに渡します。このアプローチには問題がある可能性があります。サーバーからデータが要求される前に .SWF ファイルをダウンロードして実行する必要があるため、.SWF ファイルのロード時にこの変数が必要な場合です。変数値は、「変数のロード」メソッドと JavaScript を使用して Flash に設定することもできます。これらの各メソッドには、応答時間が遅くなるという欠点があります。これが、開発者が ASP.NET から Flash アニメーションにデータを渡すために FlashVars を使用する必要がある理由です。次の図は、変数をクエリ文字列として渡すコードを示しています。
FlashVars を使用して渡された変数は、Flash アニメーションのルート レベル (_level0) でアクセスできます。 Flash アニメーション内でこれらの値を取得するには、動的変数を作成します。次の ActionScript コードは、Flash での「initvalue」の割り当てを実装します。
_level0.initvalue = init;
5. Flash とデータベース間の通信
Flash アニメーションはデータベースに直接アクセスできません。ただし、Flash は、ASP や ASP.NET などのサーバー側テクノロジを介してデータベースと通信できます。このタスクを実行するにはいくつかの方法があります。今回はLoadVariablesメソッドとsendAndLoadメソッドについて解説します。
(1) アニメーション クリップでloadVariables メソッドを使用する
アニメーション クリップのloadVariables メソッドは、外部ファイルまたは URL からデータを読み取り、アニメーション クリップの変数に値を設定します。アニメーション クリップがインスタンス化されると、アニメーション クリップのロード アクションがクリップ イベント イベント ハンドラーで開始されます。アニメーション クリップが初期化されると、loadVariables メソッドを呼び出して変数をロードできます。 loadVariables メソッドは非同期呼び出しであり、Flash は呼び出しの結果を待ちません。データがloadVariables()動作で受信されると、アニメーションクリップのデータ動作がクリップイベントイベントハンドラで初期化されます。
このメソッドの使用法を示すために、この例では、Flash アニメーションから選択された ID に基づいてデータベースからユーザーの名前と年齢を取得します。以下の図では、アニメーションのloadVariables メソッドを使用して、.aspx ページ getUserData.aspx からアニメーション フラグメントにデータを読み込みます。ここで、ActionScript はユーザーの ID を渡します。ユーザーの名前と年齢は、.aspx ページへのクエリ文字列として Flash アニメーションに表示されます。
getUserData.aspx ページは、以下に示すクエリ文字列から ID 値を取得します。
現在、ASP.NET はこの値 ID を .NET ビジネス コンポーネントに渡すことができます。この例では、ユーザーの名前と年齢を取得します。
このセクションで前述したように、アニメーション クリップの onClipEvent イベント ハンドラーのデータ動作は、loadVariables() 動作でデータが受信されると初期化されます。 Flash アニメーションで動的変数 flashName と flashAge を宣言します。次の図は、.aspx ページから返された値を取得するために Flash アニメーションの onClipEvent ハンドラーで使用される ActionScript コードを示しています。
注: これは重要です。これは、.aspx ページから設定される変数と同じです。ここに示す例では、Flash アニメーションでアクセスされる変数は「name」です。これは、.aspx ページ (Response.Write("name="&User.name)) から設定される変数と同じです。
これらの値は Flash アニメーション内で使用できるようになりました。
(2) アニメーションクリップからsendAndLoadメソッドを使用する
今日のインターネットでは、XML は、異なる種類のアプリケーション間でもスムーズなデータ交換を可能にする可能性を備えた汎用トランスポート形式として、ドキュメント システムの形式で重要な位置を占めています。 XML は、さまざまなシステム上のアプリケーションであっても、アプリケーション間の通信のためのゲートウェイ メカニズムを提供します。アプリケーションが (HTTP、ファイル共有、またはその他のメカニズムを介して) データを共有でき、XML パーサーを備えている限り、処理が非常に簡単な構造化情報を共有できます。
Flash MX は XML データ転送をサポートしており、XML を交換するための ASP や ASP.NET などのサーバー テクノロジ方式がいくつかあります。 Flash MX は、XML クラス(load、send、sendAndLoad、または Flash MX の新しい XMLConnector)を使用して XML パケットを送受信できます。最後のものは、HTTP 経由でパケットを送受信し、それらを Flash レイヤーの UI ウィジェットにバインドするために使用できます。
FlashXML オブジェクトの sendAndLoad メソッドについて説明します。これは、アーキテクチャ指向の XML データ通信、例外処理、パフォーマンスを実装するための一般的なメソッドです。この簡単な例では、ユーザーのスコアの詳細を Flash クライアントからデータベースに挿入し、成功または失敗のメッセージを Flash クライアントに送信します。
(3) Flash で XML パケットを作成する
XML パケットは、次のように Flash で簡単に作成できます。
var sendXML:XML = new XML("<userid>123456</userid>");
XML パケットをサーバー側に送信します。ページ - ASP/ASP.NET を使用し、返される XML パケットを処理します。
使用法は次のとおりです。
xmlObject.sendAndLoad (URL: String, targetXMLObject: XML): Void
この 'xmlObject' は XML オブジェクト インスタンスです。この 'URL' は、.aspx ページに送信する必要がある XML をカプセル化します。 XML オブジェクトを指定する宛先 URL。「targetXMLObject」は XML オブジェクトであり、サーバー側から返される情報を受け取ります。
sendAndLoad メソッドは、XML パケットをサーバー側のテンプレートに送信し、応答として XML パケットを受信します。これは、XML パケットを送信するだけでいかなる種類の応答も期待しない XML クラスの send メソッドとは異なります。これらのメソッドはそれぞれ独自の方法で動作しますが、重要な違いが 1 つあります。XML クラスの send メソッドはパラメータとしてターゲットを受け取ります。これにより、新しいブラウザ ウィンドウを開いたり、現在のブラウザ ウィンドウの内容を置き換えたりすることができます。一方、sendAndLoad メソッドは XML パケットをパラメータとして受け取ります。新しいブラウザ ウィンドウは起動しません。 send メソッドは新しいブラウザ ウィンドウを開くため、ブラウザ ウィンドウ自体の出力を確認できます。これはデバッグに非常に役立ちます。
注: sendAndLoad 呼び出しを発行する Flash ファイルが Web ブラウザで実行されている場合、ターゲット URL は Flash アニメーションと同じドメイン内にあります。異なるドメインのアプリケーションと通信する必要がある場合、詳細については、
www.macromedia.comの「クロスドメイン データの読み込み」を参照してください。
次の図のコードは、XML オブジェクトの sendAndLoad メソッドを使用して .aspx ページと通信し、サーバーから返された XML を処理する方法を示しています。
上記のコードは次の処理を実行します。
· XML 文字列を XML オブジェクト「userscore_xml」にロードします。インスタンスは XML を保持します。XML はリモート サーバー側の ASP.NET ページに送信されます。
・XMLオブジェクト「ResponseXMLObj_xml」のignoreWhite属性を設定します。この XML オブジェクト インスタンスは、サーバーからの XML パケットを保持します。
・XMLオブジェクト「ResponseXMLObj_xml」のonLoadメソッドを設定します。 Flash は、サーバー側の .aspx ページから返された XML 応答を受信します。これは、XML オブジェクトの onLoad メソッドで処理されます。
·次に、受信した XML パケットを解析して、必要なメッセージを Flash クライアントに表示します。
(4) ASPX ページのフラッシュから送信された XML パッケージを受信する
次の図は、このタスクを完了するためのコードを示しています。
上記のコードは次のことを行います。
· Flash クライアントから送信された XML を受信します (xmlDoc.Load(Request.InputStream))。
· 受信した XML を解析し、データベースに挿入するためにビジネス コンポーネントに渡します。
· 形成された XML メッセージは Flash クライアントに送り返されます。ビジネス層で発生した成功または例外条件は、それに応じて処理され、さまざまな XML メッセージに変換され、このメッセージは Flash クライアントに返されます。 Flash クライアントはこれらの XML メッセージを受信し、それに応じて表示します。
6. 結論
Flash および .NET テクノロジは、今日の市場で人気を集めており、ますます多くのアプリケーション アーキテクチャで成功するパートナーとなる可能性があります。これら 2 つの手法は同じ問題の一部に対処しますが、根本的に異なります。 Flash MX を使用すると、Web サイトで対話性を実現できるようになり、.NET はエンタープライズ アプリケーションの構築に役立ちます。この記事で説明したように、Flash アプリケーションと .NET アプリケーションを統合することは完全に可能です。すべてのステップは、これら 2 つの部分をどのように接続し、適切なアーキテクチャ計画を戦略的に実行するかを決定することに関係しています。
この分野では、Flash Remoting を中心とした新世代のアーキテクチャが勢いを増していますが、この記事で説明した方法が大規模なアプリケーションに適用できるようになるまでには数年かかるでしょう。