使用Servicebus的场景

时间:2012-02-07 13:21:03

标签: .net domain-driven-design servicebus

我正在阅读很多关于Servicebus实现(NServicebus,MassTransit,...)的内容,我想我已经了解了Servicebus的工作原理。我仍然不确定使用它的正确方案是什么,因为我了解自己并且我倾向于使用技术,尽管它们可能是需求的开销。

所以我的问题是: 使用Servicebus有什么好的理由/场景,我是否需要使用DDD技术来使用它?

我想到的一些场景:

  • 与外部系统通信(例如我的应用程序正在与外部系统通信,我想确保调用它们,例如,我在数据库中保留一个对象,但我还必须调用外部Web服务来同步数据。我会创建一个命令,我将有2个处理程序来获取事件,一个持久化到我的数据库,另一个处理web服务。如果on命令失败,它将被重试)
  • 可扩展性(我可以在多台机器上扩展)
  • 它可能会导致更清晰的代码(而不是在更新实体时执行多个顺序任务而不是单独执行这些任务的不同Messagehandler,例如保存实体,另一个Handler可以在非规范化数据存储上执行更新等)。

1 个答案:

答案 0 :(得分:2)

我认为你已经找到了一些使用NserviceBus的好方法。 我还没有在任何项目中使用它,但我已经做了一些实验室,只是为了弄清楚它是如何工作的。我有一位老同事告诉我他们抛弃了biztalk集成服务器,支持系统到系统与服务总线的集成。

不要忘记对Saga的支持,当你在消息之间有依赖关系时,它非常方便。 NService总线为您提供类型安全通信端点,这些端点可以是事务性的,也可以是异步的,并且会发生故障。

在DDD中,servicebus为您的应用程序提供了一个很好的工具来处理异步域事件,比如fire和forget。适用于开发Web应用程序并需要发送电子邮件,Facebook集成,推特,将数据保存到光盘上的文件,向应用程序发送消息。

我认为将事情复杂化几乎是我们的本性,所以当你说“我了解自己而且倾向于使用技术......”时,我认为这是自我观点的一个好兆头。就像Udi Dahan一样,他将自己称为A Software Simplist。尝试将其投入生产。