Сохранение порядка сообщений в службе WCF с помощью режима ConcurrencyMode.Multiple - PullRequest
3 голосов
/ 14 июня 2011

Существует служба WCF, которая обрабатывает входящие запросы и для каждого входящего сообщения выдает соответствующее выходное сообщение, которое отправляется другой службе WCF.Порядок, в котором приходят сообщения, важен и не может быть нарушен.Таким образом, служба должна создавать соответствующие выходные сообщения в том же порядке, в котором они были получены службой.Также важно обрабатывать запросы одновременно, чтобы извлечь выгоду из многоядерного ЦП.

Каков наилучший подход к сохранению порядка сообщений между входами и выходами в этом случае?

1 Ответ

3 голосов
/ 14 июня 2011

Это полностью зависит от вашей реализации.WCF может применять только заказанную доставку (либо через надежный сеанс, либо через MSMQ), так что вы можете быть уверены, что сообщения будут получены в том порядке, в котором они были отправлены, но нет функции, которая гарантировала бы, что ваша операция будет отправлять сообщения в том же порядкесообщение может быть обработано быстрее, чем другое, полученное ранее).Если вы хотите обрабатывать сообщения в порядке, установка ConcurrencyMode в Multiple только усложнит ситуацию.Вам придется вручную синхронизировать операции, что уменьшит параллелизм и, в худшем случае, откат, близкий к ConcurrencyMode.Single.Синхронизация может быть затруднена, потому что этого недостаточно для выполнения операции - обработка выходных сообщений в стеке каналов WCF также должна быть синхронизирована.

...