andot 发表于 2013-1-27 06:04:45

Re: 取代 DWR 的好东西—— PHPRPC for Java

下面是原来那个例子的 3.0 写法:

服务器端:

<%@ page import="org.phprpc.*" %> <% PHPRPC_Server phprpc_server = new PHPRPC_Server(); phprpc_server.add("min", Math.class); phprpc_server.add(new String[] { "sin", "cos" }, Math.class); phprpc_server.start(request, response); %>

大家会发现,这个跟原来差不多,但是类名已经改为 PHPRPC_Server 了,这样做是为了跟其它语言的名称统一。另外,request,response 和 session 这三个参数从构造方法中移除了,而取而代之的是,通过 start 方法传入 request 和 response。这样做的好处是。 PHPRPC_Server 创建并添加完发布方法后,可以放到 session 中保存(前提是 session 是保存在内存中的),然后从 session 中取出来后,可以直接用 start 方法发布。这样可以起到一定的加速作用。

<html><head><script type="text/javascript" src="phprpc_client.js"></script></head><body>min(<input id="a" type="text" />, <input id="b" type="text" />) <input id="minbtn" type="button" value="=" /> <input id="c" type="text" /><script type="text/javascript">var a = document.getElementById("a");var b = document.getElementById("b");var c = document.getElementById("c");var rpc_client = new PHPRPC_Client('http://localhost:8080/server.jsp', ['min']);document.getElementById("minbtn").onclick= function() {    c.value = "loading...";    rpc_client.min(a.value, b.value, function (result) {      c.value = result;    });}</script></body></html>
而客户端变得更加简单了。初始化时可以直接指定服务器地址,并且可以将远程方法名以数组的形式传递给客户端,这样就省去了跟服务器的首次通讯过程。而且这样做之后,后面也不再需要等待客户端准备好的状态了,所以,就再也不会看到 RPC not ready 的提示啦!另外,字符串类型也不需要事先转换成 Number 类型了,服务器会自动进行这种弱类型之间的转换。
页: [1]
查看完整版本: Re: 取代 DWR 的好东西—— PHPRPC for Java