« クロスドメイン呼び出し | トップページ | IFrameを使った呼び出し »

2007年4月30日 (月)

RPC呼び出し

dojo.io.bindを用いるのではなく、dojo.rpc.JsonServiceを用いることで、JSONで提供されるサービスをRPCのようなAPIにより呼び出すことができる。内部的にはdojo.io.bindを用いている。

RPC呼び出しを用いるときは、Simple Method Description (SMD)と呼ばれるRPC呼び出しの定義を記述したファイルを作成する。SMDファイルは以下のようにJSON形式で記述する。

SMDファイルの形式では、serviceTypeは"JSON-RPC"を指定する。serviceURLは呼び出し先のURLを指定する。methodsには、各メソッド名とパラメータ名、パラメータの型を指定する。

{
  "serviceType": "JSON-RPC",
  "serviceURL": "rpcProcessor.php",
  "methods":[
    {
      "name": "add",
      "parameters":[
        {"name": "x", "type":"STRING"},
        {"name": "y"} 
      ]
    },
    {
      "name": "subtract",
      "parameters":[
        {"name": "x"},
        {"name": "y"} 
      ]
    }
  ]
}

RPC呼び出しを実行するときは、まず作成したSMDファイルを指定して、dojo.rpc.JsonServiceをインスタンス化する。

var myObject = new dojo.rpc.JsonService("http://localhost/definition.smd");

SMDファイルを作らずに、JSONオブジェクトを直接渡してJsonServiceをインスタンス化することもできる。JSONオブジェクトを直接渡すときは、smdObjの値としてJSONオブジェクト(以下の例ではjsonSmdDefinition)を指定した値を渡す。

var myObject = new dojo.rpc.JsonService({smdObj: jsonSmdDefinition});

JsonServiceをインスタンス化した後は、作成したオブジェクトに対してメソッド呼び出しを実行する。呼び出すだけでなく、結果を受け取るにはaddCallbackメソッドを用いて、コールバック関数を指定する。コールバック関数で指定したfunctionでは、引数として呼び出し結果を受け取ることができる。

var myObject = new dojo.rpc.JsonService("http://localhost/definition.smd");
var myDeferred = myObject.add(3,5).addCallback(myCallbackMethod);

addCallbacksを用いことで、コールバック関数だけでなく、エラー時に呼び出す関数も指定できる。

var myObject = new dojo.rpc.JsonService("http://localhost/definition.smd");
var myDeferred = myObject.add(3,5).addCallbacks(myCallbackMethod, errCallbackMethod);

« クロスドメイン呼び出し | トップページ | IFrameを使った呼び出し »

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/232684/6264278

この記事へのトラックバック一覧です: RPC呼び出し:

« クロスドメイン呼び出し | トップページ | IFrameを使った呼び出し »