Flash Remoting with PHP - 01
Flashアプリケーションの開発にあたり,Flash Remotingについての簡単なメモを作成したので公開したいと思います.Flash Remotingとは,Flash クライアント/サーバ間にネットワーク通信チャネルを提供するアプリケーションサーバゲートウェイのしくみです.Flashクライアント/サーバ間で簡易な通信を行うだけであれば,Flash Remotingを利用するまでもなく,下記のようなやり方がデフォルトで備わっています.
- MovieClip.getURL()
- GET,POSTで値をサーバに渡し,結果はブラウザに表示
- MovieClip.loadVariables()
- GET,POSTで値をサーバに渡し,変数名=値&変数名=値&・・・のテキスト形式で結果受信
- XML.sendAndLoad()
- POSTでXMLをサーバに渡し,XMLを受信
- XML.load()
- GETでURLにアクセスし,XMLを受信
- XMLSocketクラス
- XMLで送受信.1024番以上のポートにしか接続できない
・サーバとのデータ連携が容易.テキストデータだけでなく,バイナリやオブジェクトデータの交換が可能
・ログ記録、デバッグ機能
・パフォーマンスの改善
今回注目したのはパフォーマンスのメリットです.Flash Remoting は,データのやり取りの形式としてAction Message Format(AMF) を使用し,Flash アプリケーションとリモートサービスとの間のメッセージを直列化します.つまり,送りたいデータをサーバサイドでXMLに整形し,クライアントサイドでパージングして取り出すというような,XMLクラスを用いた通信で余儀なくされていた余分なコストが無くなり,パフォーマンスの改善に寄与します.また,余分なデータがそぎ落とされるので,ネットワークの帯域幅を効率的に利用することができます.
Macromediaのマニュアルには,「サーバーサイドでは、Flash Remoting は、Java アプリケーションサーバー内のサーブレット、.NET サーバー内のアセンブリ、ColdFusion MX 内のネイティブサービスとして動作します。」とあり,PHPを正式にはサポートしていません.しかし, AMFPHP (http://www.amfphp.org/)というオープンソースのFlash Remotingゲートウェイを利用すれば,PHPだけでFlash Remotingを実現できます.マルチバイト対応等,ここ最近よくメンテナンスされているようです.次回は実際にAMFPHPを試してみます.
補足
AMF:Simple Object Access Protocol [SOAP] 形式をモデルにしたバイナリ形式