2011-06-14 29 views
3

有一個WCF服務處理傳入請求,並且對於每個傳入消息都會生成相應的輸出消息,該消息將發送到另一個WCF服務。消息傳遞的順序非常重要,不會受到干擾。所以服務應該按照與服務接收相同的順序產生相應的輸出消息。同時處理請求也非常重要,以便從多核CPU中受益。使用ConcurrencyMode.Multiple模式保留WCF服務中消息的順序

在這種情況下,保持輸入和輸出之間消息順序的最佳方法是什麼?

回答

3

這完全取決於您的實施。 WCF只能強制執行有序傳遞(通過可靠會話或MSMQ),以確保郵件按發送順序接收,但沒有任何功能可確保您的操作以相同順序發送郵件(一個消息可以被處理得更快,然後另一個接收到)。如果你想處理消息的順序設置ConcurrencyModeMultiple只會使事情非常複雜。您將不得不手動同步操作,這會降低併發性,並在最差的情況下回退到接近ConcurrencyMode.Single。同步可能很難實現,因爲它在操作中不足以執行 - 輸出消息的WCF通道堆棧處理也必須同步。