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

服务器端:

[code:1] <%@ 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); %> [/code:1] 大家会发现,这个跟原来差不多,但是类名已经改为 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 类型了,服务器会自动进行这种弱类型之间的转换。
评论
tigerguo 2007-07-05
哦,是我的js版本不对
tigerguo 2007-07-05
范例运行失败,有大小写错误,改了还是不行.
发表评论

您还没有登录,请登录后发表评论

andot
搜索本博客
最近加入圈子
最新评论
评论排行榜