对于给定场景的两种通信我感到困惑。我觉得每个列表项都可以是同步通信。
订购服务,呼叫运输服务以继续进行运输。
答案 0 :(得分:1)
这三个示例由于原因和结果(调用和响应)而提示响应时,将被视为异步。尽管所有这三种可能同时发生,但它们本身并不同步。
同步通信同时发生,就像两个人在线编辑同一文档一样。每个编辑器都可以同时读取和写入,但不会以任何方式打断另一个。
同步通信的最佳示例是电话对话。所有连接的方可以同时听到(接收)和讲话(发送),尽管人类很难同时执行这两项操作,但电话连接本身并没有困难地同时提供这两项功能。
异步行为就像双向无线电。您必须停止发送才能接收。
答案 1 :(得分:0)
同步 =同步
发送方等待接收方的响应以继续进行进一步的操作。
发送方和接收方都应处于活动状态。
发送方将数据发送到接收方,因为它需要立即响应才能继续处理。
当您同步执行某项操作时,您需要等待其完成才能继续执行其他任务。
异步 =不同步
发件人不等待接收方的响应
接收器可能处于非活动状态。
一旦接收器处于活动状态,它将接收并处理。
发件人将数据放入消息队列中,不需要立即响应即可继续处理。
异步执行某些操作时,可以在完成另一任务之前继续进行。
以您为例,
目录服务<-UI->订单服务->发货服务
1)UI必须从目录服务中获取项目详细信息(同步,因为它立即需要项目)
2)一旦选择了所有项目,UI必须调用Order服务。(同步/异步,取决于用户操作)
3)一旦所有商品都存在于购物车集合中,它就必须调用shipmentService。 (异步)
付款应该是同步的。您需要确认。
假设所有付款和其他工作都完成了,它将调用货运服务
交付是异步的,因为它无法立即得到确认。可能需要2天的延迟时间。