Flex SDK には、サーバーサイドデータにアクセスするための機能が含まれています。Flex のデータアクセスコンポーネントは、サービス指向アーキテクチャ(SOA)に基づいています。これらのコンポーネントは、リモートプロシージャコールを使用して、PHP、Adobe ColdFusion、Microsoft ASP.NET などのサーバー環境とやり取りし、Flex アプリケーションにデータを提供して、バックエンドのデータソースにデータを送信します。
特定のサーバーサイドアプリケーションに対して用意できるインターフェイスの種類に応じて、以下の方法のいずれかを使用して Flex アプリケーションに接続することができます。
REST スタイルのサービスでは、HTTPService コンポーネントを使用する Flex アプリケーションから POST 要求または GET 要求を受け取る、PHP ページ、JSP(JavaServer Page)またはサーブレット、ColdFusion ページなどのサーバーリソースを使用できます。そのサーバーリソースは、いわゆる、特定のサーバーテクノロジーに対する従来の手段を使用して、データベースにアクセスします。データアクセスの結果は、(サーバーテクノロジーでは一般的ですが)HTML ではなく XML 形式であり、Flex アプリケーションに対する応答として返すことができます。Flex、Adobe® Flash® Player および Adobe AIR™ は優れた XML 処理機能を備えており、これを使用して、Flex アプリケーションのユーザーインターフェイスに表示するためのデータを操作できます。REST スタイルのサービスは、Web サービスやリモートオブジェクトサービスによって提供される API など、より形式化された API を使用しなくても、サーバーリソースに簡単にアクセスできます。これらのサービスは、HTTP 要求を取得して XML を応答として返すことができるサーバーテクノロジーを必要な数だけ使用して実装することができます。
SOAP に準拠した Web サービスは、REST スタイルのサービスの規格化された種類です。Flex アプリケーションは、PHP、JSP、または ColdFusion のページに限定的にアクセスするのではなく、Web サービスのエンドポイントにアクセスします。Web サービスのデータの送信フォーマットおよび応答のフォーマット方法は、公開されている規格で明らかにされています。多くのサーバーテクノロジーには、アプリケーションを Web サービスとしてやり取りする機能が用意されています。Web サービスは規格に準拠しているので、Flex アプリケーションがやり取りするコードの実装の詳細を理解する必要はありません。これは、企業間(B2B)アプリケーションなど、高度の抽象化が必要なアプリケーションの場合に特に便利です。ただし、SOAP は非常に冗長で、通信時に負荷が高くなることが多いので、規格化されていない REST スタイルのサービスを使用する場合と比べて、クライアントサイドのメモリの要件が高くなり、処理時間が増加することがあります。
リモートオブジェクトサービスを使用すると、XML として形式を設定するのではなく、REST スタイルのサービスや Web サービスで行うように、ネイティブの形式でビジネスロジックに直接アクセスできます。これにより、既存のロジックを XML として公開するために必要な時間が不要になります。Adobe® LiveCycle™ Data Services ES、Vega または ColdFusion を使用する場合、Flex アプリケーションは、指定したオブジェクト上のメソッドのリモート呼び出しによって、Java オブジェクトまたは ColdFusion コンポーネント(内部的には Java オブジェクト)に直接アクセスすることができます。サーバー上のそのオブジェクトは、ネイティブデータ型を引数として扱い、それらの引数に基づいてデータベースを検索し、ネイティブデータ型を値として返すことができます。
リモートオブジェクトサービスのもう 1 つの利点は、通信時の通信速度です。HTTP または HTTPS を介する場合でもデータ交換は発生しますが、データ自体はバイナリ表現に直列化されています。このため、通信時のデータ量が減少し、クライアントサイドのメモリ使用量が低下して、処理時間が短縮されます。
サーバー側のデータにアクセスする必要があるアプリケーションを作成する場合は、次の重要事項を考慮してください。
HTTPService コンポーネントを使用すると、HTTP サービスとやり取りを行うことができます。HTTP 要求を受け入れて応答を返す任意の HTTP URI を、HTTP サービスにすることができます。HTTPService コンポーネントを使用して各種の応答を受信できますが、通常、このコンポーネントは XML を受信するために使用します。HTTPService コンポーネントは、PHP ページ、ColdFusion ページ、JavaServer Page、Java サーブレット、Ruby on Rails、および Microsoft ASP ページを含む、任意の種類のサーバーサイドテクノロジーと組み合わせて使用できます。
HTTPService コンポーネントは、HTTP を介してアクセスできても Web サービスまたは Remoting サービスとして使用できないサーバーサイドテクノロジーに対処するための優れた方法です。
HTTPService コンポーネントを使用すると、HTTP の GET、POST、HEAD、OPTIONS、PUT、TRACE、および DELETE の各要求を送信でき、HTTP 応答から返されたデータを Flex アプリケーションに取り込むことができます。Flex ではマルチパートフォームの POST はサポートされていません。
HTTPService コンポーネントを使用して CGI のようなやり取りを実行し、HTTP の GET、POST、HEAD、OPTIONS、PUT、TRACE、または DELETE を使用して、指定した URI に要求を送信できます。HTTPService オブジェクトの send() メソッドを呼び出すと、url プロパティで指定した URI に対して HTTP 要求が実行され、HTTP 応答が返されます。指定した URI に要求の引数を渡すこともできます。
PHP ページを呼び出す HTTPService コンポーネントの例を次に示します。この HTTPService コンポーネントは、username と emailaddress の 2 つの要求引数を提供します。アプリケーション内の追加のコードは、PHP ページを呼び出してデータベースのクエリーと挿入を実行し、PHP ページから返されたデータを Flex アプリケーションのユーザーインターフェイスに提供します。
<?xml version="1.0" encoding="utf-8"?>
<mx:Application>
...
<mx:HTTPService id="userRequest" url="http://server/myproj/request_post2.php" useProxy="false" method="POST">
<mx:request xmlns="">
<username>{username.text}</username>
<emailaddress>{emailaddress.text}</emailaddress>
</mx:request>
</mx:HTTPService>
</mx:Application>
HTTP サービスの作成と、HTTPService コンポーネントによるこのサービスへのアクセスについて詳しくは、HTTPService コンポーネントの使用を参照してください。
WebService コンポーネントを使用すると、「Web サービス」にアクセスできます。Web サービスは、一般に「処理」と呼ばれるメソッドを備えたソフトウェアモジュールです。Web サービスインターフェイスは XML を使用して定義されます。Web サービスは、様々なプラットフォームで実行されるソフトウェアモジュールが互いに通信を行うための規格に準拠しています。Web サービスについて詳しくは、World Wide Web Consortium のサイト(www.w3.org/2002/ws/)で、Web サービスの節を参照してください。
Flex アプリケーションは、URL として提供される WSDL(Web Services Description Language)ドキュメントでインターフェイスが定義された Web サービスとやり取りすることができます。WSDL は、Web サービスで解釈可能なメッセージ、そのメッセージに対する Web サービスの応答形式、Web サービスがサポートするプロトコル、およびメッセージの送信先を記述するために使用される標準形式です。
Flex の Web サービスの API は通常、SOAP 1.1、XML Schema 1.0(1999、2000、および 2001 の各バージョン)、WSDL 1.1 の RPC エンコード、RPC リラテル、およびドキュメントリテラル(ラップされていないスタイルパラメータとラップされたスタイルパラメータ)をサポートします。最も一般的な 2 種類の Web サービスでは、RPC エンコードされた SOAP バインディングまたはドキュメントリテラル SOAP バインディングが使用されます。「エンコード」および「リテラル」という言葉は、サービスで使用される WSDL から SOAP へのマッピングの種類を示しています。
Flex アプリケーションでは、SOAP メッセージの形式を持ち、HTTP で伝達される、Web サービスの要求および結果がサポートされています。SOAP では XML ベースの形式が定義されており、これを使用することで、構造化され型指定された情報を Flex アプリケーションなどの Web サービスクライアントと Web サービスとの間で交換できます。
Web サービスが標準として確立されている環境の場合は、WebService コンポーネントを使用して SOAP 準拠の Web サービスに接続できます。
Web サービスを呼び出す WebService コンポーネントの例を次に示します。この WebService コンポーネントは、returnRecords() および insertRecord() という 2 つの Web サービス処理を呼び出します。アプリケーションの他のコードで、Web サービスを呼び出し、データベースのクエリと挿入の操作を実行して、Web サービスから返されるデータを Flex アプリケーションのユーザーインターフェイスに提供します。
<?xml version="1.0" encoding="utf-8"?>
<mx:Application>
...
<mx:WebService
id="userRequest"
wsdl="http://server:8500/flexapp/returncfxml.cfc?wsdl">
<mx:operation name="returnRecords" resultFormat="object"
fault="mx.controls.Alert.show(event.fault.faultString)"
result="remotingCFCHandler(event)"/>
<mx:operation name="insertRecord"
result="insertCFCHandler()"
fault="mx.controls.Alert.show(event.fault.faultString)"/>
</mx:WebService>
</mx:Application>
WebService コンポーネントを使用して Web サービスにアクセスすることについて詳しくは、WebService コンポーネントの使用を参照してください。
RemoteObject コンポーネントを使用すると、ColdFusion コンポーネント(CFC)、Java オブジェクト、PHP オブジェクト、.NET オブジェクトなどのサーバーサイドオブジェクトを Web サービスとして設定しなくても、それらのオブジェクトのメソッドにアクセスできます。RemoteObject コンポーネントは MXML または ActionScript で使用できます。
LiveCycle Data Services ES、Vega または ColdFusion で、RemoteObject コンポーネントを使用することができます。リモートオブジェクトにアクセスするには、RemoteObject コンポーネントの source プロパティで完全修飾クラス名または ColdFusion コンポーネント名を指定するか、destination プロパティを使用してサーバーサイドの設定ファイル(remoting-config.xml ファイル)で Java クラスの完全修飾名にマップされる論理名を指定します。
また、PHP および .NET オブジェクトを持つ RemoteObject コンポーネントを、オープンソースプロジェクトの AMFPHP および SabreAMF、Midnight Coders WebORB などのサードパーティ製ソフトウェアと組み合わせて使用することもできます。詳細については、次の Web サイトを参照してください。
RemoteObject タグを使用する場合は、データがアプリケーションとサーバーサイドオブジェクト間でバイナリの AMF(Action Message Format)で受け渡されます。
Web サービスを呼び出す RemoteObject コンポーネントの例を次に示します。この WebService コンポーネントは、returnRecords() および insertRecord() という 2 つの Web サービス処理を呼び出します。アプリケーションの他のコードで、Web サービスを呼び出し、データベースのクエリと挿入の操作を実行して、Web サービスから返されるデータを Flex アプリケーションのユーザーインターフェイスに提供します。
<?xml version="1.0" encoding="utf-8"?>
<mx:Application>
...
<mx:RemoteObject
id="userRequest"
destination="ColdFusion"
source="flexapp.returncfxml">
<mx:method name="returnRecords" result="returnHandler(event)"
fault="mx.controls.Alert.show(event.fault.faultString)"/>
<mx:method name="insertRecord" result="insertHandler()"
fault="mx.controls.Alert.show(event.fault.faultString)"/>
</mx:RemoteObject>
</mx:Application>
リモートサービスの作成と、RemoteObject コンポーネントによるこのサービスへのアクセスについて詳しくは、RemoteObject コンポーネントの使用を参照してください。
このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート