乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      json-rpc-java (一)

       grantbb 2005-07-13

      最近一直都是陰天,都說陽春三月,不想卻寒潮襲來。一年之計在于春,我不能睡懶覺!

      前幾天朋友介紹了一個好東東給我,JSON-RPC-Java。我研究了兩天,覺得如獲至寶,不敢獨享,覺得很有必要寫些東西,以饗讀者。

      JSON-RPC-Java 簡單說就是一個web 應用中間件,它允許DHTML直接訪問遠程的java應用,并無刷新的返回結果。表面上類似于Xml-RPC,或者遠程調用EJB。不過JSON-RPC-Java的實現要簡單得多,而且最重要的一點,它在客戶端是且僅是使用Javascript 。

      做web程序的人一定不會陌生  XMLHttp。所以你也許已經猜到 JSON-RPC-Java 框架最底層的實現技術。沒錯,JSON-RPC-Java 正是使用 XMLHttp 與服務端交換數據并表現出頁面無刷新的效果。XMLHttp 我不多說,Apple的網站上有一個比較大概的介紹,參見這里,Mozilla的文檔就更詳盡了,參見這里(很意外,我竟然沒有在微軟的MSDN上找到一個比較系統的文檔)。

      從我對現在的所謂新技術的理解,通常是有一個很磅礴的名號,然后便是各巨頭一番你捧我喝,實際上卻無非是新瓶裝老酒。現有的技術套上標準或者規(guī)范的外衣,再加上商業(yè)吵作,業(yè)界就血雨腥風一把。各巨頭為了自己的商業(yè)利益,訂立的繁雜的標準常常讓我等望而反胃。

      明確了最底層的實現,再看JSON-RPC-Java 就有了一個本質的認識,這有助于我們一件件撥開它神秘的外衣。有時候對待技術就好像對待女人,我們通常在已經了解或者相信她有著誘人的身體的時候,才會樂于或者有耐心對待脫衣的前戲。

      外套 JSON

      JSON (JavaScript Object Notation) 很顯然是 JSON-RPC-Java 的基礎,它是基于javascript的一種簡單易讀的輕量級數據交換格式。它的主頁在這里。

      如果不熟悉Javascript,那么理解JSON則有一些困難。在這里我要先引入“直接量(Literals)”這個javascript概念。很不幸,我很難找到一篇中文的文章介紹它,好不容易在Lycos的中文網站上發(fā)現一份,但是只能通過 google 的網頁快照來訪問了,參見 《JavaScript 的直接量》。

      簡單說,如果我們要 javascript 創(chuàng)建一個對象,通常情況下可能會這樣寫:

          function Person(name, sex) {
              this.name = name;
              this.sex = sex;
          } 
          var p = new Person(‘zhaozexin‘, 1);
          alert(p.name);


      從Javascript 1.2開始,創(chuàng)建一個對象有了一種相當快捷的語法,如下:

        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的代碼去解析并執(zhí)行。所以eval 函數允許 javascript 源代碼的動態(tài)執(zhí)行。例如,下面的代碼創(chuàng)建了一個包含 Date 對象的新變量 mydate :eval("var mydate = new Date();")。那么如果我們把“直接量” 作為參數傳遞給 eval函數,那么就可以動態(tài)的創(chuàng)建各式各樣的對象了。

      更詳細的直接量的介紹,可以閱讀 《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的客戶端)通過XMLHttp 交換數據,而數據的格式便是javascript“直接量” 的格式,java服務端分析請求,執(zhí)行然后依據同樣的格式返回結果。

      很明顯,這就是 Xml-RPC 的 javascript 版本。javascript 語法的靈活省卻了解析xml的繁雜。javascript 讓我如何能不愛你!

      外套已經脫完。下次我們深入剖析 JSON-RPC。

        本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發(fā)現有害或侵權內容,請點擊一鍵舉報。
        轉藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多