1

私はWebサービスのためにjsonrpc2を探索しています。私はjavarmiの経験があり、とても気に入りました。簡単にするために、zendフレームワークを使用しているので、そのライブラリを使用したいと思います。しかし、私が見逃していることが1つあります。プロシージャに他のオブジェクトへの参照を返送させるにはどうすればよいですか。

それは手順に関するものなので、プロトコルには含まれていませんが、それでも有用なことだと思います。java rmiと同様に、値(シリアル化)または参照(リモートオブジェクトプロキシ)で送信するオブジェクトを選択できます。では、これを解決するための最良の方法は何ですか?ほとんどの図書館で使用されているこの基準はありますか?

私はこれを探すためにグーグルでビュー時間を費やし、解決策を考えることができます(URLを返すなど)が、私はむしろ標準を使用してから何か新しいものを設計したいと思います。

もう一つご意見をお聞かせください。呼び出しのバッチを送信するプロトコルの機能について、アーキテクトランドの話を聞きました。いいか汚いと思いますか?(彼は彼らが醜いところだと思いますが、私はその時の使用を考えることができます)

アップデート

良い方法は、URLを含むremoterefオブジェクトをオブジェクトに返すことだと思います。そうすれば、小さなラップペンと小さなドキュメントだけになります。それでも私はこれを行うための一般的な方法があるかどうか知りたいです。

SMDの可能性

私のsmdでリターンタイプを指定する方法があるかもしれませんが、私のsmdリターンタイプで別のページへの参照を与える方法を考えている人はいますか?または、zend_json_smdクラスの適切な説明を知っている人はいますか?

4

1 に答える 1

0

JSON-RPCを介していかなる種類の参照も返すことはできません。

RPCはステートレスであり、ほとんどの開発者はその方法を好むため、そうするための標準はありません(afaik)。この単純さにより、JSON-RPCはSOAP(およびその他の混乱)よりもクライアント側の開発者にとって非常に望ましいものになっています。

ただし、戻り値に、リモートの「オブジェクト」プロキシを製造するための「キュー」として一部のJSONコンストラクトを処理する必要があるという規則を採用することもできます。たとえば、次のようになる変更されたJSONデシリアライザーを作成できます。

{
    "__remote_object": {
        "class":     "Some.Remote.Class",
        "remote_id": 54625143,
        "smd":       "http://domain/path/to/further.smd",
        "init_with": { ... Initial state of object ...  }
    }
}

次の方法でリモートオブジェクトプロキシに接続します。

  • にちなんで名付けられたプロトタイプを使用してローカルオブジェクトを作成しclassinit_with
  • smdURLのダウンロードと処理
  • APIを介して公開されたプロシージャごとに(オブジェクトプロキシ内に)ローカルプロキシメソッドを作成し、remote_id呼び出しごとにをサーバーに渡すようにします(サーバーは、どのリモートオブジェクトプロキシがどのサーバー側オブジェクトにマップされているかを認識します)。

このスキームは実行可能ですが、可動部分がたくさんあり、コードは通常のJSON-RPCよりもクライアント側ではるかに大きく複雑です。

JSON-RPC自体は十分に標準化されていないため、ほとんどの拡張機能(SMDでさえ)は、メソッド名とペイロードに関する単なる規則です。

于 2012-11-14T07:44:28.333 に答える