Есть ли фреймворк / сервис для работы с шаблоном публикации / подписки и WCF? - PullRequest
1 голос
/ 08 сентября 2011

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

Поскольку мы уже используем WCF для обмена сообщениями запрос-ответ, мы быхотел бы продолжать использовать его для этого конкретного шаблона.В идеале сообщения должны обрабатываться через MSMQ, чтобы мы могли использовать надежные сообщения для обеспечения отказоустойчивости в случае сбоя службы.

Мы не ищем ничего сложного, такого как поддержка транзакций через границы служб.Действительно, нам просто нужна простая система рассылки сообщений на основе подписки.Существуют ли какие-либо простые структуры или службы, которые могут помочь нам работать с этим шаблоном?

1 Ответ

3 голосов
/ 08 сентября 2011

Вероятно, самым простым является NServiceBus (http://www.nservicebus.com/PubSub.aspx), но при этом не используется WCF.

Однако с точки зрения интеграции отправка и получение сообщений намного проще, чем семантика обмена сообщениями в веб-сервисах, поэтому вам не нужен WCF, чтобы абстрагироваться от этого.

Редактировать: чтобы включить это с помощью NetMsmqBinding, вам нужно будет самостоятельно реализовать инфраструктуру подписки. Это также было бы довольно легко сделать.

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

Подписные сообщения должны содержать:

  1. Интересующие меня типы сообщений
  2. Адрес моей очереди

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

Это стандартный шаблон для реализации sub sub.

...