JSON-RPC-Java (一)

JSON-RPC-Java (一)

6081人阅读 评论(6) 收藏 举报
    今天是情人节,也是我的生日,最应该过节的人却独守空房,真是冷冷清清凄凄惨惨凄凄。不过母亲特意为了订了一个婵娟的蛋糕,我和父母还有婆婆一起吃了顿生日晚宴,这岂非也是一种幸福。

    前几天朋友介绍了一个好东东给我, JSON-RPC-Java。我研究了两天,觉得如获至宝,不敢独享,觉得很有必要写些东西,以飨读者。

    JSON-RPC-Java 简单说就是一个web 应用中间件,它允许DHTML直接访问远程的java应用,并无刷新的返回结果。表面上类似于Xml-RPC,或者远程调用EJB。不过JSON-RPC-Java的实现要简单得多,而且最重要的一点,它在客户端是且仅是使用Javascript 。

    做web程序的人一定不会陌生   XMLHttpRequest。所以你也许已经猜到 JSON-RPC-Java 框架最底层的实现技术。没错,JSON-RPC-Java 正是使用 XMLHttpRequest 与服务端交换数据并表现出页面无刷新的效果。XMLHttpRequest 我不多说,apple的网站上有一个比较大概的介绍,参见 这里,Mozilla的文档就更详尽了,参见 这里(很意外,我竟然没有在微软的MSDN上找到一个比较系统的文档)。

    从我对现在的所谓新技术的理解,通常是有一个很磅礴的名号,然后便是各巨头一番你捧我喝,实际上却无非是新瓶装老酒。现有的技术套上标准或者规范的外衣,再加上商业吵作,业界就血雨腥风一把。各巨头为了自己的商业利益,订立的繁杂的标准常常让我等望而反胃。

    明确了最底层的实现,再看JSON-RPC-Java 就有了一个本质的认识,这有助于我们一件件拨开它神秘的外衣。就好像对待女人,我们通常在已经了解或者相信她有着诱人的身体的时候,才会乐于或者有耐心对待脱衣的前戏。

    外套 JSON

    JSON (JavaScript Object Notation) 很显然是 JSON-RPC-Java 的基础,它是基于javascript的一种简单易读的轻量级数据交换格式。它的主页在 这里

    如果不熟悉Javascript,那么理解JSON则有一些困难。在这里我要先引入“直接量(Literals)”这个javascript概念。很不幸,我很难找到一篇中文的文章介绍它,好不容易在Lycos的中文网站上发现一份,但是只能通过 google 的网页快照来访问了,参见 《 JavaScript 的直接量》。

    简单说,如果我们要 javascript 创建一个对象,通常情况下可能会这样写:
    
    function Person(name, sex) {
        this.name = name;
        this.sex = sex;
    } 
    var p = new Person('zhaozexin', 1);
    alert(p.name);

    从Javascript 1.2开始,创建一个对象有了一种相当快捷的语法,如下:
     var p = {"name": 'zhaozexin', "sex" : 1};
       
    这一句就是对象的“直接量”。这样的语法很象java中的Map里toString()方法的输出。name 就是 key, 'zhaozexin' 就是 value。和Map一样,value除了可以是字符串或者数字以外,还可以是数组,函数或者其他对象。 再说说数组,常见的数组声明如下:
    var a = new Array();
    a[0] = 'zhaozexin';
    a[1] = 1;
    或者 var a = new Array('zhaozexin', 1);

    数组的直接量 如下: var a = ['zhaozexin', 1];  是否觉得也很象 ArrayList 的toString() 方法输出呢。javascript 何以叫 Javascript,那不是没有道理的。

    除了代码的简化以外,直接量还有什么好处呢。我们就要关注 eval (codeString) 这个javascript内置函数了,它接受一个字符串参数,当作javascript的代码去解析并执行。所以eval 函数允许 javascript 源代码的动态执行。例如,下面的代码创建了一个包含 Date 对象的新变量 mydate :eval("var mydate = new Date();")。那么如果我们把“直接量” 作为参数传递给 eval函数,那么就可以动态的创建各式各样的对象了。

    更详细的直接量的介绍,可以阅读 《Javascript 权威指南》,我强烈推荐这本书给所有从事web编程的同行。
    
    现在 JSON 应该容易理解了,它的语法实际就是 javascript 的“直接量”。所以 JSON 的介绍上这样写:
    
     JSON is a text format that is completely language independent but uses conventions that are familiar to programmers of the C-family of languages, including C, C++, C#, Java, JavaScript, Perl, TCL, and many others. These properties make JSON an ideal data-interchange language.

     这诸多的语言实现 JSON 的工作就相当简单了,就仿佛做一个字符串处理程序一样。那么JSON-RPC-Java 我们就可以猜出了大概了:
      由java实现一个JSON的服务端与web程序中的 javascript(实现JSON的客户端)通过XMLHttpRequest 交换数据,而数据的格式便是javascript“json” 的格式,java服务端分析请求,执行然后依据同样的格式返回结果。很明显,这就是 Xml-RPC 的 javascript 版本 。javascript 语法的灵活省却了解析xml的繁杂。javascript 让我如何能不爱你!

    外套已经脱完。IT界永远都是春天,衣服不会穿很多的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值