Python Web 服务开发者: 针对 Python 的 XML-RPC

来源: 作者: 2007-12-03 出处:pcdog.com

python  soa  xml  操作系统  解决方案  
下一页 1 2 3 4 5 

  XML-RPC 是一种比 SOAP 更早的、简单的轻量级 Web 服务技术。这个月,Mike Olson 和 Uche Ogbuji 将讨论 Python 中的 XML-RPC 工具。

  XML-RPC 是 XML Web 服务的鼻祖。它是一个用于远程过程调用(remote procedure call,RPC)的简单规范,这种调用使用 HTTP 作为传输协议,并使用 XML 词汇表作为消息有效负载。由于 XML-RPC 非常简单(整个规范打印出来还不到十页纸),它已经变得非常流行,现在大多数语言都有了标准的或已经可用的 XML-RPC 实现。这些语言中包括 Python,它在版本 2.2 中就开始捆绑 xmlrpclib(Fredrik Lundh 开发的 XML-RPC 实现)了。Joe Johnston 发表在 IBM developerWorks 上的文章“Using XML-RPC for Web services”(请参阅 参考资料)在前三节讨论了 XML-RPC 的基础知识。如果您需要回顾一下这些基本技术,可以从那篇文章开始。在本文中,我们将重点讨论如何使用 Python 实现。要运行本文中的示例,您必须安装 Python 2.2。另外,在上一篇文章中,我们还讨论了 XML-RPC、SOAP 和其他分布式编程技术的性能对比。在作出部署 XML-RPC 的主要决定之前,您可能希望先阅读一下那篇文章。

  客户机

  编写 Python XML-RPC 客户机非常容易。模块 xmlrpclib 拥有所需的全部工具。为调用一个远程 XML-RPC 对象,您可以创建一个代理对象,它用 XML-RPC 把请求转发给服务器。代理对象的外观和感觉就和常规的 Python 对象一样,并且请求就是简单的函数调用。 清单 1(currtime.py)使用 XML-RPC 从 UserLand 服务器获取当前时间(请参阅 参考资料以了解更多关于这个服务的信息)。

  清单 1(currtime.py):使用 XML-RPC 获取当前时间

 import xmlrpclib
#Port 80 is the default
server = xmlrpclib.ServerProxy("http://time.xmlrpc.com")
currentTimeObj = server.currentTime
currtime = currentTimeObj.getCurrentTime()
print currtime
print currtime.value

  实际上被代理的是服务器,这个服务器是通过初始化 ServerProxy 类的一个实例建立起来的。我们传入远程服务器的完整 URL(您必须在其中包含 URL 模式“http://”)。端口还是通常的缺省值 80。如果远程服务器不在端口 80 上侦听,而是在端口 8080 上侦听,我们将使用“http://time.xmlrpc.com:8080”。服务器代理把它们托管的所有实际远程对象都当作常规属性,这样我们就可以得到名为 currentTime 的远程对象的句柄。现在,我们只需调用这个代理对象上的方法即可,它会返回当前时间。响应是一种特殊的 XML-RPC 类型,名为 DateTime。要获得这个对象的纯字符串表示,我们可以使用它的 value 属性。


更多内容请看PCdog.com--Python编程  Python相关文章  Web开发专题
下一页 1 2 3 4 5 
上一篇:使用 ElementTree,以 Python 语言处理 XML
下一篇:可爱的 Python:将 XML 和 Python结合起来