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 类型了,服务器会自动进行这种弱类型之间的转换。

你可能感兴趣的:(java,C++,c,DWR,phprpc)