何為XML-RPC?
XML-RPC 是 XML Web 服務的鼻祖。它是一個用於遠端程序呼叫(remote procedure call,RPC)的簡單規範,這種調用使用 HTTP 作為傳輸協議,並使用 XML 詞彙表作為訊息承載。由於 XML-RPC 非常簡單(整個規範列印出來還不到十頁紙),它已經變得非常流行,現在大多數語言都有了標準的或已經可用的 XML-RPC 實現。這些語言中包括 Python,它在版本 2.2 中就開始捆綁 xmlrpclib(Fredrik Lundh 開發的 XML-RPC 實現)了。 |
首先,我們打算將CMS(Context Manager System)系統進行Python的改造,第一件事,先向外公開版本的變化,可供遠程調用。
import SimpleXMLRPCServer #定義自己的CMS類 class MyCMS: def getVersion(self):#向外公開版本的方法 return "Powerd By Python 0.1a" cms = MyCMS() server = SimpleXMLRPCServer.SimpleXMLRPCServer(("localhost", 8888)) server.register_instance(cms) print "Listening on port 8888" server.serve_forever()#伺服器執行,並監聽8888連接埠 |
執行後:
此主題相關圖片
用戶端調用代碼,獲得最新的版本資訊
import xmlrpclib server = xmlrpclib.ServerProxy("http://localhost:8888" version = server.getVersion() print "version:"+version |
執行後:
此主題相關圖片
總結:
比同等的JAVA實現代碼量明顯減少,使精力能夠更多的集中到系統本身中來
JAVA的一個XmlRpc實現:http://ws.apache.org/xmlrpc/
JAVA調用代碼如下:
XmlRpcClient xmlrpc = null; try { xmlrpc = new XmlRpcClient("http://localhost:8888/";); } catch (MalformedURLException e) { e.printStackTrace(); } Vector params = new Vector(); try { String result = (String) xmlrpc.execute("getVersion", params); System.out.println(result); } catch (XmlRpcException e1) { e1.printStackTrace(); } catch (IOException e1) { e1.printStackTrace(); } |
執行效果
此主題相關圖片
想瞭解更多,請到這裡:
http://www.python.org/doc/current/lib/module-xmlrpclib.html
http://www.python.org/doc/current/lib/module-SimpleXMLRPCServer.html