产品逻辑中的—B端技术常识:同步异步接口模式

摘要:
我们来看一个采用同步调用模式的数据文件查询下载页面的设计案例。后端的下载任务调度管理程序开始执行,在数据库生成一条状态是“处理中”的任务记录,同时异步调用后端数据查询服务接口,并提供回调接口。后端服务接口拼写SQL语句并执行,数据库返回结果后,程序将数据处理成csv格式,保存在服务器,并调用回调接口,后端服务接口程序执行结束,将任务状态更新为“成功”,并提供数据下载的链接。

参看:http://www.woshipm.com/pd/3085570.htmlhttp://www.woshipm.com/pd/3544202.html

在软件开发中,接口是一个非常重要的概念。所谓接口,是指两个对象进行通信的方式和协议。

软件领域的接口和我们生活中所使用的硬件设备的接口(例如USB接口、苹果的Lighting接口、3.5mm耳机接口等)类似,每种接口都有约定的格式和规范,只要在设计时遵循了约定和规范,就能够方便地进行信息交换。

在软件设计领域,小到一个软件模块,大到一个软件系统,都会有若干接口,实现不同模块、不同系统之间的通信。

一般来讲,每个接口都应该实现一个具体的功能,接口需要有明确的输入,以及明确的输出(有的时候输出结果为空)。例如,调用客户姓名查询接口时,需要传入客户ID,执行后返回客户姓名。

在跨团队、跨模块的软件开发中,接口的设计规则需要在设计技术方案时就协商好,然后各方团队各自开发,在约定的时间一起联调,进行集成测试。

接口之间的调用模式分为同步调用模式和异步调用模式两种,产品经理需要理解这两种模式的区别,因为这不仅是技术问题,也会影响产品方案,我们通过两个产品设计案例来理解这两种模式。

同步调用模式

在同步调用模式下,接口的调用方会一直等待被调用方返回执行结果,除非调用超时,如下图所示。同步调用模式是最常见的接口调用形式。

产品逻辑中的—B端技术常识:同步异步接口模式第1张

产品逻辑中的—B端技术常识:同步异步接口模式第2张

我们来看一个采用同步调用模式的数据文件查询下载页面的设计案例。在该页面中,用户查询并下载csv文件,如下图所示。

具体交互与系统处理步骤如下:

  1. 用户设置好查询条件,点击“下载”按钮;
  2. “下载”按钮会以同步模式调用后台数据查询接口,将前端用户填写的日期作为参数传递给后端服务接口;
  3. 后端服务拼写SQL查询语句,执行SQL语句并等待数据库返回结果;
  4. 数据库返回结果后,后端服务接口组装数据,生成csv文件,并返回给前端浏览器。在这个过程中,用户在浏览器端一直处于等待状态(浏览器左下角可能会有提示文字:等待服务器响应);
  5. 浏览器收到服务器返回的数据文件,弹出窗口,提示用户选择文件的保存位置,并执行文件下载操作。

产品逻辑中的—B端技术常识:同步异步接口模式第3张

异步调用模式(数据体量大)

在异步调用模式下,接口调用方给被调用方发出指令,但不会等待结果,最终都会返回一个结果给调用方,但是需要调用方刷新状态;如下图所示。

产品逻辑中的—B端技术常识:同步异步接口模式第4张

一般耗时比较长的处理工作会采用异步调用模式,调用方会给被调用方提供一个回调接口,意思是“你处理时间比较长,等你处理完以后,再调用这个回调接口,通知我结果吧!”

我们依然以文件查询下载为例来看看异步调用模式下的产品设计。在上一个案例中,数据查询有可能非常耗时,如果让用户停留在前端页面等待,体验并不友好,所以我们考虑对功能进行改进,通过异步调用模式重新设计功能,交互效果如下图所示,具体执行步骤如下:

  1. 用户设置好查询条件,点击“下载”按钮。
  2. 前端提示“下载任务已提交,请耐心等待。”后端的下载任务调度管理程序开始执行,在数据库生成一条状态是“处理中”的任务记录,同时异步调用后端数据查询服务接口,并提供回调接口。
  3. 后端服务接口拼写SQL语句并执行,数据库返回结果后,程序将数据处理成csv格式,保存在服务器,并调用回调接口,后端服务接口程序执行结束,将任务状态更新为“成功”,并提供数据下载的链接。
  4. 如果后端服务接口长时间没有得到数据库返回结果,超过规定时间后,下载任务调度管理程序会将任务状态更新为“失败”。

产品逻辑中的—B端技术常识:同步异步接口模式第5张

产品逻辑中的—B端技术常识:同步异步接口模式第6张

但,异步处理总是优于同步处理吗?

实际上,采用同步处理方式的产品方案也不在少数。

在我们常见的打车过程中,当到达目的地,司机会在app内滑动到达目的地,并确认附加费金额,然后司机端、乘客端APP便会自动展示出整段行程的费用,这个过程,便是采用同步处理的方式。

产品逻辑中的—B端技术常识:同步异步接口模式第7张

试想这个过程,采用异步处理的方式,这个场景会变成什么样子?

司机到达了目的地,确认附加费金额后,需要通过刷新或点击其他按钮,才能获取行程费用;乘客也需要通过刷新获取到行程费用,然后才能去支付。

这样的用户操作流程,将导致大批量的乘客不会在第一时间去支付行程费用,直接影响了公司的坏账率。

事实上,同步、异步的处理方式各有优劣,在合适的场景选择对应的处理方式才能达到更好的效果。

综上来看,

同步应用中更强调及时性,可能忽略前端用户体验状况,在业务中需注重考虑用户反馈包括弹窗、toast、snackbar等提醒用户,能较好避免用户因长时间等待而对产品丧失耐心,体验变差,

异步应用更突出结果,产品应用中例如强调延时下载加载等功能,也同样需要在指定时间内做到响应数据,避免因系统进程错误而导致重复等待重复提交,但是针对有问题部分也应该给与及时反馈,

免责声明:文章转载自《产品逻辑中的—B端技术常识:同步异步接口模式》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇(六)Android中Service通信小米手机adb device的时候报状态为: unauthorized下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Android NDK r8 Cygwin CDT 在window下开发环境搭建 安装配置与使用 具体图文解说

版权声明:本博客全部文章均为原创。欢迎交流。欢迎转载;转载请勿篡改内容,而且注明出处,谢谢! https://blog.csdn.net/waldmer/article/details/32725003 android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 具体图文解说。完整实际配置过程记录(原创) 一直想搞NDK开发...

20多个常用的免费WebService接口

20多个常用的免费WebService接口 天气预报Web服务,数据来源于中国气象局 Endpoint  Disco  WSDL  IP地址来源搜索 WEB 服务(是目前最完整的IP地址数据) Endpoint  Disco  WSDL  随机英文、数字和中文简体字 WEB 服务 Endpoint  Disco  WSDL  中国邮政编码 <-&g...

C# 程序软件启动默认管理员权限。

在vs的Properties目录中找到 app.manifest,将其中level="asInvoker" 改成 level="requireAdministrator"就可以了,如果没有app.manifest文件可以打开项目属性,找到“安全性”,勾上“启用 ClickOnce 安全设置”,会生成app.manifest文件,然后再把勾去掉这样你重新编译...

day1_json_viewer美化接口请求、接口用例设计的方式和接口测试的必要性

接口返回值json方式展示在谷歌浏览器方式:点击右上角三个点,单击更多工具(L)->扩展程序,点击加载已解压的扩展程序按钮,选择已解压的json_viewer(通过json_viewer.zip解压缩)的文件夹,点击更新按钮,刷新浏览器,如下图: 可以看到请求时间和url,以及美化后的返回值,比之前在一行展示好看多了 接口用例设计,以注册接口为例:...

Java设计模式7:适配器模式

适配器模式 适配器模式说的是,可以把一个类的接口变换成客户端所期待的另一种接口,使得原本因接口不匹配而无法在一起工作的两个类可以一起工作。 适配器模式的用途 适配器模式的用途,在网上找了一幅图,挺形象的: 比方说我有一个台灯,其插头是标准的两相的交流电插头,即阳极、阴极。我旅游到了一个地方想用自己的台灯,但发现旅馆里面只有三相的插头,即在阳极、阴极的基础...

【jmeter】接口稳定性测试

1.创建进行测试的脚本 2.场景设置 线程组设置并发用户数30 在启动1s,30并发用户全部启动 循环设置为永远 采用调度器:有两种工作方式 1.设置启动和结束时间 2.设置持续时间,我设置的是60s(因为我的脚本是1分钟内抽奖的) 集合点设置 3.设置lisenter 使用聚合报告、结果树、图形报告...