01
介绍
Go 语言标准库 net/rpc 默认采用 encoding/gob 包编解码传输数据,gob 编解码方式仅适用于 Go 应用,如果需要跨语言远程调用,可以指定支持跨语言的其他编解码方式,比如 protobuf,或使用 net/rpc 的子包 net/rpc/jsonrpc,它支持JSON-RPC 1.0,通过 json 格式传输数据。
02
Go 语言 net/rpc/jsonrpc 标准库
jsonrpc 是基于 TCP 协议,不支持 HTTP 协议。jsonrpc 采用 JSON 编解码传输数据,而不是采用 gob 编解码方式。其他方面和 net/rpc 一样,可以通过阅读「Go 使用标准库 net/rpc 包」了解相关内容。
03
net/rpc/jsonrpc 怎么使用?
通过一个简单的示例,我们演示 Go 语言标准库 net/rpc/jsonrpc 的使用方法。
RPC 方法:
服务提供方定义一个可导出的 User 对象和一个符合 RPC 方法定义规则的 Register 方法。
服务提供方:
服务提供方注册 user 对象,创建基于 TCP 协议的运行在单个连接上的 JOSN-RPC 服务器。
服务调用方:
服务提供方注册 user 对象后,服务调用方就可以调用 user 对象的 user.Register 方法。调用方法之前,先连接一个指定网络协议和地址的 JSON-RPC 服务,返回一个新创建的客户端。然后,使用客户端调用 user.Register 方法,传递参数,等待返回结果。
04
总结
本文先介绍了 Go 语言标准库 net/rpc/jsonrpc 的编解码方式和功能。即使用 json 编解码传输数据,提供跨语言远程调用的功能。然后,通过一个简单示例来演示了 net/rpc/jsonrpc 的使用方法。