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

         

Инфраструктура, необходимая для использования MSMQ


Служба MSMQ может работать как в составе домена Active Directory, так и при отсутствии такого домена, но во втором случае невозможно использовать ряд возможностей MSMQ, а именно:

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

В MSMQ существуют два вида очередей – общие (public) и частные (private). Как частные, так и общие очереди могут либо использовать, либо не использовать транзакции, что задается при создании очереди и не может быть изменено в дальнейшем.

Информация об общих очередях публикуется в службе каталогов Active Directory. Путь к общей очереди имеет вид ComputerName\QueueName, возможна также запись пути в виде .\QueueName для очереди на локальном компьютере. Посылающее сообщение приложение может искать доступные в домене общие очереди по заданным критериям. Возможна также проверка приложением наличия общей очереди на удаленном компьютере и ее создание. Для использования общих очередей требуется развертывание MSMQ в рамках домена Active Directory.

Частные очереди доступны как при наличии домена, так и при его отсутствии. Путь к такой очереди имеет вид ComputerName\Private$\QueueName или .\Private$\QueueName для локального компьютера. Приложение, не имеет возможности ни создать, ни проверить наличие частной очереди на удаленном компьютере при использовании средств библиотеки FCL.

В MSMQ 3.0 появилась возможность посылать сообщения в общую или частную очередь по протоколу HTTP при наличии на удаленном компьютере службы Internet Information Services (IIS). В этом случае используется путь к очереди вида http://domain.name/msmq/private$/queuename. Посылающий сообщения компьютер так же должен поддерживать HTTP для MSMQ, иначе он не сможет получать какие-либо ответы. При чтении сообщений использовать HTTP-формат имени очереди невозможно.

MSMQ поддерживает два вида имени очереди – прямой вид (direct name) и путь к очереди (path name). При использовании частных очередей на удаленном компьютере обычно необходимо использовать прямой путь к очереди. При использовании MSMQ программами на .NET Framework прямой путь записывается следующим образом:

  • Formatname:DIRECT=OS:server01\QueueName – прямое имя общей очереди на компьютере server01;
  • Formatname:DIRECT=OS:ws02\Private$\QueueName – прямое имя частной очереди на компьютере ws01;
  • Formatname:DIRECT=TCP:192.168.30.1\private$\QueueName – прямое имя частной очереди на компьютере с адресом 192.168.30.1.

Полноценная работа с очередями возможна только в пределах локальной или виртуально частной сети, поскольку при чтении сообщений используется Windows RPC (в частности, обращения на 135-й порт). Кроме этого, среда MSMQ не способна функционировать при использовании NAT, за исключением случая HTTP-имени очереди.



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