作者引言

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

作者结语

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

.Net 8.0 下的新RPC,IceRPC之接口定义语言 [Slice] VS [Protobuf]的更多相关文章

  1. Ubuntu18.04和OpenWrt 18.06.0 下使用aria2和BaiduExport处理百度盘下载

    Ubuntu下没有可用的百度盘客户端, 下载大文件如果通过浏览器就会特别不可靠. 可以使用Chrome插件 BaiduExport 得到下载链接和参数后, 通过aria2进行下载. Aria2安装 直 ...

  2. Ubuntu14.0下安装Zend Framework 2

    Ubuntu14.0下安装Zend Framework 2为了安装这个东西,忙活了快一天了,参考中文博客一直没有安装成功,有些博客的时间也是已经很早了,后来google看英文版的才安装成功,这里记录一 ...

  3. 有史来最大改变 Android 5.0十大新特性

    有史来最大改变 Android 5.0十大新特性 2014.10.16 14:51:31 来源:腾讯数码作者:腾讯数码 ( 0 条评论 )   距离Android系统上一次重大更新不到一年的时间,谷歌 ...

  4. Android下添加新的自定义键值和按键处理流程

            Android下添加新的自定义键值和按键处理流程     说出来不怕大家笑话,我写这篇博客的原因在于前几天去一个小公司面试Android系统工程师,然后在面试的时候对方的技术总监问了我 ...

  5. .NET Framework4.0 下的多线程

    一.简介 在4.0之前,多线程只能用Thread或者ThreadPool,而4.0下提供了功能强大的Task处理方式,这样免去了程序员自己维护线程池,而且可以申请取消线程等...所以本文主要描述Tas ...

  6. NodeJS - Express 3.0下ejs模板使用 partial展现 片段视图

    如果你也在看Node.js开发指南,如果你也在一步一步实现 microBlog 项目!也许你会遇到本文提到的问题,如果你用的是Express 3.0 本书实例背景是 Express 2.0 而如今升级 ...

  7. 【CNMP系列】CentOS7.0下安装PHP5.6.30服务

    上一节我们讲过了如何在CentOS7.0下安装MySql服务,如果没有看到欢迎页面的朋友,可以加我的个人微信详聊:litao514148204 附上一节地址:http://www.cnblogs.co ...

  8. 【CNMP系列】CentOS7.0下安装Nginx服务

    话步前言,CNMP之路,系统起步:http://www.cnblogs.com/riverdubu/p/6425028.html 这回我来讲解下CentOS7.0下如何安装和配置Nginx服务 Ngi ...

  9. 【Linux】CentOS7.0下安装JDK环境

    写在前面:此次试验是在CentOS7上面安装的,亲测成功. 所需工具:JDK1.8安装包,xftp 具体步骤: 1,首先使用xftp连接到自己的虚拟机,然后查看是否有"/usr/java/j ...

  10. Spring Boot 2.0正式发布,新特性解读

    作者|翟永超 Spring Boot 2.0 来啦,有哪些新特性?升级吗? 写在前面 北京时间 3 月 1 日,经过漫长的等待之后,Spring Boot 2.0 正式发布.作为 Spring 生态中 ...

随机推荐

  1. NC13611 树

    题目链接 题目 题目描述 shy有一颗树,树有n个结点.有k种不同颜色的染料给树染色.一个染色方案是合法的,当且仅当对于所有相同颜色的点对(x,y),x到y的路径上的所有点的颜色都要与x和y相同.请统 ...

  2. Python Print 显示颜色

    1.顺序:显示方式,前景颜色,背景颜色 2.顺序非固定,但尽量按默认书写方式 3.也可以在input中输出使用 4.格式: print('\033[显示方式:前景颜色:背景颜色m .......... ...

  3. Spring Boot整合JWT实现接口访问认证

    最近项目组需要对外开发相关API接口,需要对外系统进行授权认证.实现流程是先给第三方系统分配appId和appSecret,第三方系统调用我getToken接口获取token,然后将token填入Au ...

  4. JavaScript 的新数组分组方法

    对数组中的项目进行分组,你可能已经做过很多次了.每次都会手动编写一个分组函数,或者使用 lodash 的 groupBy 函数. 好消息是,JavaScript 现在有了分组方法,所以你再也不必这样做 ...

  5. 原来你是这样的JAVA--[07]聊聊Integer和BigDecimal

    今天来聊聊Java中跟数值处理相关的两个类型Integer和BigDecimal. 说起这两个类型,我们肯定都不陌生,但是其中有些容易踩到的坑需要注意避让. Integer 整型我们应该每天都会用到, ...

  6. 项目实战:Qt+Android模拟操作器(模拟操作app,打开,点击,输入,获取验证码等等)

    若该文为原创文章,转载请注明原文出处本文章博客地址:https://blog.csdn.net/qq21497936/article/details/109313803各位读者,知识无穷而人力有穷,要 ...

  7. 看看这份2023年MySQL终级面试题,提升你的内力,给你面试助力

    1.MySQL 中有哪几种锁? (1)表级锁:开销小,加锁快:不会出现死锁:锁定粒度大,发生锁冲突的概率最 高,并发度最低. (2)行级锁:开销大,加锁慢:会出现死锁:锁定粒度最小,发生锁冲突的概率最 ...

  8. Html飞机大战(十二): canvas写字(结束状态的编辑)

    好家伙,基本的功能都做完了,来补充一个结束状态的游戏结束文案   上代码: case END: //给我的画笔设置一个字的样式 //后面写出来的字都是这个样式的 context.font = &quo ...

  9. 【Azure 应用服务】基于Azure的CI/CD工具链部署App Service

    问题描述 在中国区Azure中,App Service是否支持CI/CD工具部署呢? Windows 和Linux两个系统都是同样的方法吗? 问题解答 目前中国区Azure支持Windows 和 Li ...

  10. Taurus.MVC WebMVC 入门开发教程6:路由配置与路由映射

    前言: 在本篇 Taurus.MVC WebMVC 入门开发教程的第六篇文章中, 我们将讨论如何配置路由并映射到控制器和操作方法. 路由是决定应用程序如何响应客户端请求的重要组成部分,因此在 Web ...