RPC是Remote Procedure Call的縮寫,翻譯成中文就是遠程方法調用,是一種在本地的機器上調用遠端機器上的一個過程(方法)的技術,這個過程也被你們稱爲「分佈式計算」,是爲了提升各個分立機器的「互操做性」而發明出來的技術。python
XML-RPC的全稱是XML Remote Procedure Call,即XML遠程方法調用。安全
它是一套容許運行在不一樣操做系統、不一樣環境的程序實現基於Internet過程調用的規範和一系列的實現。
這種遠程過程調用使用http做爲傳輸協議,XML做爲傳送信息的編碼格式。
Xml-Rpc的定義儘量的保持了簡單,但同時可以傳送、處理、返回複雜的數據結構。
Python下的XML-RPC:服務器
一、類庫:xmlrpclib 通常使用在客戶端,這個模塊用來調用註冊在XML-RPC服務器端的函數,xmlrpclib並非一個類型安全的模塊,沒法抵禦惡意構造的數據,這方面的一些處理工做須要交給開發者本身。數據結構
二、類庫:SimpleXMLRPCServer 通常是用在服務器端,這個模塊用來構造一個最基本的XML-RPC服務器框架框架
三、構造一個基本的XML-RPC Server並啓動:D:\Program Files\eclipse-workspace\HessianPro\basicXmlRPC\XmlRPCserver.pyeclipse
#!/usr/bin/python # -*- coding:UTF-8 -*- from SimpleXMLRPCServer import SimpleXMLRPCServer from SimpleXMLRPCServer import SimpleXMLRPCRequestHandler class XmlRPCserver(): def datasum(self,x,y): print u'加法結果:',x+y return x+y def datadiv(self,x,y): print u'除法結果:',x/y return x/y if __name__ == '__main__': rpc_obj=XmlRPCserver() server=SimpleXMLRPCServer(("localhost", 8000)) server.register_function(rpc_obj.datasum, 'datasum') #註冊函數 server.register_function(rpc_obj.datadiv,'datadiv') print "Listening on port 8000..." server.serve_forever()# 保持等待調用狀態
四、構造一個基本的XML-RPC Client: D:\Program Files\eclipse-workspace\HessianPro\basicXmlRPC\XmlRPCclient.py分佈式
#!/usr/bin/python # -*- coding:UTF-8 -*- import xmlrpclib sp=xmlrpclib.ServerProxy('http://localhost:8000') print sp.datasum(1,2) print sp.datadiv(4,2)