zoukankan      html  css  js  c++  java
  • 产品逻辑中的—B端技术常识:同步异步接口模式

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

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

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

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

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

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

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

    同步调用模式

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    综上来看,

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

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

  • 相关阅读:
    webpack打包报错configuration has an unknown property 'mode'
    CSP 201712-4 行车路线(最短路)
    设计模式
    sqlserver 迁移数据
    DataX
    Python 对接WebService
    IOS APP打包流程
    nginxUI
    ROS脚本-下线时判断在线数量进行重拨号
    bash 字符串截取的8种方法
  • 原文地址:https://www.cnblogs.com/yescarf/p/13577134.html
Copyright © 2011-2022 走看看