ホームページ  >  記事  >  バックエンド開発  >  AMFPHP コース シリーズ: AMF プロトコルを理解する

AMFPHP コース シリーズ: AMF プロトコルを理解する

WBOY
WBOYオリジナル
2016-06-13 13:08:00979ブラウズ

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 パッケージには次のものが含まれています

結果イベント (応答イベントなど) および onStatus イベント (エラー イベントなど)、これらのイベント オブジェクトは Flash で直接使用できます。
AMFはFlash MX時代のAMF0から現在のAMF3まで発展してきました。 Flash Playe 9のActionScriptとしてAMF3を使用 ActionScript 3.0 のデフォルトのシリアル化形式ですが、古いバージョンの ActionScript 1.0 および 2.0 では AMF0 がシリアル化形式として使用されます。 ネットワークデータ送信の点では、AMF3 は AMF0 よりも 効率的です 。 AMF3 は、int および uint オブジェクトを整数として送信でき、ByteArray、XML、Iexternalizable など、ActionScript 3.0 でのみサポートされるデータ型をシリアル化できます。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。