xmlrpc与jsonrpc
在各種RPC技術中,我想應該以Sun的RPC最為著名,比較流行的網絡文件系統NFS就是建立在SUN RPC技術基礎之上的。
XMLRPC, 顧名思義(我總是喜歡這樣把問題簡單化,因為一個比較好的名字往往能概括出一個東西的本質,如果某個名字讓你摸不著頭腦,我推薦你放棄它,因為那個發明這 個東西的人都不知道它的實質,所以你也就沒有必要在其上浪費無謂的時間和精力。)就是應用了XML技術的RPC。那么什么是XML了?
XML和 RPC一樣也是一個東西的縮寫,這個東西就是eXtensible Markup Language,中文意思就是可擴展標記語言,標記語言就是那種用尖括號(<>)括來括去的那種語言,比如說HTML。XML的可擴展性也 體現在它只定義了語言的格式,而并沒有定義過多的關鍵字,也就是通常所說的標記(Tag),所以用戶可以自由地選擇定義標記。它的這種自由和簡單的語法規 則也使得它廣為流傳,被用來表示各種數據。熟悉Lisp語言(一種被稱為“一大堆”括號的語言)的同學可能覺得XML和Lisp語言有些類似,不同的是 XML用尖括號替代了Lisp語言中的圓括號(())。事實就是他們都是那么相似,那么多語言似乎都是等價的,不同的只是那些應用語言的人。
XML在XMLRPC充當什么角色呢?
答 案就是“交換的數據格式”。在Sun RPC中,調用雙方傳遞的數據是二進制的,而在XMLRPC中數據將是XML格式的。那么為什么用XML而不用二進制呢?我想一方面應該是為了兼容更多的 語言,因為這個世界上除了C/C++等編譯語言,還有很多類似python,perl,javascript等的腳本語言(最近有些文章也稱其為“動態語 言”,因為他們通常不需要自己管理內存),另一方面是為了隔離操作系統的差異,比如說Little Endian和Big Endian的差異等。基于種種原因,XMLRPC選擇了XML這種中間語言作為其信息的格式,然后由各個語言負責將其轉變成各自native(本土)的 數據類型。關于為了兼容各個語言所發明的中間語言還有IDL(Interface Definition Language:接口定義語言),它被用于CORBA接口的定義。
關于XMLRPC的更多信息請到它的官方網站去學習,其中有XMLRPC的規范(Specification),不過是相當得簡單的,因為XMLRPC本身就特別的簡單,不相信?好,那下面我就請大家和我一起來學習如何寫一個加法的XMLRPC。
???xml rpc是使用http協議做為傳輸協議的rpc機制,使用xml文本的方式傳輸命令和數據。一個rpc系統,必然包括2個部分:1.rpc client,用來向rpc server調用方法,并接收方法的返回數據;2.rpc server,用于響應rpc client的請求,執行方法,并回送方法執行結果。RPC是Remote Procedure Call的縮寫,翻譯成中文就是遠程過程調用,是一種在本地的機器上調用遠端機器上的一個過程(方法)的技術,這個過程也被大家稱為“分布式計算”,是為了提高各個分立機器的“互操作性”而發明出來的技術。
簡單描述: rpcclient的工作原理:rpcclient根據URL找到rpcserver -> 構造命令包,調用rpcserver上的某個服務的某個方法 -> 接收到rpcserver的返回,解析響應包,拿出調用的返回結果。 rpcserver的工作原理:啟動一個webserver(在使用內置的webserver的情況下) -> 注冊每個能提供的服務,每個服務對應一個Handler類 ->進入服務監聽狀態。 XML-RPC是一種基于Internet的遠程函數調用協議。 XML-RPC消息都是HTTP-POST請求。請求的主要部分的XML。服務器端執行后的返回結果同樣也是XML格式。 函數調用的參數可以是scalars, numbers, strings, dates等等;也可以是混合型的記錄和結構體。 Request請求樣式 關于請求頭 第一行的URI格式不是特定的。可以為空,如果服務器只處理XML-RPC請求甚至可以只是簡單的一個斜線。可是,如果服務器除了XML-RPC外還提供其他的HTTP請求,URI可以幫助我們把請求指向特定的XML-RPC服務。 User-Agent和Host項是必須的。 Content-Type的值必須是text/xml. Content-Length必須指定,而且必須是正確的值。 有效的格式 XML-RPC具有和XML一樣的有效格式,并且是一個結構。 必須包含一個值為字符型的子元素,用來表明被調用的方法。這個字符必須符合以下規定:大小寫字母、數字0-9、下劃線、點、冒號和斜線。至于怎么解釋這個字符串將有服務器端來決定。 Scalar s 值被嵌入類型標簽中,支持的類型如下表:| Tag | Type | Example |
| or | four-byte signed integer | -12 |
| ? | 0 (false) or 1 (true) | 1 |
| ? | string | hello world |
| ? | double-precision signed floating point number | -12.214 |
| ? | date/time | 19980717T14:08:55 |
| ? | base64-encoded binary | eW91IGNhbid0IHJlYWQgdGhpcyE= |
轉載于:https://www.cnblogs.com/yanhuaqiang/p/11578334.html
總結
以上是生活随笔為你收集整理的xmlrpc与jsonrpc的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 管理任务执行-如何制定有效的机制
- 下一篇: 收废品去公安局备案需要什么手续?