8

FlexとPHP間の通信に最適な方法は何ですか?

以前は、AS2でAMFPHPを使用していましたが、ほとんどの部分でうまく機能しました(AMFPHPの利点は、JavascriptまたはActionscriptフロントエンドで同じリモートPHPをシームレスに使用できるJSONモードも備えていることです)。

ただし、AMFPHPは実際にはもう保守されていないようです。それで、人々はそれを交換するために何を勧めますか?これまでのところ、私が見つけたのは次のとおりです。

  1. Zend_AMF(私たちには複雑すぎるように見えます。それ以外の場合はZendフレームワークを使用していません)
  2. AMFPHP(Flexをサポートするためにいくつかの更新が行われ、かなり安定しているように見えますが、長期的なサポートについてはわかりません)
  3. XML(AS3には優れたXML処理ルーチンがありますが、PHP側ではもっと面倒です)
  4. WebORB(私はこれについての経験がありません)
  5. JSONまたはその他のデータからテキストへのシリアル化システム(phpのserialize()、XMLなど)を使用した独自のロール

欠点があるとしても、ほとんどの場合、AMFPHPに傾倒しています。これは、私が慣れているものだからです。他のものへの切り替えを検討する必要がある理由は何ですか?

4

12 に答える 12

8

高速で効率的な通信が必要な場合は、REST や JSON カスタム形式ではなく、 AMF プロトコルを使用することを強くお勧めします。

ZendAMF は、実際にはそれほど複雑ではありません。GotoAndLearn の紹介チュートリアルを見てください。これは非常に簡単です。

ご存知のように、 AMFPHPの一部の開発者は ZendAMF に取り組んでいます。ある意味で、ZendAMF は AMFPHP の継続です。

于 2009-03-19T15:22:09.677 に答える
2

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 を読めば、なぜこれが私のレーダーから消えたのかわかるでしょう。

于 2009-03-19T07:02:23.130 に答える
1

ZendAMFの使用を検討する必要があります。Zend Frameworkは、選択されたフレームワークとして設計されているため、アプリケーションに単一のコンポーネント(この場合はZend AMF)を選択してもまったく問題ありません。

ZendAMFは非常に使いやすいです。公開する関数/クラスを指定し、アクションスクリプトクラスへのクラスマッピングを指定するだけです。他のすべてはほとんど透過的です。

于 2009-03-23T06:44:12.243 に答える
1

何が最善かはわかりませんが(とにかく主観的である可能性があるため)、最近の私のプロジェクトについて説明することができます。

これは非常にリッチなWebアプリであり、サーバーへのデータリクエストが頻繁に発生するため、リクエストのサイズをできるだけ小さくしたいと思いました。これは、フォーマットとしてJSONを選択することを意味します。

次に、アプリケーションの性質と、フラッシュ/フレックス開発者が1000マイル離れているという事実のために、シンプルでステートレスなAPIが必要でした。これが最終的にHTTP+RESTにつながりました。

したがって、私のアプリの通信レイヤーは、次のようなURIを持つ単純なZendFrameworkを利用したRESTリソースのセットです。

user/10
review/15
location/8/reviews

それらはすべてJSONを返します。フラッシュクライアントが障害を簡単に処理できるように、すべてのエラーに共通のJSON形式もあります(例外はトラップされてJSONオブジェクトに変換されます)。

于 2009-03-16T21:05:10.640 に答える
1

Zendのようなフレームワークを使用していない場合でも、それ以外の理由がない限り、通常のolAMFPHPは優れています。気になったら行ってみませんか?これらのAMFインターフェースの役割については、実際にはあまり多くのことを行う必要がないということです。AMFPHPには、クラスマッピング、ArrayCollectionへのレコードセットの解析、優れたパフォーマンスなどがあります。圧縮されます。チャールズと組み合わせたサービスブラウザも私をカバーしてくれました。

ZendAMFの取り組みが元のAMFPHPとどのように関連しているかを理解することができませんでした。掘り下げることはできますが、NabbleのAMFPHPメーリングリストをフォローして、WadeArnoldのブログを読んでいると言っています...それは完全には明確ではありません。

于 2009-03-20T04:32:00.853 に答える
1

このリンクは、WebORB for PHP WDMF (WebORB Data Management for Flex) の使用方法を示すスクリーンキャストです。

http://www.themidnightcoders.com/products/weborb-for-php/developer-den/screencasts/weborb-data-management-for-flex-and-php.html

于 2010-03-18T14:37:46.050 に答える
0

PHP上のXMLは、 SimpleXMLを使用するとはるかに簡単になります。

PHPAPIに対する単純な呼び出しのリターンとしてJSONを使用します。

于 2009-03-20T20:06:13.043 に答える
0

FlashとPHPのバックエンドを含むすべてのプロジェクトで、AMFPHPまたはXMLリクエストのいずれかを使用しました。

AMFPHPは、将来のメンテナンスのためにアプリケーションを理解することを本当に単純化しますが、すべてをその特定のテクノロジーに結び付け、サーバー側で必要なすべてのクラスを作成するための追加のオーバーヘッドを伴います。

XMLによると、ここで得られるのは標準のREST Webサービスであり、Flashに依存しません(たとえば、デスクトップアプリからデータをプルすることもできますが、JSONやブラウザーに依存するその他のテクノロジーを使用することはできません。それを考慮に入れてください)。

100%将来の「サポート」が必要な場合は、サポートをまったく必要としないもの、つまりXMLをお勧めします。

于 2009-03-16T21:02:54.047 に答える
0

PHPは非常に優れたserialize()機能を備えているため、最近行ったプロジェクト(ゲームのハイスコア)では、SephirothのSerializerを使用しました。これにより、Flash側でのシリアル化がPHPの場合とほぼ同じくらい簡単になります。Serializerは、AMFのようなデータ型(json / xmlとは異なります)も処理します。

欠点-AMFほどコンパクトではありませんが、gzip圧縮で処理できないことはありません。

于 2009-03-25T15:42:07.113 に答える
0

私は間違いなくWebORBに行きます。以前の仕事で.NETで使用しましたが、コーディングするのは楽しかったです。その使いやすさとよく考えられた管理コンソールにより、習得が非常に速く、ドキュメントは非常に完全です。すでにご存知のとおり、AMFを使い続けたくなることは承知していますが、WebORBを試してみる価値はあると思います。

PHPを使用したActionscript生成のこのスクリーンキャストを見てください。これは、かなり凝ったものです。

乾杯。

于 2009-03-23T13:25:01.563 に答える
0

AMF には、かなり状況に応じた利点があります。大規模で複雑なオブジェクトを転送する場合は、必ず AMF を使用してください。しかし、小さなオブジェクトを転送するときに AMF がもたらすオーバーヘッドについては、ほとんど知られていません。3 つのプロパティを持つオブジェクトのみを転送する場合、AMF を使用するとペイロード サイズが 3 倍になります。

余談ですが、私は RESTful アーキテクチャーを大いに支持しています。JSON と AMF はどちらも単なる表現であるため、両方を受け入れる REST サービスを構築し、実行時にクライアントと実際の表現をネゴシエートできます。

于 2011-03-30T01:22:17.210 に答える
-2

「高速で効率的な通信が必要な場合は、AMF プロトコルを使用することを強くお勧めします」

高速で効率的で一般化された通信が必要な場合は、json を使用してください。その後、Web サービスは、フラッシュ、ajax、または通常の http 要求で使用できるようになります。

于 2009-03-19T18:08:53.347 に答える