文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>dojo远程过程调用

dojo远程过程调用

时间:2007-01-11  来源:softwindow

远程过程调用(Remote Procedure Calls(RPC)),也称作远程方法调用( Remote Method Invocations)是客户端/服务器模式应用开发的主要技术之一。RPC允许开发者调用远程主机的方法。Dojo提供了一个基本的RPC客户端类,并且已经扩展,可以提供对JSON-RPC服务和Yahoo服务的访问。

我们假设已经拥有了一个小型的应用,希望执行服务器调用。出于简单起见,我们希望服务器执行的方法加法和减法操作,即add(x,y)和substract(x,y)。在RPC客户端,我们编写以下的代码:

add = function(x,y) { request = {x: x, y: y}; dojo.io.bind({ url: "add.php", load: onAddResults, mimetype: "text/plain", content: request }); }
subtract = function(x,y) { request = {x: x, y: y}; dojo.io.bind({ url: "subtract", load: onSubtractResults, mimetype: "text/plain", content: request }); }

由上代码可见,实现并不是十分复杂。这仅仅是一个小型的应用。如果我们的应用不是这么简单,而是包含了30个不同的请求,将会发生什么状况?我们不得不为不同的请求一次次编写这些相同的代码;每一次获得一个请求对象,指定URL,往往还要验证参数类型等等。这种做法烦琐无聊,而且常常导致错误。

Dojo的客户端通过对应用所需的远程方法的简单定义,生成客户端函数调用这些方法,从而简化了这整个过程。开发者只需要编写定义文件,初始化RPC客户端对象,所有这些远程方法便可以供开发者正常使用。

需要编写的定义,也称为简单方法描述(Simple Method Description(SMD))文件,是一个简单的JSON字符串,定义了RPC请求将要处理的URL,这个URL可供调用的一些方法,以及这些方法所需的参数。在我们这个范例中,这个定义文件的内容如下:

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

在完成描述的创建之后,代码将变得相当简单。这个定义可以以一个字符串,一个可以获取到这个定义的URL,或者是一个JavaScript对象的方式提供。

var myObject = new dojo.rpc.JsonService(definition);

以上就是客户端创建远程调用类的所有代码,剩下的工作就是对方法的调用了。

myObject.add(3,5);

当然,你可能会说:“相当漂亮,但是我还需要获取相加后的结果,而不仅仅是简单的调用”。获得结果的实现同样也很简单。我们执行了服务器的异步调用,myObject.add()调用的返回值是一个deferred对象(使用Twisted Python或MochiKit的用户对这个对象比较熟悉)。deferred对象允许开发者为结果事件附加一到多个的回调函数。我们的简单范例如下:

var myDeferred = myObject.add(3,5); myDeferred.addCallback(myCallbackMethod);

或者是更为简单直接的方式:

var myDeferred = myObject.add(3,5).addCallback(myCallbackMethod);

由上代码可见,我们为myObject.add()返回的deferred对象附加了myCallbackMethod作为一个回调函数。在这个范例中myCallbackMethod将通过使用参数8被调用。同时,我们也可以附加错误处理的回调函数到deferred对象。我们可以附加任意个回调函数,他们将被依次调用。

 
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载