NServiceBus和WCF,他们如何相处?

时间:2015-09-18 06:59:26

标签: wcf architecture nservicebus nservicebus5

Simplified ...我们正在使用NServiceBus来更新我们的存储。

在我们的传奇中,我们首先从存储中读取数据并更新数据并将其重新存储到存储中.NServicebus实例在Windows服务中自动生成。对存储的调用在它自己的程序集('assembly1')中分开。

现在我们还需要通过WCF从我们的存储中同步读取。在某些情况下,在sagas中更新时将需要相同的读取。

我的意见很清楚,但也许我错了,因此我问这个问题......

我们应该设置一个使用'assembly1'副本的单独WCF服务吗? 或者,WCF实例应该托管nservicebus吗? 或者,还有更好的方法吗?

它在某种程度上是两个端点,同步调用的WCF和现在托管nservicebus(已经存在)的Windows服务。

2 个答案:

答案 0 :(得分:2)

我认为没有理由在您的问题或评论中分成两个不同的端点。这听起来像是在描述单个逻辑服务,我的默认位置是在一个进程中托管每个逻辑服务。这通常是 最简单的方法,因为它使部署和故障排除更容易。

修改

不确定这是否有用,但我当前的客户端在IIS托管的WCF端点中运行NSB。因此,命令通过NSB消息处理,而查询仍然通过WCF公开。到目前为止,我们在一个过程中将两者放在一起没有任何问题。

答案 1 :(得分:2)

一般来说,saga应该只更新自己的状态(Data属性)并将消息发送到其他端点。它不应该更新其他状态或进行RPC调用(比如WCF)。

在提供更具体的建议之前,最好更多地了解您的传奇的具体职责以及'assembly1'正在更新的数据。