XML-RPC勉強中

http://www.donews.net/limodou/archive/2004/09/22/106517.aspxを見つけた。Pythonをかなりマスターしている中国の方の例です。他のページもすごく勉強になる。
XML-RPCJavaRMIとの決定的な違いは、XML-RPCはHTTPプロトコルを使用していて、RMIはJRMP(Java Remote Method Protocol)を使用している点で、だからこそXML-RPCは比較的容易に記述が出来る、という訳だ。
RMIは今の段階で、Sun自身も見放している、というか、IIOP(Internet Inter-ORB Protocol)を組み入れている。将来、他言語との連携を取りたいならばCORBAを選択すべきである、と言った方が良いのかもしれない。

クライアントからのメッセージを返すサーバ(xmlrpcMesServer.py)

01: import sys
02: import SimpleXMLRPCServer
03: class echoServ :
04:  def sendEcho(self,str) :
05:   return 'Serv>>'+str
06: class ServerProc :
07:  def setServ(self,host,port) :
08:   echoObj=echoServ()
09:   server=SimpleXMLRPCServer.SimpleXMLRPCServer((host,int(port)))
10:   server.register_instance(echoObj)
11:   print 'Listen on '+port
12:   server.serve_forever()
13: if __name__=='__main__' :
14:  if len(sys.argv)==3 :
15:   ser=ServerProc()
16:   ser.setServ(sys.argv[1],sys.argv[2])
17:  else :
18:   print "python xmlrpcMesServer.py <host_name> <port_number>"


例:
>python xmlrpcMesServer.py localhost 10000
Listen on 10000
上のサーバにメッセージを送るクライアント(xmlrpcMesClient.py)

01: import sys
02: import xmlrpclib
03: class CliProc :
04:  def setCli(self,host,port) :
05:   print 'Cli>>'
06:   line=sys.stdin.readline();
07:   server=xmlrpclib.ServerProxy("http://"+host+":"+port)
08:   echo=server.sendEcho(line)
09:   print echo
10: if __name__=='__main__' :
11:  if len(sys.argv)==3 :
12:   cli=CliProc()
13:   cli.setCli(sys.argv[1],sys.argv[2])
14:  else :
15:   print "python xmlrpcMesClient.py <host_name> <port number>"


例:
>python xmlrpcMesClient.py localhost 10000
Cli>>
This is TEST.                 #標準入力
Serv>>This is TEST.           #サーバからのエコー

この程度ならすぐ作れる。さてと実用的なものを作ろう。学期末は試験やレポートがあったりして中々趣味に時間が掛けられそうに無いのが、来るべき問題と言えば問題。