2

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

在我们的 sagas 中,我们首先从存储中读取数据并更新数据并将其再次放回存储中。NServicebus 实例自托管在 Windows 服务中。对存储的调用在其自己的程序集(“assembly1”)中分开。

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

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

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

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

4

2 回答 2

2

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

在给出更具体的建议之前,最好更多地了解您的 saga 的具体职责以及“assembly1”正在更新的数据。

于 2015-09-19T07:06:37.440 回答
2

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

编辑

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

于 2015-09-18T14:39:42.933 回答