作者引言
- 很高兴啊,我们来到了接口定义语言(IDL)篇,RPC之基石,有了它,可以在各种各种语言中实现RPC通讯。
Slice 和 Protobuf 是什么?
IceRPC的核心是一个面向字节bytes
的RPC框架 : 它可以轻松地发送携带字节的请求requests
,并接收携带更多字节的响应responses
.
IceRPC以字节为中心的体系结构和API,正是我们移动字节时所需要的框架。然而,如果想为RPC服务定义一个类型化的网络API,并不特别方便.
在RPCs的上下文中,使用接口定义语言(IDL)来指定RPCs,是目前非常常见的. 这些
定义也称为客户端和服务器之间的契约
[contract
]
代码生成器,根据这些定义[contract
]生成代码,有如下功能:
- 通过选择的编程语言,提供类型化的API
- 通过将类型化数据(整数、字符串、structs等)编码/解码
encoding/decoding
到字节流中,或从字节服务器托管网流中解码,来实现此API,以方便定义友好的结构格式
使用IDL,完全不必担心如上细节。将数据结构,编码为可移植二进制格式和将其解码为可移植的二进制格式:
所有这些都由代码生成器,及其支持库来处理.
IceRPC 支持两个IDL,并完全实现对应序列化格式: Slice 与 Protobuf. 来看看,应该选哪个!
Slice
Slice是与IceRPC协同开发的现代IDL和序列化格式. 它充分利用了所有
IceRPC的特性,并且在代码大小和带宽使用方面都非常紧凑.
例如,IceRPC支持单向RPCs(One-Wey,发送后不理会),Slice提供单向操作
映射到这些单向RPCs. 而Protobuf RPC方法总是返回一个响应,不支持使用Protobuf发送单向RPCs.
可以将Slice视为IceRPC的默认IDL:除非有充分的理由使用Protobuf,否则请使用Slice.
Protobuf
Protobuf(Protocol Buffers)是Google创建的一种流行的IDL和序列化格式。这是一个常见的二进制JSON的替代方案,在谷歌内部广泛使用,目前国内也非常流行.
如果已经熟悉Protobuf,或者您的应用程序与使用或发送的其他应用程序交互
Protobuf消息,应该将IceRPC与Protobuf一起使用.
作者结语
- 从第一行翻译开始,查看各种翻译,比如 百度翻译,有道翻译,加上自已的理解服务器托管网,有点小累啊
- 翻译的不好,请手下留情,人也要成长的,谢谢
- 如果对我有点小兴趣,如可加我个人微信哦,大家交个朋友,一起探讨人生。
- 觉得还不错的话,点个赞哦
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
例子: 我们如果使用new_current_thread来创建tokio的协程运行runtime时, let rt = tokio::runtime::Builder::new_current_thread().enable_all().build().unw…