关于序列图中synchronous与asynchronous消息使用的技术问询
关于序列图同步/异步消息的疑问解答
同步与异步消息的核心区别
- 同步消息:用实心箭头表示,发送方发送消息后会阻塞等待,直到接收方处理完成并返回结果,整个流程严格串行,动作顺序完全固定。
- 异步消息:用空心箭头表示,发送方发送消息后直接继续自身流程,无需等待接收方反馈。这里的“动作顺序丢失”指的是发送方与接收方的动作无强依赖关系,两者可并行执行,但接收方内部的业务逻辑顺序仍需符合规则,并非允许接收方动作随意乱序。
关于“添加公告前删除它”的问题
绝对不能这么做。无论使用同步还是异步消息,业务逻辑的基本依赖不能打破:必须先完成公告添加,才能执行删除操作——这是业务规则的硬性要求,与消息的同步异步属性无关。哪怕是异步消息,接收方收到的“添加”和“删除”指令,也得按正确业务顺序执行,否则就是逻辑矛盾。
可能存在的矛盾点
如果你的序列图出现以下情况,就是明显矛盾:
- 把有强顺序依赖的业务操作(比如先加后删),画成接收方先执行删除、再执行添加;
- 把需要发送方等待结果的操作(比如必须确认添加成功才能进行下一步),错误标记为异步消息;
- 异步消息的箭头使用错误(比如该用空心箭头却用了实心,反之亦然)。
内容的提问来源于stack exchange,提问作者Smth_Unknown
相关产品推荐
相关产品推荐

