0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Restful 和 RPC 是什么关系与区别

lhl545545 来源:电子发烧友网 2018-02-07 15:35 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

Restful 和 RPC 是什么关系

这两个不是互斥的,HTTP是不是RPC完全取决于client的具体形式。传统的RPC一般是基于二进制协议的,client发个二进制包过来(然后阻塞),server处理完回复一个包,client收到后醒来。在二进制协议中一般可以在包中加个id来指明回复和请求的对应关系,这样我们就能在一个tcp连接上同时发起多个请求和回复。HTTP这种文本协议也可以加id,但由于一些原因(Content-Length可能缺失),即使加了id也做不到一个连接上同时传多个HTTP消息,所以HTTP协议一般会和server保持多个连接,每个连接上同时最多只有一个HTTP消息。此种”连接池“方式即为HTTP中的”Keep-alive“。所以即使在HTTP上(或任何协议上),我们仍然可以做到高效地发送一个请求过去,阻塞,等待server处理完后,再醒来。这不就是RPC么。所以这儿的选择更多是平衡功能和性能。一般来说,面向终端用户的尽量用Restful HTTP。原因是认知广,直观,编程语言都支持HTTP(包括shell,这样调试起来方便),性能不是那么重要,方便用户share链接。而面向内部系统的话如果机器不多也可以考虑用Restful HTTP,如果机器很多还是尽量用二进制的RPC吧,毕竟性能差距还是很大的。

 Restful 和 RPC 是什么关系与区别

restful架构与rpc区别

RPC

RPC 即远程过程调用, 很简单的概念, 像调用本地服务(方法)一样调用服务器的服务(方法)。

通常的实现有 XML-RPC , JSON-RPC , 通信方式基本相同, 所不同的只是传输数据的格式。

(如果你已经习惯于XML繁重的尖括号,你不妨可以尝试下更加轻型,高效,传输效率高的 JSON.)

一个简单的通信过程通常为:

Request

<?xml version=“1.0”?>

member.get_username_by_id

Response

<?xml version=“1.0”?>

Zhu Tao

向服务器发送一个过程调用的方法及其参数, 得到服务器返回的方法执行的结果。

REST

REST 不是一种协议,它是一种架构, 一种 Web Service 能够如果满足 REST 的几个条件, 通常就称这个系统是 Restful 的。

这里提到的条件包括:

C/S结构 (这是Internet服务的一个基本特征)

无状态 (很熟悉吧,呵呵)

可以cache (想起了浏览器?)

分层系统 (想起了无数的架构?)

统一的接口 (如果这是可能的,程序员有福了, :D)

code on demand(可选, 其实是一种扩展性的要求)

看了这几个特征后,你想起了什么?

你可能会破口而出: HTTP.

我答: You got it!

HTTP是WWW的最核心的协议, 它将简单的分布于世界各个角落的资源都统一起来, 统一的地址, 简单的方法, 和一定数量的表达方式。(你可能对这三点描述很模糊,请go ahead)。

REST 的三个要素是 唯一的资源标识, 简单的方法 (此处的方法是个抽象的概念), 一定的表达方式。

REST 是以 资源 为中心, 名词即资源的地址, 动词即施加于名词上的一些有限操作, 表达是对各种资源形态的抽象。

以HTTP为例, 名词即为URI(统一资源标识), 动词包括POST, GET, PUT, DELETE等(还有其它不常用的2个,所以 整个动词集合是有限的), 资源的形态(如text, html, image, pdf等)

Restful 和 RPC 是什么关系与区别

RPC与REST的区别

如果你想只记住一点,那么就请记住 RPC是以动词为中心的, REST是以名词为中心的, 此处的 动词指的是一些方法, 名词是指资源。

你会发现,以动词为中心,意味着,当你要需要加入新功能时,你必须要添加更多的动词, 这时候服务器端需要实现 相应的动词(方法), 客户端需要知道这个新的动词并进行调用。

而以名词为中心, 假使我请求的是 hostname/friends/, 无论这个URI对应的服务怎么变化,客户端是无需 关注和更新的,而这种变化对客户端也是透明的。

至于其它的区别,如对实现语言的依赖, 耦合性等,这些都是上面提到的这个根本区别所衍生的。

让我们回到引入部分的2个问题。 当你每天使用HTTP冲浪时,你都在使用 REST 与远程的服务器进行亲密接触。 当你使用Gtalk和同事朋友沟通时,你则是在享受着 RPC 的便利.

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • RPC
    RPC
    +关注

    关注

    0

    文章

    114

    浏览量

    12309
  • Restful
    +关注

    关注

    0

    文章

    14

    浏览量

    3857
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    请问AD9361的DATA_CLK和ADC COLCK RATE的关系是什么?如何配置?

    最近在调试AD9361的BBPLL,目前BB PLL 已经锁定。但不知道DATA_CLK这个时钟怎么配置?和ADC 的采样率有什么关系? 参考时钟为40MHz,配置的ADC CLK
    发表于 05-08 07:42

    FRED应用:RPC Photonics 扩散片BSDF导入模拟

    摘要 RPC Photonics公司有高品质的的工程漫射体BSDF测试数据,但它对于FRED帮助甚少,下面这个步骤描述了如何利用FRED脚本转换RPC Photonics提供的TXT文件,并将数据
    发表于 04-30 08:16

    码神之路Netty-从零实现RPC框架课分享

    面向未来的分布式基石:Netty 从零实现 RPC 框架全体系实战 在微服务架构与云原生技术大行其道的今天,分布式系统已成为互联网应用的标准形态。而在这些庞大系统的底层,隐藏着一个至关重要的通信引擎
    的头像 发表于 02-13 11:38 199次阅读

    电压、电位、电势和电平的区别关系

    在电学领域中,电压、电位、电势和电平是几个密切相关的概念,它们既有区别又有联系。理解这些概念的本质及其相互关系,对于掌握电路分析和电子技术至关重要。下面将从定义、计算方法和实际应用等方面,详细阐述
    的头像 发表于 11-24 07:37 1611次阅读
    电压、电位、电势和电平的<b class='flag-5'>区别</b>与<b class='flag-5'>关系</b>

    单片机和嵌入式,到底是什么关系

    关系:什么是单片机?什么是嵌入式?它们到底是不是一回事?先说说大家最先听说的那个词——单片机(MCU)。单片机,全称是MicrocontrollerUnit,顾名思
    的头像 发表于 11-14 10:28 2260次阅读
    单片机和嵌入式,到底是<b class='flag-5'>什么关系</b>?

    RESTful API设计原则: 构建易用、可扩展的API接口。

    一、理解REST架构的核心约束 1.1 RESTful API的六大基本原则 Roy Fielding博士在其博士论文中定义了REST架构的六大核心约束: 统一接口(Uniform
    的头像 发表于 10-24 10:45 806次阅读

    RESTful API设计原则: 构建易用、可扩展的API接口

    在当今微服务架构和分布式系统盛行的时代,RESTful API已成为系统间通信的核心桥梁。优秀的API设计不仅能提升开发效率,还能显著降低系统维护成本。本文将深入探讨如何遵循REST
    的头像 发表于 10-20 13:45 1668次阅读

    传感器和执行器之间有什么关系

    传感器和执行器是现代自动化系统的核心部件。传感器负责检测环境信息,如温度、光照等;执行器则根据信息执行动作,如启动电机、打开阀门等。它们之间存在着功能互补、协同工作、相互依存和集成发展等关系,共同推动自动化技术的发展。
    的头像 发表于 09-29 11:42 1159次阅读

    逻辑“1”与芯片引脚的输入电压有什么关系

    逻辑“1”与芯片引脚的输入电压有什么关系
    发表于 08-26 07:24

    可配置的数据闪存大小、地址和 APROM 之间有什么关系

    可配置的数据闪存大小、地址和 APROM 之间有什么关系
    发表于 08-26 06:58

    请问可配置的数据闪存大小、地址和 APROM 之间有什么关系

    可配置的数据闪存大小、地址和 APROM 之间有什么关系
    发表于 08-21 07:10

    Jtti.ccVPS和IP的关系是什么?一文讲清服务器背后的网络逻辑

    不少朋友在使用 VPS 搭建网站、做代理或远程桌面时,经常听到“独立IP”、“共享IP”、“原生IP”这些词,但到底 VPS 和 IP 是什么关系?有没有固定绑定?怎么查?怎么换?今天小编就从
    的头像 发表于 07-07 17:41 1207次阅读

    什么是STM32? STM32与ARM有什么关系? STM32能做什么?

    什么是STM32 具体用于什么方面较多?? STM32与ARM有什么关系 STM32能做什么,简单的比如调节协议,为什么那么久的产品到现在还是主流?
    发表于 06-23 17:34

    请问cypd3125 I2C硬件地址和HPIv2 组件内设定的slave address地址有什么关系,必须一致吗?

    各位大侠: 请问cypd3125 I2C硬件地址和HPIv2 组件内设定的slave address地址有什么关系,必须一致吗?我把CYPD3125 I2C 地址通过硬件设为0x40,感觉可以找到设备,但HPIv2 通信有问题,不知道两个地址有什么关系?哪位帮忙指点一下,
    发表于 06-03 08:19

    上位机和下位机是什么关系

    上位机和下位机在工业自动化、仪器仪表等控制领域中是相互协作、紧密配合的关系,以下从定义、通信方式、功能分工、协同作用几个方面详细阐述它们的关系: 定义与角色 上位机 :通常指具有强大数据处理、显示
    的头像 发表于 05-29 18:03 2062次阅读