Python RPC | 连载 01 - RPC

简介: Python RPC | 连载 01 - RPC

一、RPC

RPC(远程过程调用) 既 Remote Procedure Call Protocol 的缩写,RPC 可以实现客户端像调用本地函数一样调用远程服务器的方法(服务)。

RPC 可以基于 TCP/UDP,也可以基于 HTTP 进行网络传输,那么 RPC 与 HTTP 接口有什么区别呢?

RPC 与 HTTP 接口在客户端使用方式不同

HTTP 接口只关注服务方,不关注客户端,只要客户端调用,返回数据即可,RPC 接口则要求客户端遵循服务端定义的服务的规则。

RPC 与 HTTP 接口面向的对象不同

RPC 的调用是面向方法的,而 HTTP 接口是面向资源的。

RPC 与 HTTP 接口的序列化协议不同

HTTP 接口通常使用的序列化协议是 JSON 或者 XML,而 RPC 接口使用的序列化协议则为 JSON-RPC 或者 XML-RPC。

RPC 的优势

HTTP 是无状态的,也就说建立连接获取到返回数据之后就会关闭连接,RPC 是可以保持长连接的。并且 RPC 基于 TCP 传输效率更高。

RPC 还可以基于 TCP 开发自定义的协议,自定义的协议可以优化数据的传输效率。

二、XML-RPC

XML-RPC 全称为 XML Remote Procedure Call,既 XML 远程过程调用,它是一套允许运行在不同的操作系统、不同环境的程序实现基于网络调用的规范和实现。

XML-RPC 使用 HTTP 作为传输协议,XML 作为传送信息的编码格式。XML-RPC 的定义尽可能的保持了简单,能够发送、处理和返回复杂的数据结构。

image.png

  • 客户端存根:存放服务端的地址消息,然后再将客户端的请求参数打包成网络消息,通过网络发送给服务端。
  • 服务端存根:接收客户端发过来的消息,将消息解包成具体的参数,再调用指定的本地方法。

xmlrpc

Python 中包含一个 xmlrpc 标准库,可以创建基于 XML 传输格式的 RPC 客户端和服务端。

首先创建一个 xmlrpc_server.py 文件,表示服务端。

from xmlrpc.server import SimpleXMLRPCServer
class Calculator:
    def add(self, x, y):
        return x + y
    def multiply(self, x, y):
        return x * y
    def subtract(self, x, y):
        return abs(x - y)
    def divide(self, x, y):
        return x / y
cal = Calculator()
xml_rpc_server = SimpleXMLRPCServer(("localhost", 8000))
xml_rpc_server.register_instance(instance=cal)
print("Listening on 8000")
xml_rpc_server.serve_forever()
复制代码

接着创建一个 xmlrpc_client.py 文件,代表客户端,在代码中对服务端提供的函数(服务)进行调用。

# Date: 2022/9/11
from xmlrpc import client
server = client.ServerProxy("http://localhost:8000")
print(server.multiply(5, 7))
复制代码

启动 xmlrpc_server.py,然后运行 xmlrpc_client.py 就可以输出结果 35

根据客户端的调用可以确定,RPC 服务不同于 HTTP 服务,RPC 服务时没有 URL 地址之类的,RPC 服务的调用必须使用指定的代理,而 HTTP 服务可以是不同的客户端进行调用。

RPC 服务强调的是调用效果,就像调用本地函数一样调用远程服务。RPC 服务在调用时必须保持函数名和参数格式一致才能调用成功。


相关文章
|
2月前
|
存储 Python
Python:利用XML-RPC实现简单的远端过程调用
Python:利用XML-RPC实现简单的远端过程调用
17 1
|
XML 安全 数据格式
Python XML-RPC 实现简单的远程调用过程
RPC 是 Remote Procedure Call 的缩写,翻译成中文为:远程方法调用。在 Python 中,我们可以使用 XML-RPC 协议创建自己的跨平台,独立于语言的服务器。XML Remote Procedure Call,即 XML 远程方法调用。XML-RPC 是一种远程过程调用方法,它使用通过 HTTP 传递的 XML 作为载体。 有了它,客户端可以在远程服务器上调用带参数的方法(服务器以 URI 命名)并获取结构化的数据。 简单的理解是:将数据定义为 XML 格式,通过 HTTP 协议进行远程传输。
|
安全 Dubbo 测试技术
软件测试|不会Python RPC,一篇文章教你入门
软件测试|不会Python RPC,一篇文章教你入门
软件测试|不会Python RPC,一篇文章教你入门
|
XML JSON Java
Python RPC | 连载 03 - JSONRPCServer
Python RPC | 连载 03 - JSONRPCServer
Python RPC | 连载 03 - JSONRPCServer
|
XML 数据格式 Python
Python RPC | 连载 02 - XMLRPCServer
Python RPC | 连载 02 - XMLRPCServer
Python RPC | 连载 02 - XMLRPCServer
|
23天前
|
人工智能 数据可视化 数据挖掘
探索Python编程:从基础到高级
在这篇文章中,我们将一起深入探索Python编程的世界。无论你是初学者还是有经验的程序员,都可以从中获得新的知识和技能。我们将从Python的基础语法开始,然后逐步过渡到更复杂的主题,如面向对象编程、异常处理和模块使用。最后,我们将通过一些实际的代码示例,来展示如何应用这些知识解决实际问题。让我们一起开启Python编程的旅程吧!
|
22天前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。