首页 > 其他分享 >.Net 8.0 下的新RPC,IceRPC之接口定义语言 [Slice] VS [Protobuf]

.Net 8.0 下的新RPC,IceRPC之接口定义语言 [Slice] VS [Protobuf]

时间:2024-03-23 10:22:05浏览次数:27  
标签:8.0 Slice Protobuf IceRPC RPC IDL 字节

作者引言

  • 很高兴啊,我们来到了接口定义语言(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一起使用.

作者结语

  • 从第一行翻译开始,查看各种翻译,比如 百度翻译,有道翻译,加上自已的理解,有点小累啊
  • 翻译的不好,请手下留情,人也要成长的,谢谢
  • 如果对我有点小兴趣,如可加我个人微信哦,大家交个朋友,一起探讨人生。
  • 觉得还不错的话,点个
    image

标签:8.0,Slice,Protobuf,IceRPC,RPC,IDL,字节
From: https://www.cnblogs.com/xlgwr/p/18090842

相关文章

  • 迭代器切片/itertools.islice/yield返回
    使用itertools.isliceitertools.islice允许您对迭代器进行切片操作,这是处理生成器切片的推荐方法。它不需要将生成器的所有元素加载到内存中,因此仍然保持了生成器的高效性。这里是如何使用islice来获取前四个元素的示例:fromitertoolsimportislice#假设dou.get_user_post返......
  • VMware ESXi 8.0U1d macOS Unlocker & OEM BIOS 标准版和厂商定制版
    VMwareESXi8.0U1dmacOSUnlocker&OEMBIOS标准版和厂商定制版ESXi8.0U1标准版,Dell(戴尔)、HPE(慧与)、Lenovo(联想)、Inspur(浪潮)、Cisco(思科)、Hitachi(日立)、Fujitsu(富士通)、NEC(日电)OEM定制版请访问原文链接:https://sysin.org/blog/vmware-esx......
  • ubuntu18.04在下载编译Realsense-ros遇到的问题
    要注意的是,我是用小鱼的一键安装ros安装的ros,链接可以参考我的一篇文章开头有:ubuntu18.04系统中运行./build_ros.sh的时候遇到报错-CSDN博客我遇到的问题是csdn上搜不到的问题:CMakeErrorat/opt/ros/melodic/share/catkin/cmake/catkin_workspace.cmake:100(message): ......
  • w10下安装mysql8.0及dbeaver24记录
    1、首先到官网或者下载网站,下载mysql8.0的安装包,本次是从第三方下载网站下载的msi安装包,直接点开安装就行2、安装完后,参考https://blog.csdn.net/Javachichi/article/details/1327585513、然后下载安装dbeaver,安装好后配置连接mysql,其中自动下载mysql驱动时可能会报错,提示maven......
  • 8.0版本MySQL密码忘记了,如何修改?
    1、首先关闭mysqld服务,并查看systemctl  stop  mysqldsystemctlstatus  mysqld2、打开/etc/my.cnf,在[mysqld]模块下添加以下内容,跳过权限检查vim /etc/my.cnfskip-grant-tables3、开启mysqld服务,并登录,不需要使用密码systemctl  start  m......
  • PHP无法连接MySQL8.0数据库问题处理 报错如下: SQLSTATE[HY000]
    PHP无法连接MySQL8.0数据库问题处理报错如下:SQLSTATE[HY000][2054]Theserverrequestedauthenticationmethodunknowntotheclient发生这种错误,是由于MySQL8默认使用了新的密码验证插件:caching_sha2_password,而之前的PHP版本中所带的mysqlnd无法支持这种验证。解决这个问......
  • Ubuntu18.04 安装opencv(亲测有用)
    1、安装依赖环境sudoapt-getinstallbuild-essentialsudoapt-getinstallcmakegitlibgtk2.0-devpkg-configlibavcodec-devlibavformat-devlibswscale-devsudoapt-getinstallpython-devpython-numpylibtbb2libtbb-devlibjpeg-devlibpng-devlibtiff-devl......
  • Ubuntu 18.04.06 PCL C++学习记录(四)知识点补充
    @[TOC]PCL中K-Dtree模块的学习学习背景参考书籍:《点云库PCL从入门到精通》以及官方代码PCL官方代码链接学习内容PCL库中的智能指针和回调函数智能指针pcl::PointCloud<pcl::PointXYZRGBA>::PtrCloudOut(newpcl::PointCloud<pcl::PointXYZRGBA>());//存储输出点云......
  • 除gRPC之外的另一个选择,IceRPC-支持QUIC
    作者引言自从19年开始接触到RPC,当时完全没有相关概念,接触到的都是http,tcp等,当时公司用的是zeroc出品的ice框架,对应rpc非常强大,跨平台,跨语言。可惜的国内并不是主流,主流是gRPC,万物诸途同归,最终的目地是一样的。主要上看谁简单,方便,好理解。就在去年重新出一个新的RPC框架IceRP......
  • 捉虫日记 | MySQL 8.0从库某些情况下记录重放的CREATE TABLE、DROP TABLE语句到慢日志
    作者:卢文双资深数据库内核研发本文首发于2023-11-3020:47:35https://dbkernel.com问题描述当主从复制采用binlog的行模式时,如果从库启用slow_query_log、log_slow_replica_statements且从库重放CREATETABLE、DROPTABLE时因特殊情况(比如被从库其他SQL占用MDL......