Встроенные системы: сокеты против MSMQ - PullRequest
2 голосов
/ 19 ноября 2010

Я разрабатываю несколько приложений для встроенных устройств; они должны быть совместимы как с Windows CE 5.0, так и с XP, встроенными в C # 2.0. Приложения должны обмениваться небольшими сообщениями, которые обычно представляют события. Я реализовал первый прототип с использованием сокетов TCP и отдельного сервера, выполняющего функции диспетчера (с шаблоном pub / sub). Это работает, но мне интересно, будет ли использование MSMQ лучшим решением. Сохранение сообщений поможет мне в нескольких сценариях, но, как правило, все события должны немедленно использоваться целевыми приложениями. Я хотел бы знать плюсы и минусы обоих решений и некоторые рекомендации, которые помогут мне принять решение.

Спасибо

Ответы [ 2 ]

3 голосов
/ 19 ноября 2010

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

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

Я думал, этот ответ в СО выразил эту проблему особенно хорошо.

2 голосов
/ 19 ноября 2010

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

...