歡迎關注我的個人部落格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還是蠻友善的。