阅读更多

19顶
11踩

Web前端

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

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

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

最新版本: 1.0
最近更新: 2010-10-10

使用AJAXRPC

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

public class Test {
	public static String sayHello(String name){
		return "hello, " + name;
	}
}

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

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

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

同步调用

<script type="text/javascript">
......
try{
    var obj = Test.sayHello('world!');
    ......
}catch(e){
    //e.error 错误码
    //e.message 错误描述
}
......
</script>

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

异步调用

<script type="text/javascript">
......
Test.sayHello('world!',
    function(obj){          //success callback function
        ......
    },
    function(error, message){    //fail callback function
    }

);
......
</script>

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

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

数据类型映射表

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

Javascript Java .Net Php 说明
Number Short,short
Integer,int
Long,long
Float,float
Double,double
short,Int16
int,Int32
long,Int64
float
Double,double
Integer
Float
Double
数字类型之间没有严格的界限,可以任意转换
Boolean Boolean,boolean Boolean,bool Boolean  
String String String,string String  
Date Date DateTime String 日期字符串”Y-m-d\TH:i:s“格式,php需要额外处理
Object HashMap,Map Hashtable,IDictionary Object  
Array ArrayList,List ArrayList,IList Array  
null null null NULL  


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

 

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

 

来自: ajaxrpc
19
11
评论 共 53 条 请登录后发表评论
53 楼 jxpath 2012-04-18 12:58
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
引用
http://code.google.com/p/json-rpc-for-java/
是级联调用的json-rpc

http://www.iteye.com/news/22527
是支持压缩传输的json-rpc

这个的优势是什么呢?
52 楼 jxpath 2011-09-02 21:25
引用

引用
引用
引用
引用
引用
引用


引用

还是
http://www.iteye.com/news/22527
更好





51 楼 JavaSon 2011-06-21 11:04
不知道AjaxRPC开发者知不知道静态方法和实例方法的差别?!!
静态方法在内存始终都有一份拷贝,也就意味着内存始终被耗用,无法释放,同时静态方法不利于调试,随便修改一下,就容易导致调试的时候重启,还有静态方法是无状态的,对于类实例方法而言可以基于类产生的对象而状态化,种种设计上的确定,最终决定了这玩意儿不可能走得很远,打一开始就是错误的设计!

我不使用这个玩意儿,我的项目组也绝对不使用这个玩意儿!

————javason 2011/6/21
50 楼 lzl836 2011-01-27 11:30
还是应该给予支持和鼓励的
49 楼 dingchao.lonton 2010-10-15 16:20
真是重复发明轮子
48 楼 三问飞絮 2010-10-13 23:48
用JSON协议的话,如果两个互相有引用的对象,怎么表示?
如School中有students数组,Student对象有一个School有引用。
47 楼 kimmking 2010-10-13 15:21
fcrong 写道
kimmking 写道
hax 写道
基本上没啥意思。。。唉。。。


我想了想,可以改得稍微有点意思。


呵呵, 如果你用一下, 你会觉得, 非常有意思~


http://code.google.com/p/rpcfx/
我几年前做过类似的东西,不过我的侧重点是rpc,不光是ajax
46 楼 yangchunhe 2010-10-13 15:13
悲哀啊 !!
45 楼 fcrong 2010-10-13 10:58
kimmking 写道
hax 写道
基本上没啥意思。。。唉。。。


我想了想,可以改得稍微有点意思。


呵呵, 如果你用一下, 你会觉得, 非常有意思~
44 楼 kimmking 2010-10-13 10:44
hax 写道
基本上没啥意思。。。唉。。。


我想了想,可以改得稍微有点意思。
43 楼 oak2008 2010-10-13 10:04
smilerain 写道
一群只会用别人轮子的人成天笑别人发明轮子

用所谓的“发明”来误导大众就不对了。
42 楼 hax 2010-10-12 22:54
基本上没啥意思。。。唉。。。
41 楼 smilerain 2010-10-12 22:47
一群只会用别人轮子的人成天笑别人发明轮子
40 楼 oak2008 2010-10-12 16:50
全部使用static,根本就没有使用面向对象的思想,全部使用static,请问如何维护一些提交的form的变量呢。
39 楼 fcrong 2010-10-12 09:53
json-rpc-for-java是个非常不错的产品, 有需要的朋友可以去多了解下~

使用上, 只能说各有千秋, 同类的RPC产品其实很多, 大家可以多了解下这方面.

使用RPC产品, 好处是可以简单配置就可以发布服务端业务逻辑,
让B/S编程跟C/S一样的简便和高效
38 楼 jxpath 2010-10-12 09:38
fcrong 写道
littleJava 写道
JsonRPC和这个比有什么区别呢?


这个就是JSON-RPC的一个实现

国产的东西,还是非常值得鼓励的,虽然java部分没有http://code.google.com/p/json-rpc-for-java/更加精巧和方便,虽然他的js压缩后是12k是google上的json-rpc-for-java压缩版本的4倍大-------还是很非常值得鼓励的
37 楼 fcrong 2010-10-12 09:02
kongxx 写道
重复发明轮子,这不就是DWR么


说句不中听的话, 中国的技术还没到能完全独立重新的地步, 现在都是模仿复制, 能有所创建已经算不错了.

AJAXRPC也不是一个全新的技术, 为什么要做? 有如下几点:
1.使用的数据协议: JSON.
   相对与DWR, 它是完全自定义的数据协议, 你可以对比下同样的数据, DWR的数据体积有多大, 据我测试, 是JSON的2倍以上.

2.多语言平台支持: JAVA, .NET, PHP

3.精简的配置:
   只是一个service标签, 没有更多复杂配置, 发布一个RPC接口非常简单和容易控制

4.设计思想
   AJAXRPC认为, RPC发布是为了对客户端开放一个业务接口, 就是怎么简单的事, 所以不支持实例方法, 不支持泛型等更复杂的服务端类型.
   所以需要静态的公开方法, 而不是实例方法, 这样可以避免一些对象实例化的问题, 把发布的环节和内容控制起来.

有了设计思想, 所以才会那样实现.
36 楼 yvfish 2010-10-12 08:39
让我想起了当年的buffalo
35 楼 kongxx 2010-10-12 07:49
重复发明轮子,这不就是DWR么
34 楼 fcrong 2010-10-11 22:05
littleJava 写道
JsonRPC和这个比有什么区别呢?


这个就是JSON-RPC的一个实现

发表评论

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

相关推荐

  • GBase8s数据库CLOSE DATABASE 语句

    使用 CLOSE DATABASE 语句关闭当前数据库的隐式连接。该语句是 SQL ANSI/ISO 标准的扩展。 用法 当发出 CLOSE DATABASE 语句时,紧接其后您仅能发出以下 SQL 语句: ⚫CONNECT ⚫CREATE DATABASE ⚫DATABASE ⚫DROP DATABASE ⚫DISCONNECT (这里,只有在执行 CLOSE DATABASE 之前存在显式连接的情况下,DISCONNECT 语句才有效。) 在删除当前数据库之前发出 CLOSE DATABASE 语句。

  • “无法删除数据库,因为该数据库当前正在使用“问题解决

    "无法删除数据库,因为该数据库当前正在使用"问题解决

  • 无法删除数据库

    原文链接:http://blog.sina.com.cn/s/blog_62596ff60101ro8n.html删除数据库的方法有两种:1.在左边的列表中找到要删除的那一个数据库,右键,删除,这里要注意的是:上图中黄色方框区域内,都要勾上,否则当前数据库被占用,不能关闭。2.在新建查询中编写删除数据库(模式)的代码,按照书本上的例子 DROP SCHEMA(或DATABASE) ZHANG CA...

  • 【问题】“无法删除数据库,因为该数据库当前正在使用“问题解决

    "无法删除数据库,因为该数据库当前正在使用"问题解决 use master go declare @dbname sysname set @dbname = 'BigValuesTest' --这个是要删除的数据库库名 declare @s nvarchar(1000) declare tb cursor local for select s = 'kill ' + cast(spid as varchar) from

  • SQL Server无法删除数据库,因为该数据库当前正在使用的解决办法

    SQL Server无法删除数据库 “score”,因为该数据库当前正在使用的解决办法问题描述今天在SQL Server删除一个数据库的时候报错,内容如下: 消息 3702,级别 16 无法删除数据库 “score”,因为该数据库当前正在使用。 我的SQL原语句是这样的drop database score;上网搜了一下,找到了解决办法,也在这里记录一下。 解决方法一般我们删除数据库的语

  • "无法删除数据库,因为该数据库当前正在使用"问题解决

    原文:点击打开链接 USE MASTER GO DECLARE @dbname SYSNAME SET @dbname = 'databasename' --这个是要删除的数据库库名 DECLARE @s NVARCHAR(1000) DECLARE tb CURSOR LOCAL FOR SELECT s = 'kill ' + CAS

  • sqlserver"无法删除数据库,因为该数据库当前正在使用"问题解决

    <br /> <br />执行脚本:<br />use   master  <br />  go  <br />   <br />  declare   @dbname   sysname  <br />  set   @dbname='databasename' --这个是要删除的数据库库名  <br />   <br />  declare   @s   nvarchar(1000)  <br />  declare   tb   cursor   local   for  <br />  select

  • mysql删除数据库失败17_"无法删除数据库,因为该数据库当前正在使用"问题解决...

    以前刚学数据库的时候比较苦恼这个问题,今天删除的时候又看见了,正好一起记录一下:图形化方法:命令行方法:use mastergodeclare @dbname sysnameset @dbname = 'BigValuesTest' --这个是要删除的数据库库名declare @s nvarchar(1000)declare tb cursor localforselect s = 'kill ...

  • 无法删除数据库,因为该数据库正在使用

    删除数据库操作的时候,删除失败并且抛出异常, “无法删除数据库xxx, 因为该数据库当前正在使用!” 下方SQL总databasename为需要删除的数据库库名 。 USE MASTER GO DECLARE @dbname SYSNAME SET @dbname = 'databasename' DECLARE @s NVARCHAR...

  • SQL无法删除数据库解决方法。

    消息 3702,级别 16 无法删除数据库 “Sale_Management_Subsystem”,因为该数据库当前正在使用。 我们一般课本上学到的都是直接使用下面的代码 Drop database Sale_Management_Subsystem 如果使用master 数据库就能删掉了 USE MASTER GO DROP DATABASE Sale_Management_Subsystem ...

  • sqlserver “无法删除数据库,因为该数据库当前正在使用“问题解决【引用‘博客园’毒逆天的文章】

    图形化方法:命令行方法:123456789101112131415161718192021222324use mastergodeclare@dbname sysnameset@dbname ='BigValuesTest'--这个是要删除的数据库库名declare@s nvarchar(1000)declaretbcursorl...

  • postgresql 无法删除数据库的解决方法

    1.先查看是哪些进程在引用 (******表示你的数据库名) ps -ef | grep ****** | grep -v grep   2.然后kill掉这些进程   3.dropdb ******

  • SQL Server无法删除数据库 "xxx",因为该数据库当前正在使用(如何删除一个Sql Server数据库)

    1.一般情况下删除一个Sql Server数据库: 新建查询→输入“drop database xxx(xxx为数据库名)”→执行。 但有时会报错:无法删除数据库 &quot;lib&quot;,因为该数据库当前正在使用。 2.解决办法 USE master GO drop database xxx; 执行如上代码,代码的意思就是使用master数据库,那么我们要删除的数据库就不会说正在使用了,删除语...

  • mysql数据库删不掉_win7系统删除MYSQL数据库提示操作无法完成的解决方法

    很多小伙伴都遇到过win7系统删除MYSQL数据库提示操作无法完成的困惑吧,一些朋友看过网上零散的win7系统删除MYSQL数据库提示操作无法完成的处理方法,并没有完完全全明白win7系统删除MYSQL数据库提示操作无法完成是如何解决的,今天小编准备了简单的解决办法,只需要按照1、数据库删除不了,要先看一下是否打开了该数据库的文件夹,如果打开了,要先关闭该数据库的文件夹; 2、如果不是文件夹的原因...

  • DataStage开发规范

      DataStage开发规范1.1.    简介本文档对采用DataStage工具开发ETL程序的命名及代码编写进行规范性描述。1.2.    命名规范ETL的类别说明 etltype 说明

  • 增加一个判断内存变量存在的函数

       笔者在开发应用系统中曾经用FoxPro的on error语句编写了一个判断内存变量的函数Exist(),非常方便实用,在此介绍给大家。  设计思路:先假设内存变量存在,然后将待判断的内存变量赋值给一个临时变量,若该内存变量不存在,则执行时必将出错,出错时将执行on error语句,只要在on error处理的函数中修改内存变量存在与否的标志即可。为了不影响调用程序的错误处理,保证该函数的

Global site tag (gtag.js) - Google Analytics