什么是远程调用?图文简要介绍

news/2024/7/3 21:12:34

本文目录

一、背景描述

二、概念介绍

三、远程调用原理


一、背景描述

什么是远程调用,网上一搜,有很多文章在讲解,但是感觉都讲的很深奥,对于初学者并不友好,下面是一种让我看到后,有一种豁然开朗的感觉的介绍方式。

二、概念介绍

函数接口调用方式分为:

  • 本地调用(Local Procedure Call,简称LPC)。
  • 远程调用(Remote Procedure Call,简称RPC)。

下面是用C语言写的一个示例程序:

  • 本地调用:通常,在我们的代码中调用一个函数,这个函数要么是系统API,要么是我们自己实现的本地代码,一起编译,一起发布,也在同一个进程中一起执行,这就是本地调用!
  • 远程调用:被调用方法的具体实现不在同一个进程,而是在别进程,甚至别的电脑上。RPC一个重要思想就是,使远程调用看起来像本地调用一样,调用者无需知道被调用接口具体在哪台机器上执行。
     

三、远程调用原理

比如 A (client) 调用 B (server) 提供的remoteAdd()方法,以下是步骤:

  • Step1、首先A与B之间建立连接(通常是TCP,但还有其他的,如HTTP、管道等);
  • Step2、然后A把需要调用的方法名(这里是remoteAdd)以及方法参数(10, 20)序列化成字节流发送出去;
  • Step3、B接受A发送过来的字节流,然后反序列化得到方法名,方法参数,接着执行相应的方法调用并把结果30返回;
  • Step4、A接受远程调用结果,输出30。

 

通过上面的简单阐述,远程调用与socket通讯非常像啊,都是远程通讯,都是C/S模式。但是他们两者到底有啥区别?

  1. RPC在提供强大的远程调用能力的同时,不损失本地调用的语义简洁性。RPC一个重要思想就是:使远程调用看起来像本地调用一样。
  2. socket是RPC经常采用的通信手段之一,除了Socket,RPC还有其他的通信方法,比如:http、操作系统自带的管道等。

 

完结!


http://www.niftyadmin.cn/n/1993246.html

相关文章

如何避免计算机计算出错?

本文目录 一、回避策略 二、把小数转换成整数来计算 计算机计算出错的原因之一是,采用浮点数来处理小数(另外,也有因“位溢出”而造成计算错误的情况)。作为程序的数据类型,不管是使用单精度浮点数还是双精度浮点数&…

如何修改网卡的MAC(物理)地址

如何修改网卡的MAC(物理)地址 更改网卡 MAC 地址的文章我曾经见过不少,但是都说的不够全面,下面我试着将各种方法总结出来,希望对大家有所帮助。 一、简单的修改方法 其实不论 98 还是 2000 ,自身都已…

如何取消github邮件订阅

在GitHub上订阅了某个主题,之后没有想到github邮件订阅充斥着大量非必需信息,给我造成了困扰,在这里说一下如何取消github邮件订阅的消息。 第一步:右上角头像 ----> Settings 第二步:在个人中心左侧出现的条目中找…

女人爱问的几个问题的标准答案ZZ

女人爱问的几个问题的标准答案ZZ 转自水木社区 感觉有点意思HOHO~~~~ 问题一:你爱我吗? 错误答案A:“爱。” 错误答案B:“这还用问吗?” 错误答案C:“你烦不烦啊? 标准答案:目光怜爱的望着对方三秒,然后神情的点一下头&…

【面试】Java集合中List,Set以及Map等集合体系详解

转载请注明出处:Java集合中List,Set以及Map等集合体系详解 一、概述 先来上一张 Collection 继承体系的图: 再来上一张 Map 继承体系的图: 由以上两张图可知以下内容: List,Set,Map 都是接口List&#xf…

【常用命令】netstat -ano命令图文详细说明

在 Windows 中可以用 netstat 命令显示套接字内容,如下图所示,图中的第一行相当于一个套接字,当创建套接字时,就会在这里增加一行新的控制信息,赋予“即将开始通信”的状态,并进行通信的准备工作&#xff0…

DLL导出变量

DLL导出变量DLL定义的全局变量可以被调用进程访问;DLL也可以访问调用进程的全局数据,我们来看看在应用工程中引用DLL中变量的例子(单击此处下载本工程附件)。/* 文件名:lib.h */#ifndef LIB_H#define LIB_Hextern int…

【异常】记录“错误: 找不到或无法加载主类 com.iotsoft.back.iotauthority.ApplicationRun”的解决方案

本文目录 一、背景描述 二、报错原因 三、解决方案 方案一:把中文目录改成英文即可 方案二:maven --> install 一、背景描述 今天从 Git 上新 checkout 下来一个项目,运行居然报错。由于代码是别人开发的,我刚接手&#…