FlexからPHPへの通信に最適な方法は?
-
19-08-2019 - |
質問
FlexとPHP間の通信に最適な方法は何ですか?
過去、AS2でAMFPHPを使用し、ほとんどの部分でうまく機能しました(AMFPHPの利点は、JavascriptまたはActionscriptフロントエンドで同じリモートPHPをシームレスに使用できるJSONモードも備えていることです) 。
ただし、AMFPHPはもはや実際にはメンテナンスされていないようです。それで、人々はそれを交換するために何を勧めますか?これまでのところ、私が見つけたのは:
- Zend_AMF (複雑すぎるように見えますが、それ以外はZendフレームワークを使用していません)
- AMFPHP (Flexをサポートするために更新されたものがあり、かなり安定していますが、長期的なサポートについてはわかりません)
- XML (AS3には優れたXML処理ルーチンがありますが、PHP側にとっては苦痛です)
- WebORB (私は経験がありませんこれ)
- Roll-our-own JSONまたはその他のデータからテキストへのシリアル化システム(phpのserialize()、XMLなど)を使用
私が慣れ親しんでいることから、ほとんどの場合、マイナス面のためでもAMFPHPに傾倒しています。他の何かに切り替えることを検討する必要がある理由は何ですか?
解決
高速で効率的な通信を行いたい場合は、 AMFプロトコルに従うことを強くお勧めしますRESTまたはJSONカスタム形式の代わりに。
ZendAMFは実際にはそれほど混乱しません。 GotoAndLearn の紹介チュートリアルをご覧ください a>、それは非常に簡単です。
ご存知のとおり、一部の開発者 AMFPHPからZendAMFの作業に移行しました。ある意味で、ZendAMFはAMFPHPの続きです。
他のヒント
ZendAMF 短い読み物- http://theflashblog.com/?p=441
私にとってこれは簡単なことではありません。 Zendフレームワークは、最高のphpフレームワークの1つであり、Flashクライアントと対話できるようになりました。アドビのサポートで締めくくり、それは私の本で成し遂げられた取引です。
代替案:
PHPのWebORB http://www.themidnightcoders.com/products/weborb-for-php
AMFPHP http://www.amfphp.com 上記のURLを読めば、おそらくこれが私のレーダーにない理由がわかるでしょう。
何が最善かはわかりません(とにかく主観的だからです)が、私ができることは、私の最近のプロジェクトについてです。
これは非常にリッチなWebアプリであり、サーバーへのデータリクエストが頻繁に発生するため、リクエストのサイズをできるだけ小さくしたいと考えました。これは、フォーマットとしてJSONを選択することを意味します。
次に、アプリケーションの性質と私のフラッシュ/フレックス開発者が1000マイル離れているという事実のため、シンプルでステートレスなAPIが必要でした。これが最終的にHTTP + RESTにつながりました。
つまり、私のアプリの通信レイヤーは、Zend Frameworkを使用したシンプルなRESTリソースのセットで、次のようなURIを備えています
user/10
review/15
location/8/reviews
これらはすべてJSONを返します。フラッシュクライアントが障害を簡単に処理できるように、すべてのエラーに共通のJSON形式もあります(例外はトラップされ、JSONオブジェクトに変換されます)。
Zendのようなフレームワークを使用していない場合、それ以外の理由がない限り、通常のol AMFPHPは依然として優れています。あなたがそれに満足していると思うなら、それを試してみませんか?これらのAMFインターフェースの役割に関することは、実際にあまり多くのことをする必要がないこと、およびAMFPHPがクラスマッピング、ArrayCollectionへのレコードセット解析、優れたパフォーマンスで持っていることです。圧縮されます。 Charlesと組み合わせたサービスブラウザーも同様に私をカバーしました。
私は、ZendAMFの取り組みが元のAMFPHPにどのように関連しているかについてあまり理解できませんでした。掘ることはできますが、NabbleのAMFPHPメーリングリストをフォローして、Wade Arnoldのブログを読んでいるところです...完全に明確ではありません。
Zend AMFの使用を検討する必要があります。 Zend Frameworkは、選択して選択できるフレームワークになるように設計されているため、アプリケーションの単一のコンポーネント(この場合はZend AMF)を選択してもまったく問題ありません。
Zend AMFは非常に使いやすいです。必要なことは、公開する関数/クラスを指定し、アクションスクリプトクラスへのクラスマッピングを指定することだけです。それ以外はほとんど透明です。
このリンクは、WebORB for PHP WDMF(WebORB Data Management for Flex)の使用方法を示すスクリーンキャストです。
FlashおよびPHPバックエンドを含むすべてのプロジェクトで、AMFPHPまたはXMLリクエストのいずれかを使用しました。
AMFPHPは、将来のメンテナンスのためにアプリケーションを本当に簡単に理解します、それはすべてを特定の技術に結び付け、サーバー側の追加オーバーヘッドを必要とします-必要なすべてのクラスを作成します。
XMLによると、ここで得られるのは標準のREST Webサービスであり、Flashに依存しません(たとえば、ブラウザーに依存するJSONまたはその他のテクノロジーを使用して、デスクトップアプリからデータをプルすることもできます)許可しないでください)。
100%将来の<!> quot; support <!> quot;が必要な場合は、サポートがまったく不要なXMLをお勧めします。
SimpleXML を使用すると、PHPのXMLをより簡単に使用できます。
PHP APIに対する単純な呼び出しの戻り値としてJSONを使用します。
私は間違いなくWebORBに行きます。以前の仕事で.NETで使用していましたが、コードを書くのは楽しかったです。その使いやすさと熟考された管理コンソールにより、学習が非常に高速になり、ドキュメントも非常に充実しています。既に知っていることだからといって、AMFを使い続けたいと思っていますが、WebORBを試してみる価値はあると思います。
こちらをご覧くださいスクリーンキャストは、PHPを使用したActionscript生成用です。
乾杯。
PHPには非常に優れたserialize()
機能があるため、最近行ったプロジェクト(ゲームの高得点)では、Sephirothのシリアライザー。これにより、Flash側でのシリアル化がPHPの場合と同じくらい簡単になります。シリアライザーは、AMFなどのデータ型(json / xmlとは異なります)も処理します。
欠点-AMFほどコンパクトではありませんが、gzip圧縮では処理できません。
AMFには非常に状況的な利点があります。大きくて複雑なオブジェクトを転送する場合は、必ずAMFを使用してください。しかし、小さなオブジェクトを転送するときにAMFがもたらすオーバーヘッドについては、ほとんど知りません。 3つのプロパティを持つオブジェクトのみを転送する場合、AMFを使用するとペイロードサイズを3倍にできます。
補足として、私はRESTfulアーキテクチャの大擁護者です。 JSONとAMFはどちらも単なる表現であるため、両方を受け入れるRESTサービスを構築し、実行時にクライアントと実際の表現をネゴシエートできます。
<!> quot;高速で効率的な通信を行いたい場合は、AMFプロトコルに固執することを強くお勧めします<!> quot;
また、高速で効率的で一般化された通信が必要な場合は、jsonを使用してください。その後、Webサービスは、フラッシュ、ajax、または通常のhttpリクエストで利用可能になります。