3

私は、さまざまな形式の HTTP 要求に応答する RESTish サーバー プロジェクトに取り組んでいます。これにより、ユーザー向けアプリケーションを作成し、その時点で最も便利と思われる形式を取得できます。たとえば、ログインしているユーザーがいるかどうかを確認するには、次を送信できます。

http://serverurl/Authentication?command=whoami&format=xml

ご想像のとおり、これはログインしているユーザー (存在する場合) に関する情報を含む XML を返します。json で同じ情報を取得できます。

http://serverurl/Authentication?command=whoami&format=json

最近、一部の Ruby および Python 開発者に人気がある yaml のサポートを追加することについて議論しています。同時に、Flex でクライアント アプリケーションのプロトタイプを作成することについても話し合っていました (私の質問でわからない場合は、これが Flex 開発への最初の進出になります)。既存の形式の 1 つを使用して Flex アプリと通信できることは理解していますが、これらの追加形式のサポートを「できるという理由だけで」追加することを決定した場合、amf の使用が特に難しくなったり、他の形式と異なったりすることはありますか? xmlまたはjsonを出力していますか?

4

5 に答える 5

2

私は現在、あなたが提案している方法(.Netプラットフォーム上)でAMFをシリアライゼーション形式として使用するプラットフォームに取り組んでいます。私たちがしていることは次のとおりです。

  1. 送信するページを表す DTO を作成します。
  2. ByteArray を作成し、WriteObject() を使用して DTO を格納します。
  3. コンテンツ タイプを AMF に変更します
  4. ByteArray の Buffer を Response ストリームにバイナリ書き込みする

クライアント側では、フォーマットがバイナリに設定された通常の URLLoader を使用します。loader.data プロパティは ByteArray になり、ReadObject を使用してシリアル化された DTO を取得します。[RemoteClass] メタデータと registerClassAlias を使用すると、対応する型が取得されます。それ以外の場合は、いくつかの動的プロパティを持つ汎用オブジェクトが取得されます。

型指定された DTO を迂回することの優れた点は、通常の XML または JSON シリアライザーを使用できることです。これにより、フォーマットのバージョン管理が非常に簡単になります。

また、作成/更新のために ByteArrays をサーバーにポストしてテストを実行しましたが、正常に動作しているようです。要するに、AMF を REST に使用できるようになりました。

これは軽量で、複雑な型をシリアル化するのに非常に堅牢であるように見えるため、サーバー間の通信にもこれを使用することを検討しています。

于 2009-08-27T10:27:37.250 に答える
2

AMF は Action Message Format であり、データを非常にコンパクトなバイナリ形式にエンコードする方法です。AMF は、厳密な意味で RPC に関連付けられていません。Flex で利用可能なメッセージング機能 (コンシューマー / プロデューサー) は、AMF を使用してすべてのメッセージのデータをエンコードしますが、これは RPC ではありません。

質問に戻りますが、アプリケーションの構築に使用しているサーバー側のテクノロジは何ですか? さまざまなプラットフォーム用の AMF ライブラリは、すべて品質と成熟度が異なります。これらのライブラリのほとんどでは、エンコードするオブジェクトを単純に渡し、REST エンドポイントに関連付けられた HTTP 要求の出力ストリームに書き込むことができるバイト配列を受け取ることができます。

于 2009-03-26T06:40:46.033 に答える
0

Vineet Bhatia の質問への回答: BlazeDS をチェックアウトしましたか? http://opensource.adobe.com/wiki/display/blazeds/Overview

于 2009-05-29T14:59:54.950 に答える
0

できますが、独自の AMF シリアライザーとデシリアライザーを作成する必要があります (Zend Framework のものをコピーするだけです)。または、私が私の仕事を終えるのを待つことができます。ここに投稿することを忘れないようにします。

于 2009-08-15T04:53:50.073 に答える
-2

AMF は、SOAP によく似た RPC (リモート プロシージャ コール) 形式ですが、対象ユーザーが異なります。プロシージャ コールとオブジェクトには根本的な違いがあるため、AMF は単なる別の出力形式にはなりません

おそらく、AMF は、REST API を使用して Flex を対象とした出力形式ではなく、「Flex Remoting」と考える必要があります。

例えるなら、SOAP や XMLRPC は、REST API の単なる別の出力形式だと思いますか?

于 2009-03-23T21:21:18.967 に答える