既是安安

蝴蝶飞不过沧海,谁忍心责怪?

AJAXRPC:快速简单的远程方法调用

AJAXPRC是快速、简单的Javascript远程方法调用。它允许你使用Javascript调用服务端方法,基于JSON数据协议,开源授权(LGPL),可同步和异步调用。

使用AJAXRPC,您可以像开发传统的C/S程序一样,来开发WEB程序,让WEB开发更简单和高效。

支持服务端语言:Java、.Net、PHP。
支持浏览器:IE、FireFox、Opera、Safari、Chrome。

使用AJAXRPC

首先,我们在服务端定义了一个类和静态方法:

 
  1. public class Test {
  2.     public static String sayHello(String name){
  3.         return "hello, " + name;
  4.     }
  5. }

注意:必须是公开的静态方法。

然后,我们使用AJAXRPC客户端,对服务端的方法进行调用。

注意:在调用RPC方法时,如果没有传递回调函数,则是同步调用;如果传递回调函数,则是异步调用。

同步调用

 
  1. <script type="text/javascript">
  2. ......
  3. try{
  4.     var obj = Test.sayHello('world!');
  5.     ......
  6. }catch(e){
  7.     //e.error 错误码
  8.     //e.message 错误描述
  9. }
  10. ......
  11. </script>

不传递回调函数,以try…catch来处理错误。在同步调用模式下,如果有网络错误、业务逻辑错误等,会抛出一个异常。

 

异步调用

 
  1. <script type="text/javascript">
  2. ......
  3. Test.sayHello('world!',
  4.     function(obj){          //success callback function
  5.         ......
  6.     },
  7.     function(error, message){    //fail callback function
  8.     }
  9.  
  10. );
  11. ......
  12. </script>

传递回调函数作为参数。如果只有一个回调函数, 则默认是成功的回调函数。

当我们通过Javascript调用服务端方法时,会传递一些参数,这些参数有一个约定的类型转换,如下表。

数据类型映射表

AJAXRPC支持基本数据类型、自定义类,不支持泛型。

JavascriptJava.NetPhp说明
NumberShort,short
Integer,int
Long,long
Float,float
Double,double
short,Int16
int,Int32
long,Int64
float
Double,double
Integer
Float
Double
数字类型之间没有严格的界限,可以任意转换
BooleanBoolean,booleanBoolean,boolBoolean 
StringStringString,stringString 
DateDateDateTimeString日期字符串”Y-m-d\TH:i:s“格式,php需要额外处理
ObjectHashMap,MapHashtable,IDictionaryObject 
ArrayArrayList,ListArrayList,IListArray 
nullnullnullNULL 

AJAXRPC是一个基于JSON数据协议的AJAX环境的RPC项目,优点是体积小,实现简单, 使用方便,能支持java\.net\php平台,而且是基于LGPL开源协议的,可以比较方便应用到项目中。

更多的细节,你可以去他的网站查看。


项目网站: http://ajaxrpc.com
中文翻译地址: http://ajaxrpc.com/cn/index.html

[既是安安]博客 季氏安安

本文作者:季氏安安[既是安安]博客采用 BY-NC-SA 协议进行授权. 转载请保留此链接,谢谢。)

原文链接:http://www.jsann.com/post/AJAXRPC-Quick_and_easy_remote_method_invocation.html

网站分类
Tags列表
最近发表
最新留言
友情链接
站点统计

Top