MSMQ против дампа временной таблицы - PullRequest
6 голосов
/ 27 января 2009

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

У нас будет ряд веб-сервисов, которые будут регулярно обслуживаться сотнями мобильных приложений. Эти сервисы будут передавать данные на устройство с новой информацией, поступающей на устройства и возвращающейся с них. Данные, возвращаемые с устройств, должны будут обновлять единую центральную базу данных SQL-сервера, которая также поддерживает несколько настольных приложений и веб-сайт.

Чтобы сократить время, затрачиваемое на запрос / ответ этих служб, мы решили обработать данные, поступающие с устройств после факта, либо вставив их в экземпляр MSMQ, либо сохранив сериализованные объекты во временных данных хранить и иметь службу Windows обработать их позже.

Так что есть мой выбор, но кроме этого вот еще несколько вещей, которые могут помочь вам, ребята, посоветовать мне:

  • Данные, возвращаемые с устройств, не будут возвращаться в меньших пакетах сообщений, которые необходимо упорядочить на стороне сервера.
  • Я ничего не знаю о MSMQ, но раньше писал службы Windows. Хотя у меня нет проблем с получением MSMQ, если это требуется.
  • Я хочу сохранить ответ от устройств где-то в случае, если обработка по какой-то причине завершается неудачей, что вызвано данными. Таким образом, я могу запросить данные и посмотреть, есть ли проблема, то есть устройство позволяет пользователю добавлять комментарии, которые увеличивают длину соответствующего поля в базе данных на стороне сервера.

С этой информацией, как вы думаете, стоит ли мне изучать MSMQ или я должен придерживаться более простого решения?

Крис.

1 Ответ

8 голосов
/ 27 января 2009

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

Минусы:

  • Каждая очередь может быть только 2 ГБ.
  • Каждое сообщение 4 МБ (хотя ограничение 4 МБ можно исправить с помощью MSMQ с WCF).
  • Только для Windows, поэтому вы можете использовать его только с библиотеками .NET, C / C ++ или COM для сред с поддержкой COM.

Плюсы:

  • Поддерживает балансировщик сетевой нагрузки Windows.
  • Поддерживает службу кластеров Microsoft.
  • Интеграция с Active Directory.
  • Поставляется с Windows.
  • Поддерживает транзакции.
  • Сообщения MSMQ можно отслеживать с помощью сообщений аудита в журнале событий Windows.
  • Сообщения могут автоматически аутентифицироваться (подписываться) или шифроваться при отправке, а также проверяться и расшифровываться при получении.

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

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

Полезные ссылки

Программирование MSMQ в .NET - часть 1
Использование MSMQ с WCF

...