NServiceBus 和 WCF,他们如何相处?
NServiceBus and WCF, how do they get along?
简化...我们正在使用 NServiceBus 来更新我们的存储。
在我们的 sagas 中,我们首先从存储中读取数据并更新数据并将其再次放回 storage.The NServicebus 实例在 windows 服务中自托管。对存储的调用在其自己的程序集中分开 ('assembly1')。
现在我们还需要通过 WCF 从我们的存储中同步读取。在某些情况下,在 sagas 中更新时需要相同的读取。
我的观点很明确,但也许我错了,所以我问这个问题...
我们是否应该设置一个使用 'assembly1' 副本的单独 WCF 服务?
或者,WCF 实例是否应该托管 nservicebus?
或者,还有更好的方法吗?
它在某种程度上是两个端点,用于同步调用的 WCF 和 windows 现在托管 nservicebus(已经存在)的服务。
我认为没有理由在您的问题或评论中分成两个不同的端点。听起来你在描述一个单一的逻辑服务,而我的默认立场是在一个进程中托管每个逻辑服务。这是通常最简单的方法,因为它使部署和故障排除更加容易。
编辑
不确定这是否有帮助,但我当前的客户端在 IIS 托管的 WCF 端点中运行 NSB。因此命令通过 NSB 消息处理,而查询仍然通过 WCF 公开。迄今为止,我们在一个进程中将两者托管在一起没有遇到任何问题。
一般来说,saga 应该只更新自己的状态(数据 属性)并向其他端点发送消息。它不应更新其他状态或进行 RPC 调用(如 WCF)。
在给出更具体的建议之前,最好更多地了解您的 saga 的具体职责以及 'assembly1' 正在更新的数据。
简化...我们正在使用 NServiceBus 来更新我们的存储。
在我们的 sagas 中,我们首先从存储中读取数据并更新数据并将其再次放回 storage.The NServicebus 实例在 windows 服务中自托管。对存储的调用在其自己的程序集中分开 ('assembly1')。
现在我们还需要通过 WCF 从我们的存储中同步读取。在某些情况下,在 sagas 中更新时需要相同的读取。
我的观点很明确,但也许我错了,所以我问这个问题...
我们是否应该设置一个使用 'assembly1' 副本的单独 WCF 服务? 或者,WCF 实例是否应该托管 nservicebus? 或者,还有更好的方法吗?
它在某种程度上是两个端点,用于同步调用的 WCF 和 windows 现在托管 nservicebus(已经存在)的服务。
我认为没有理由在您的问题或评论中分成两个不同的端点。听起来你在描述一个单一的逻辑服务,而我的默认立场是在一个进程中托管每个逻辑服务。这是通常最简单的方法,因为它使部署和故障排除更加容易。
编辑
不确定这是否有帮助,但我当前的客户端在 IIS 托管的 WCF 端点中运行 NSB。因此命令通过 NSB 消息处理,而查询仍然通过 WCF 公开。迄今为止,我们在一个进程中将两者托管在一起没有遇到任何问题。
一般来说,saga 应该只更新自己的状态(数据 属性)并向其他端点发送消息。它不应更新其他状态或进行 RPC 调用(如 WCF)。
在给出更具体的建议之前,最好更多地了解您的 saga 的具体职责以及 'assembly1' 正在更新的数据。