python XML_RPC 的使用

来源:互联网 发布:java pfx证书读取 编辑:程序博客网 时间:2024/06/03 21:48
先说说什么是 XML 和 RPC 吧。
XML (Extensible Markup Language可扩展标记语言),如同前面的翻译,他是一种标记语言,用来标记和解释数据。比如我告诉你:“我34了”。你自然的能理解,我年龄是34岁。但是机器不了解。机器会想,你什么34了?鞋穿34的?头围34?。因此在写数据的时候为了表示这个数据是做什么的我们要为这个数据打上一个标识。因为年龄是我这个人的其中一个属性,所以我们把刚才的信息写成xml格式就是。
<目标>我
<年龄>34</年龄>
</目标>
我们用 <标签>表示开始, </标签> 结束。中间可以嵌套。XML格式应用非常广泛,像配置文件,数据文件等。因为所有数据都有他的属性和作用,而XML提供了一种最直观的标记方法。当然现在 json 用的更多些,有兴趣大家可以去看看。

RPC (Remote Procedure Call 远程过程调用),这个协议主要解决了不同机器间互相调用资源的问题。在网络不普及的时代,RPC的前身是 IPC (Interprocess communication 进程间通信) ,当时进程和进程没有联系,所以你在A进程写一个过程,B进程需要相同的过程时还要在B里再写一个,这造成了大量的时间浪费,因此,IPC 应运而生了。在网络时代,自然不同机器间的进程资源调用也是必要的啊,RPC就出现了。我们所说的 RPC 大多是一个概念,而实现需要 RPC框架。也就是写好的远程过程调用工具。比如我们要写的 XML_RPC。虽然很老了,但是也算是见证过一代RPC框架的发展。

import SimpleXMLRPCServer

开始看第一个例子,先建立一个服务器。


我们让 ls 和 ls_boom 都返回输入目录下的文件列表,区别是 ls 如果遇到错误输出 error!!! ,而ls_boom 直接把错误输出在屏幕上。在主程序体中,我们还要使用 register_function() 注册函数,才能在客户端调用。我们看执行结果:

这里仅仅做了一个简单的演示,在工作中我们的应用会更复杂,但是我们要指出的是。XML_RPC之所以叫 XML_RPC 因为传输的对象都被转换成了 XML 格式。因此在传递自定义的python对象时,会遇到一些问题。你需要在字典化的 XML 格式文件中找你的数据代码。

XML 的对手 json
XML 深入人心,但是也有着一定的弊端,比如:不同浏览器对于XML的解析方式不一样,因此要编写大量适应性代码。XML随着深度的加剧,文件格式的复杂程度会增长迅速,提取解析标签的代码一写一大堆,工作量有点大,特别是索引。因此XML 的份额很大程度上在被 json 慢慢侵占,后者格式更简练。对带宽的要求也更少。有空大家可以去看看。

原创粉丝点击