原创 无峰 [ ABAP 技巧与实战 ](javascript:void\(0\);)
**点击蓝字** 关注我们
一
前言
接口开发时,发现很多业务人员无法区分接口的同步属性及业务的实时传输要求.导致每个项目上都要解释如下问题
• 什么是同步接口
• 什么是异步接口
• 什么时候选择使用同步
• 什么是实时传输
• 什么是定时传输
**本文主要讲解同步/异步接口 实时/定时传输的相关概念 及实时与同步的关系**
二
问答环节
问题的答案均源自本人的理解,不代表标准答案
_**01** _
**什么是同步接口**
数据的发送方在发出数据后,会等待接收方的响应,直到获取到接收方返回的消息,接口调用结束.
同步接口需要通过识别返回消息中事先约定的成功标记来判断接口传输的业务内容处理成功,标记数据已发送.
同步接口会在PO中产生两个相关的消息 request(请求) response(响应)
_**02** _
**什么是异步接口**
数据的发出方在发出数据后,获取HTTP的响应CODE, 如果是200或202,表示对方成功接收了该消息,发出方可以标记数据已发送.
异步消息只会在PO中产生一个消息,如果该消息在PO中报错, 可以由PO的监控器发起重新处理.
_**03** _
**什么时候选择使用同步接口**
一般情况下,如果主数据或单据在发出方系统可以独立创建成功的,则无需使用同步接口传输数据.
大部分的同步接口是以下两类接口
**查询类**
• 发出方发出查询条件.
• 等待接收方执行查询并返回查询结果.
• 发出方获取查询结果.
• 执行后续处理.
**登记类**
• 发出方发出需要登记的信息.
• 等待接收方处理.
• 接收方处理登记信息,返回成功或失败信息
• 发出方根据成功或失败的反馈执行不同的后续处理.
_**04** _
**什么是实时传输**
实时和同步不是一个概念.
一般情况下,我们说实时是指源系统的单据或主数据创建后,要立即通过接口传给接收系统.
保存后通过触发机制立即传输才能称得上是真正的实时传输.
但是一般的系统可能不太支持保存触发或者实现比较麻烦, 所以往往会定义一个频率很高的后台作业发送.
实时接口可以调用同步方式传输,也可以调用异步方式传输
_**05** _
**什么是定时传输**
• 固定时间 比如 每天8:00执行一次
• 间隔时间段 比如 每小时执行一次
三
同步接口VS异步接口
**同步接口:**
优点
• 可以立即获取响应信息
• 只需要发送方处理接口日志(接收方最好也记录日志信息,以便核对)
• 无需通过PO系统
缺点
• 需要等待对方的处理
• 可能出现超时报错
• 接收方需要单独的进程处理请求,影响系统性能
**异步接口:**
优点
• 无需等待对方的处理.
• 接收方可以自行安排进程在空闲时间处理
缺点
• 发出后,如果需要业务响应信息,需要通过另外的接口实现
• 需要使用PO或其它中间件系统
• 发出方,接收方都需要处理接口日志
四
接口方式的原则
• 除非查询类或登记类的接口使用同步方式, 其它都建议使用异步方式
• 同步接口尽量不使用中间件产品(避免增加环节影响同步接口的响应)
• 特定的业务需求通过两个异步接口实现(比如门店的需求通过异步接口上传后, 如果需求被拒绝,拒绝的信息通过另外的异步接口反馈给门店)
五
总结
以上内容只是一家之言. 项目中采用同步还是异步方式,还有一些其它的因素.
• 开发难易度
• 是否启用了中间件
• 保护项目已有的开发
• 接口的调用频率
• 接口传输的数据量
• ......
至于实时还是定时,则完全取决于业务对两边系统数据一致性的需求有多强烈了.
** THE **
** END **
**约定**
如果你对这篇文章感兴趣,请帮忙点赞,在看,分享.
( **如果你真的喜欢这篇文章,请记得回来打个赏,作为支持我继续下去的动力,这是一个正反馈过程.
越多的人打赏,作者越有动力分享,读者就能享受更多的福利.毕竟打赏的金额富不了我,穷不了你,却能支持这个公众号长久发文.** )
**公众号 : syjf1976_abap**
**ABAP开发技巧**
**微信号 : 392077**
**请扫码加入公众号群,提问或参与话题讨论**