soa - 异步消息(尤其是发布/订阅风格的消息)作为域服务架构是否可行,还是仅在以 SOA 为中心的环境中可行?

标签 soa messaging

我一直在研究异步消息传递,我喜欢它优雅地处理某些领域中的一些问题的方式,以及它如何使领域概念更加明确。但对于一般的领域驱动开发(至少在服务/应用程序/ Controller 层)来说,它是一种可行的模式,还是设计开销应该限制在基于 SOA 的场景中,比如远程服务和分布式处理?

最佳答案

好问题:)。异步消息传递的主要问题是,当人们使用过程或面向对象的语言时,以异步或基于事件的方式工作通常非常棘手和复杂,程序员难以阅读和理解。如果业务逻辑以一种同步的方式构建,它通常会更简单——调用方法并立即获取结果等:)。

我的经验法则通常是在业务逻辑的微观层面上尝试使用更简单的同步编程模型;然后在宏观层面使用异步和 SEDA。

例如,提交采购订单可能只是将消息写入消息队列;但是采购订单的处理可能需要 10 个不同的步骤,所有这些步骤在高性能分布式系统中都是异步和并行的,其中许多并发进程和线程并行处理各个步骤。因此,宏观层面的布线是基于一种 SEDA 方法 - 但在微观层面上,单个 10 步的代码可以主要以同步编程风格编写。

关于soa - 异步消息(尤其是发布/订阅风格的消息)作为域服务架构是否可行,还是仅在以 SOA 为中心的环境中可行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72895/

相关文章:

web-services - 如何使用 Doctrine2 构建没有敏感字段的 API?

web-services - Paypal 如何从那里保护客户数据 业务合作伙伴?

c# - 如何在 WCF 中使用 DomainModel

c# - 用MediatR替换服务层-值得这样做吗?

asp.net - ASP.NET 中面向服务的实际示例应用程序

.net - 消息处理程序的生命周期

message-queue - RabbitMq 是否进行从交换到队列的循环

jms - ActiveMQ消息分组性能

web-services - 消息总线和 MOM - 同样的事情?

Android GCM 错误。当客户端已注册时,服务器返回未注册