Создание асинхронной службы WCF с использованием привязок MSMQ - PullRequest
2 голосов
/ 17 июня 2011

кто-нибудь имел опыт работы с асинхронными конечными точками WCF?

Я пытаюсь понять, что при использовании параметров привязок MSMQ у меня может быть установка, в которой клиент знает, в какую очередь следует помещать сообщения, и будет работать прозрачно, если служба wcf (в конечном итоге размещенная в IIS) отключена или не отвечает.

Мне бы очень хотелось получить эту настройку, потому что таким образом, когда сервер приложений снова подключается к сети (один из многих серверов приложений, который у нас будет для нашего распределенного приложения), он будет обрабатывать все входящие сообщения в очереди и обрабатывать их.

Я больше думаю о тех операциях, которые имеют смысл откладывать, таких как управление сообщениями (отправка электронных писем), услуги журналирования (запись записей журнала в базу данных, журнал событий или отправка по электронной почте) и аналогичные типы внутренних процессов.

Моим другим вариантом было бы использовать бизнес-процессы TIBCO и ems, но пытаться понять, что лучше, и если бы простой WCF работал, синхронизируя или асинхронно, просто меняя привязку, скажем, с netTCP на MSMQ ....

Спасибо!

Ответы [ 2 ]

4 голосов
/ 17 июня 2011

Вы должны различать асинхронную и очередь.

Асинхронный обмен сообщениями можно выполнять, скажем, с помощью NetTcpBinding, используя асинхронный вызов на основе клиента, выполнение асинхронного сервиса, обмен сообщениями OneWay и дуплекс или просто обмен сообщениями OneWay.

Однако, как вы говорите, очереди приносят дополнительные преимущества: устойчивость, выравнивание нагрузки и, в зависимости от версии MSMQ, масштабируемость.

Основные две проблемы, которые у вас возникают при использовании очередей:

  1. Все сообщения должны быть OneWay, поэтому, если клиенту нужен способ узнать, была ли обработка успешной, вы должны включить это в свое решение
  2. Семантика сбоев в очереди сильно отличается от стандартных сбоев службы. Очереди мертвых писем и очереди вредоносных сообщений необходимо проверять на наличие необработанных сообщений - опять же, что-то, что вам нужно создать в своем решении
1 голос
/ 17 июня 2011

Если вы хотите получить эквивалент Tibco EMS, то единственная похожая функция, поддерживаемая WCF, - это MSMQ.Если у вас уже есть инфраструктура Tibco EMS, но вы все еще хотите использовать WCF, вы можете объединить эти два, потому что Tibco обеспечивает привязку EMS для WCF (я никогда не проверял ее, но видел ее на странице загрузки клиента).

...