2011-06-14 28 views
3

有一个WCF服务处理传入请求,并且对于每个传入消息都会生成相应的输出消息,该消息将发送到另一个WCF服务。消息传递的顺序非常重要,不会受到干扰。所以服务应该按照与服务接收相同的顺序产生相应的输出消息。同时处理请求也非常重要,以便从多核CPU中受益。使用ConcurrencyMode.Multiple模式保留WCF服务中消息的顺序

在这种情况下,保持输入和输出之间消息顺序的最佳方法是什么?

回答

3

这完全取决于您的实施。 WCF只能强制执行有序传递(通过可靠会话或MSMQ),以确保邮件按发送顺序接收,但没有任何功能可确保您的操作以相同顺序发送邮件(一个消息可以被处理得更快,然后另一个接收到)。如果你想处理消息的顺序设置ConcurrencyModeMultiple只会使事情非常复杂。您将不得不手动同步操作,这会降低并发性,并在最差的情况下回退到接近ConcurrencyMode.Single。同步可能很难实现,因为它在操作中不足以执行 - 输出消息的WCF通道堆栈处理也必须同步。