AMFPHP チュートリアル シリーズ: AMF プロトコルを理解する
アクションメッセージフォーマット(AMF)
AMF は、SOAP (Simple Object Access Protocol、シンプル オブジェクト アクセス プロトコル) に大まかに基づいたバイナリ形式です。主にAdobeで使用されます
フラッシュアプリ
プログラム
とデータ
RPC (リモート プロシージャ コール) を介してライブラリ間でデータを交換します。
各 AMF メッセージには、エラーと応答を含む本文が含まれており、これらは As オブジェクトとして表現されます。
AMF は Flash Player 6 で導入され、AMF0 と呼ばれます。Flash Player 9 および As3.0 (新しいデータ型と言語スタイルにより AMF3 と呼ばれるアップデートが行われました) まで変更されませんでした。
データ型データ型
AMF には、データのシリアル化中に常に存在するいくつかのコア データ型が含まれています:
バイト-----単純な 8 ビットのデータ。これはデータを転送する最も簡単な方法です。
Int----------16 ビット数値は、連続する 2 バイトで構成されます。最初のバイトはより重要であり、2 番目のバイトはそれほど重要ではありません。
MediumInt-----上記と同様の 24 ビット数値ですが、長さだけが異なります。
Long-----32 ビットの数値。上記と同じですが、より長くなります。
Double --- 64 ビット数値は 8 つの連続したバイトで構成されます。符号付き浮動小数点数を表します。 Double はリトルエンディアンに従ってエンコードされます (下位バイトが後ろにあるのですか? 翻訳者にはわかりません (笑))。
UTF8 --- UTF8 文字列の長さは 2^16 (65536) バイト未満です。これは、文字列の長さを表す整数 (2 バイト) と、その後に続く UTF-8 エンコード文字列で構成されます。
LongUTF8---UTF8 文字列は 2^16 バイトよりも長くなる可能性があります。これは、文字列の長さを表す長整数 (4 バイト) と、その後に続く UTF8 エンコード文字列で構成されます。
?
Flash 5 は XML として使用できます
または、サーバーにデータを送信するための「変数/値」ペアの出力形式。これらのデータは Flash を通じてコンパイルできますが、
サーバーによって自動的に解析されるか、 を通じて開発されます。
人が書いたコードは手動で解析されますが、解析速度は遅いです。解析プロセス中に、XML はノードごとにデータ層を処理する必要があるためです。また、XML および「変数/値」の組み合わせ形式で処理されるデータ型は文字型のみであり、数値も例外ではありません。 Flash Remoting は、Object などの複雑なデータ型を処理できます。
、構造体、配列
、または DataGrid と一致するデータセットでも
コンポーネント
データを簡単に表示できます。
複雑なデータ型を処理するために、独自の方法を使用して Flash をアプリケーションと統合します。
サーバー間でデータを送受信できることが不可欠です。そこでAMFが誕生しました。 AMF は Adobe です
独自に開発されたコミュニケーション
バイナリ圧縮、シリアル化、逆シリアル化、およびデータ送信を使用して Flash プレーヤー を提供するプロトコル
Flash Remoting ゲートウェイとの通信により、軽量で高性能な通信方法が提供されます。以下に示すように。
AMFの最大の特徴は、Object、Array、Date、などの組み込みFlashオブジェクトを直接変換できることです。
XML はサーバーに送り返され、サーバー上で適切なオブジェクトに自動的に解析されるため、開発者は複雑な作業から解放され、開発時間を節約できます。 AMFはバイナリエンコーディングを使用するため、この方法は
この形式はデータを高度に圧縮できるため、大量のデータを送信するのに非常に適しています。 Flash Remotingはデータ量が大きくなるほど伝送効率が高く、Webをはるかに上回ります。
サービス。 XMLに関しては、LoadVarsとloadVaria
bles() では、プレーンテキスト送信方式が使用されており、パフォーマンスは Flash Remoting とは比較できません。
注: Flash Remoting を使用するには、ブラウザがバイナリ POST をサポートしている必要があります。Flash プレーヤーが Nets cape 6.x 環境で実行されている場合、Flash Remoting は機能しません (Flash Remoting 呼び出し )。
効果なし
はエラーを返しません)、Nets cape 7 ではこのバグが修正されました。この問題は、Mac の初期の Safari および Chim 時代のバージョンにも存在します。
これは軽量のデータ交換プロトコルでもあり、リモート サービスも呼び出し、標準の HTTP および HTTPS プロトコルに基づいています。Flash Remoting が Flash プレーヤーとの通信に SOAP ではなく AMF を使用することを選択した理由は次のとおりです。
SOAP はデータを XML 形式に処理しますが、バイナリ AFM に比べて冗長すぎます。
AMF はより効率的にデータをシリアル化できます。これは、AMF の本来の目的は Flash ActionScript データ型をサポートすることだけですが、SOAP はより幅広い用途を提供することに注力しているためです。
AMF は Flash Player 6 をサポートしており、ブラウザのサイズは (圧縮後) 約 4 KB 増加するだけで済みますが、SOAP ははるかに大きくなります。
一部の SOAP ヘッダー ファイル リクエストは、Flash Player 6 ではサポートされていません。では、なぜ Flash Player 6 は SOAP ベースの Web サービスにアクセスできるのでしょうか?オリジナルフラッシュ
Remoting ゲートウェイは、サーバー側で SOAP リクエストを AFM 形式に変換し、AFM を使用して Flash プレーヤーと通信します。さらに、AMF パッケージには次のものが含まれています