1. 本地函数调用是可预测的,并且成功或失败仅仅取决于控制的参数。网络请求是不可预测的,请求或者响应可能由于网络问题而丢失,或者远程计算机可能速度慢或不可用,这些问题完全不在控制范围之内。网络问题很常见,因此必须有所准备,例如重试失败的请求。
  2. 本地函数调用,要么返回一个结果,要么抛出一个异常,或者永远不会返回(因为进入无线循环或者进程崩溃)。网络请求有另一个可能的结果:由于超时,他返回时可能没有结果。在这种情况下,根本不知道发生了什么;如果没有收到来自远程服务的响应,无法知道请求是否成功。
  3. 如果重试失败的网络请求,可能会发生请求实际上已经完成,只是响应丢失的情况。在这种情况下,重试将导致该操作被执行过多次,除非在协议中建立重复数据消除(幂等性)机制。本地函数调用则没有这样问题
  4. 每次调用本地函数时候,通常需要大致相同的时间来执行。网络请求比函数调用要慢的多,而且其延迟也有很大的变化; 情况好的时候,他可能会在不到1ms的时间内完成,但是当网络拥塞或者远程服务过载时候,可能需要几秒钟的时间才能完成相同操作。(上周五中午同事反馈,线上服务响应变慢的原因)
  5. 调用本地函数时,可以高效的地将引用(指针)传递给本地内存中的对象。当发出网络请求时候,所有这些参数都是需要被编码成可以通过网络发送的字节序列。如果参数是像数字或字符串这样的基本类型,这没有关系,但是对于较大的对象很快就会出现问题。
  6. 客户端和服务可以用不同的编程语言来实现,所有RPC框架必须将数据类型,从一种语言转换成另一种语言。因为不是所有的语言都具有心痛的类型。所以最终可能会丑陋。例如,回想一下JavaScript的数字大于2的53次方的问题。用单一的语言编写的单个进程并不会存在此种问题。

以上这些因素意味着,尝试使远程服务看起来像本地编程语言中的本地对象一样毫无意义,因为他们是根本不同的事情。但是REST的部分吸引力在于,他并不是试图隐藏他是基于网络协议的事实。

网络请求与本地函数调用的区别相关推荐

  1. 网络请求get和post的区别

    网络请求get和post的区别 其实本文更应该放在HTTP相关的分类,但是目前我并没有开设这一个分类专栏,so临时储存在HTML分类吧 Get和post是HTTP请求的两种基本方式 get是从服务器上 ...

  2. 5、微信小程序-网络请求和本地存储

    文章目录 前言 一.准备 二.网络请求 1.微信小程序请求网络的方法 2.发送网络请求 3.网络请求的封装 4.网络返回请求数据的处理 三.本地存储 前言 这节我们来看下在微信小程序中如何进行网络请求 ...

  3. java 网络请求 生成本地图片

    注:https://www.cnblogs.com/faunjoe88/p/7478010.html https://blog.csdn.net/qq_36409820/article/details ...

  4. 微信小程序入门二: 条件、遍历、网络请求、获取本地图片

    实例内容 条件渲染 数据遍历 网络请求 获取本地图片 实例一: 条件渲染 如果motto为Hello World,则输出你好世界,否则原样输出. 这里是分支条件判断,直接在视图文件里修改,修改inde ...

  5. 微信小程序网络请求配置问题及本地网络请求测试解决方案

    本文只针对服务器网站没有备案或只需要做本地网络接口请求 一.问题引入 在小程序demo.wxml中声明button控件,并设置点击事件,如下: <button bindtap='testSend ...

  6. ajax async:false不管用_js 网络请求框架 ajax和axios、fetch的区别

    互联网行业发展至今出现了很多技术,技术都在与时俱进的更新中,如从前的前端技术栈(html4+js+css+jquery)到现在vue+axios.随着更多优秀的框架出现,让我们从重复的基础代码编写中解 ...

  7. afn访问本地html,Swift利用AFN实现封装网络请求详解

    前言 相信大家都知道,我们一般在一个项目中,网络请求都封装成一个单例,以确保整个项目的网络请求 Session 是同一个. 单例模式定义:一个类有且仅有一个实例,并且自行实例化向整个系统提供,下面话不 ...

  8. iOS 中的网络请求 (同步请求、异步请求、GET请求、POST请求)

    1.同步请求可以从因特网请求数据,一旦发送同步请求,程序将停止用户交互,直至服务器返回数据完成,才可以进行下一步操作, 2.异步请求不会阻塞主线程,而会建立一个新的线程来操作,用户发出异步请求后,依然 ...

  9. 基于RxJava2+Retrofit2简单易用的网络请求实现

    代码地址如下: http://www.demodashi.com/demo/13473.html 简介 基于RxJava2+Retrofit2实现简单易用的网络请求,结合android平台特性的网络封 ...

最新文章

  1. 用Python不回头也能看美女,这招你会了吗?
  2. NameError: name ‘sklearn‘ is not defined的解决方法:
  3. 高压放电与防静电塑料包装
  4. VTK:图片之DrawShapes
  5. 3D版的TagView,效果很赞
  6. 2021数字化就业新职业新岗位研究报告
  7. jQuery----选择器
  8. docker 容器连接宿主机mysql问题
  9. 负载均衡的的基本功能和实现原理
  10. python 使用 reportlab 生成 pdf
  11. mysql英雄联盟卡_MySQL学习之路:爬取英雄联盟数据后续使用
  12. matlab 摄动,孤立特征值情况的矩阵摄动法算例(matlab编程).doc
  13. 小米平板2怎么显示电脑连接服务器,小米平板2有什么接口?小米平板2有HDMI接口吗?...
  14. Android BitmapShader实现圆形和圆角图片
  15. android平台的开源框架的思考
  16. 六年级下学期计算机课教学进度,六年级下册信息技术教学计划
  17. 奶茶自由让人上头,95后为何钟爱这一杯甜蜜疗愈?
  18. 两性相吸的20个完美方案
  19. 服务器上reportqueue文件夹,Reportqueue文件夹有什么用?如何设置电脑不生成Reportqueue文件...
  20. ES6 语法糖(一)

热门文章

  1. SpringBoot集成Maven工程
  2. Linux select/poll/epoll
  3. 关于Java静态属性初始化
  4. Report Builder 3.0连接ORACEL数据库
  5. 基于SignalR的站点有连接数限制问题及解决方案
  6. VMware ESX 5.0 网卡负载均衡配置3种方法
  7. Hibernate 简介
  8. hdu 5076 最小割灵活运用
  9. 概述造船业ERP信息化的方法
  10. 表单提交数据丢失的问题