天天看點

《Programming Web Services with XML-RPC》

歡迎關注我的個人部落格blog.timene.com

由于項目對外提供API的需要,今天看了Dave Winer的《Programming Web Services with XML-RPC》,他是XML-RPC的發起者(之一)。

先說這本書:英語沒過六級的最好看翻譯版的(不知道有沒有),其中句式複雜,詞彙詭異,過了6級的硬着頭皮看應該還應付的過去;書的内容不錯,<Foreword>講了XML_RPC的起源和發展,<Preface>随便看看就成,<Chapter 1. Introduction>沒什麼印象了,對我來說最精彩的一章莫屬<Chapter 2 .The XML-PRC Protocol>,從Data Types,Request Format,到Response Format都很精彩,也是看完就能出成績的章節。後面的章節從Java, Perl, PHP, ASP各語言的角度對使用進行詳細分析,可惜我關心的PHP隻有短短半頁。

然後在網上詳細看了PHPRPC http://phprpc.org/zh_CN/,做了一個DEMO,發現還蠻好用的。

用戶端用js,代碼如下

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 

<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>RPC</title> 
<script type="text/javascript" src="../js/phprpc/compressed/phprpc_client.js"></script> 
<script type="text/javascript"> 
   var rpc = new PHPRPC_Client('../php/rpc.php', ['sha1','Hi']); 
    
   function $(id) { 
    return document.getElementById(id); 
   } 
    
   function showResult(result) { 
    $('sha1').value = result; 
   } 
    
   function sha1() { 
    var input = $('sha1').value; 
    $('sha1').value = "Loading..."; 
    rpc.Hi(input, showResult); 
   } 
</script> 
</head> 
<body> 
    <input type="text" id="sha1" /> 
    <input type="button" value="���� SHA1" οnclick="sha1()" /> 
</body> 
</html>
           

伺服器端用PHP,代碼如下

<?php 
require_once("phprpc/phprpc_server.php"); 
$server = new PHPRPC_Server(); 
function Hi($name)
{
   return 'Hello ' . $name; 
}
$server->add("sha1"); 
$server->add("Hi"); 
$server->start(); 
?>
           

總的來說,用動态語言實作RPC還是蠻友善的。