Разработка распределенных приложений в Microsoft.NET Framework

       

Обмен сообщениями


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

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

Существует несколько разработок в области промежуточного программного обеспечения, реализующие высокоуровневые сервисы для обмена сообщениями между программными компонентами. К ним относятся, в частности, Microsoft Message Queuing, IBM MQSeries и Sun Java System Message Queue. Такие системы дают возможность приложениям использовать следующие базовые примитивы по использованию очередей:

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

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


Рис. 2.1.  Системы очередей сообщений

Использование очередей сообщений ориентировано на асинхронный обмен данными. Основные достоинства таких систем:

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

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


Содержание раздела