2013-06-28 5 views
0

У меня есть настройка клиентского сервера, где я отправляю сообщения на сервер через http (я использую службу WCF, размещенную в качестве службы Windows). В моей текущей настройке, поскольку я видел, что некоторые сообщения потерянный при соединении между клиентом и сервером, ради надежности я решил использовать MSMQ. Так клиент отправляет сообщения в очередь, и сервер непрерывно обследует очередь. Мне нужно какое-то дизайнерское решение, которое нужно принять, прежде чем я разработки. Какой из них лучше всего обслуживает Windows или услугу wcf (размещается как сервис Windows)?WCF или служба Windows для реализации MSMQ

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

+0

Посмотрите на автобус NService. Он делает именно то, что вы пытаетесь выполнить. Довольно легко настроить. http://nservicebus.com/ –

+0

@JohnHartsock спасибо, но я хочу написать кое-что самостоятельно. – Macnique

+0

Почему бы просто не использовать существующую службу WCF и использовать WS-ReliableMessaging? Если вы умерли в MSMQ, вы можете использовать NetMSMQBinding для вашего транспортного уровня, но также поддерживаются другие привязки к HTTP-привязке. – Gus

ответ

1

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

  • модели обмена сообщениями (огонь и забыть, запрос-ответ, опубликуйте подписаться)
  • сериализации Сообщение
  • маршрутизации сообщений
  • Отказа/Retry логики (т.е. обработчик сообщений должен обновить базу данных, но база данных вниз, как вы справляетесь с этим?)
  • Длинных процессами погонных (также называемые саги)

Это лишь некоторые из вещей, которые вы будете писать в ближайшее время, если поедете по рулону.

+0

+1 Согласен. Не нужно «воссоздавать колесо». –