本文介绍程序设计中常见的同步、异步接口模式,并通过设计案例让大家理解两种模式如何融入到产品设计中。
在软件开发中,接口是一个非常重要的概念。所谓接口,是指两个对象进行通信的方式和协议。
软件领域的接口和我们生活中所使用的硬件设备的接口(例如USB接口、苹果的Lighting接口、.mm耳机接口等)类似,每种接口都有约定的格式和规范,只要在设计时遵循了约定和规范,就能够方便地进行信息交换。
在软件设计领域,小到一个软件模块,大到一个软件系统,都会有若干接口,实现不同模块、不同系统之间的通信。
一般来讲,每个接口都应该实现一个具体的功能,接口需要有明确的输入,以及明确的输出(有的时候输出结果为空)。例如,调用客户姓名查询接口时,需要传入客户ID,执行后返回客户姓名。
在跨团队、跨模块的软件开发中,接口的设计规则需要在设计技术方案时就协商好,然后各方团队各自开发,在约定的时间一起联调,进行集成测试。
接口之间的调用模式分为同步调用模式和异步调用模式两种,产品经理需要理解这两种模式的区别,因为这不仅是技术问题,也会影响产品方案,我们通过两个产品设计案例来理解这两种模式。
在同步调用模式下,接口的调用方会一直等待被调用方返回执行结果,除非调用超时,如下图所示。同步调用模式是最常见的接口调用形式。
我们来看一个采用同步调用模式的数据文件查询下载页面的设计案例。在该页面中,用户查询并下载csv文件,如下图所示。
具体交互与系统处理步骤如下:
用户设置好查询条件,点击“下载”按钮;
“下载”按钮会以同步模式调用后台数据查询接口,将前端用户填写的日期作为参数传递给后端服务接口;
后端服务拼写SQL查询语句,执行SQL语句并等待数据库返回结果;
数据库返回结果后,后端服务接口组装数据,生成csv文件,并返回给前端浏览器。在这个过程中,用户在浏览器端一直处于等待状态(浏览器左下角可能会有提示文字:等待服务器响应);
浏览器收到服务器返回的数据文件,弹出窗口,提示用户选择文件的保存位置,并执行文件下载操作。
在异步调用模式下,接口调用方给被调用方发出指令,但不会等待结果,如下图所示。
一般耗时比较长的处理工作会采用异步调用模式,调用方会给被调用方提供一个回调接口,意思是“你处理时间比较长,等你处理完以后,再调用这个回调接口,通知我结果吧!”
我们依然以文件查询下载为例来看看异步调用模式下的产品设计。在上一个案例中,数据查询有可能非常耗时,如果让用户停留在前端页面等待,体验并不友好,所以我们考虑对功能进行改进,通过异步调用模式重新设计功能,交互效果如下图所示,具体执行步骤如下:
用户设置好查询条件,点击“下载”按钮。
前端提示“下载任务已提交,请耐心等待。”后端的下载任务调度管理程序开始执行,在数据库生成一条状态是“处理中”的任务记录,同时异步调用后端数据查询服务接口,并提供回调接口。
后端服务接口拼写SQL语句并执行,数据库返回结果后,程序将数据处理成csv格式,保存在服务器,并调用回调接口,后端服务接口程序执行结束,将任务状态更新为“成功”,并提供数据下载的链接。
如果后端服务接口长时间没有得到数据库返回结果,超过规定时间后,下载任务调度管理程序会将任务状态更新为“失败”。
希望本文能够帮助你进一步感受技术原理与产品设计方案的相关性。