Создание приложений для доступа к инфраструктуре WebSphere MQ
Лекция посвящена следующим вопросам:
- Кроссплатформенная поддержка
- Интерфейсы прикладного программирования (API)
- Сообщения WebSphere MQ
- Взаимодействие с инфраструктурой WebSphere MQ
- Транзакции и единицы работы
- Межточечный обмен сообщениями
- Обмен по принципу публикации-подписки
4.1. Кроссплатформенная поддержка
Образующие инфраструктуру WebSphere MQ менеджеры очередей и приложения, стремящиеся получить доступ к инфраструктуре, могут располагаться на целом спектре различных типов аппаратуры и операционных систем. Комбинация той или иной разновидности оборудования и конкретной операционной системы обозначается как платформа.
Информацию о платформах, которые поддерживают менеджеры очередей в продукции IBM, см. на Web-странице по адресу: http://www.ibm.com/software/integration/websphere/mqplatforms/supported.html.
Для каждой платформы, которая поддерживает работу WebSphere MQ, эта страница содержит особую спецификацию окружения (SOE – statement of environment) с подробным описанием уровней поддержки каждого программного компонента, с которым может взаимодействовать WebSphere MQ, а также необходимые для WebSphere MQ сведения о сопровождении компонентов. На ряде платформ версия WebSphere MQ, которую поддерживает платформа, может не являться последней.
Дополнительные платформы, которые не включены в список и не пользуются поддержкой корпорации IBM, могут поддерживать компании из числа партнеров IBM (IBM Business Partner).
Менеджер очередей не обязательно должен находиться на том же сервере, что и подключенные приложения. Если менеджер размещен на другом сервере, для подключения приложения к менеджеру очередей WebSphere MQ необходима клиентская составляющая продукта. Силами IBM и компаний со статусом IBM Business Partner клиентские продукты WebSphere MQ могут поддерживаться на большем числе платформ, чем менеджеры очередей сообщений.
4.2. Интерфейсы прикладного программирования (API)
Для подключения приложений к менеджерам очередей и взаимодействия с инфраструктурой WebSphere MQ, частью которой и является менеджер, необходим интерфейс прикладного программирования (API – application programming interface).
4.2.1. Интерфейс очередей сообщений (MQI)
Основным API-интерфейсом WebSphere MQ является интерфейс очередей сообщений (MQI – message queue interface).
MQI – это процедурный API, а будучи таковым, он подходит для приложений, созданных на процедурных языках программирования. Процедурным API называется интерфейс, в котором контекст и данные, необходимые любой функции, передаются ей в момент вызова. Приложение должно контролировать весь контекст и обеспечивать наличие мест хранения всех элементов данных самостоятельно.
Кроме того, MQI описывает все структуры, константы и базовые типы данных, необходимые в целях взаимодействия с WebSphere MQ. При разработке приложений с использованием MQI необходимо явно манипулировать этими типами и структурами.
Непосредственное использование MQI возможно из приложений, реализованных на следующих языках программирования:
- C
- COBOL
Другие описанные в этом разделе API основаны на гибкости MQI и предоставляют ряд интерфейсов, позволяющих пользоваться преимуществами современных методов и языков программирования.
4.2.2. API-интерфейсы на базе объектной модели WebSphere MQ
В объектно-ориентированных языках программирования действия, состояния, данные могут быть связаны с логическими объектами, над которыми эти действия совершаются. Выбор такого подхода при создании приложения позволяет структуре самого приложения быть логически ближе к его функциональному назначению.
WebSphere MQ предоставляет набор объектно-ориентированных интерфейсов API для нескольких объектно-ориентированных языков программирования. И хотя сам процесс программирования с использованием этих API в случае с тем или иным языком разнится, все интерфейсы выполнены по единому замыслу, именуемому объектной моделью WebSphere MQ.
Интерфейсы служат оболочкой функциональности и структур данных, предоставленных MQI, реализуя их в виде классов, по которым могут строиться экземпляры объектов. Каждый класс содержит методы, способные работать с экземплярами класса, что позволяет приложению больше сосредоточиться на своей бизнес-логике, уделяя меньше внимания манипулированию и отслеживанию контекста, сопровождению структур данных или выделению и освобождению памяти.
WebSphere MQ предоставляет следующий набор объектно-ориентированных API-интерфейсов.
-
WebSphere MQ C++.
WebSphere MQ C++ служит API-интерфейсом для C++, соответствующим объектной модели WebSphere MQ. При создании приложений, обращающихся к WebSphere MQ на языке C++, программист может пользоваться как объектно-ориентированным API, так и прямым доступом к операционной системе и аппаратным возможностям, прибегая, где это необходимо, к функциям языка C. Подробнее об API-интерфейсе для C++ читайте в руководстве WebSphere MQ Using C++, SC34-6592.
-
WebSphere MQ base Java API.
WebSphere MQ base Java API является API-интерфейсом к базовому диалекту языка Java, соответствующим объектной модели WebSphere MQ. При создании Java-приложений для доступа к WebSphere MQ программист может использовать преимущества переноса приложения между платформами, который обеспечивает язык Java. Функциональность платформы Java может упростить и другие аспекты написания приложений. Подробнее о Java API читайте в руководстве WebSphere MQ Using Java, SC34-6591.
Примечание. Альтернативный интерфейс для языка Java описан в "разделе 4.2.3" "Стандартизованные API-интерфейсы для WebSphere MQ". - Классы WebSphere MQ для .NET:
Классы WebSphere MQ для .NET играют роль отвечающего объектной модели WebSphere MQ API-интерфейса для окружения .NET. При помощи классов WebSphere MQ для .NET приложения Microsoft Windows могут разрабатываться на множестве языков программирования. Подробнее о .NET и классах WebSphere MQ читайте в руководстве WebSphere MQ Using .Net, GC34-6605.
Примечание. Альтернативный интерфейс для окружения .NET описан в "разделе 4.2.3" "Стандартизованные API-интерфейсы для WebSphere MQ". - COM-интерфейс WebSphere MQ.
COM-интерфейс WebSphere MQ содержит ряд компонентов Microsoft ActiveX , именуемых WebSphere MQ Automation Classes for ActiveX (MQAX). Компоненты MQAX соответствуют требованиям, традиционно предъявляемым к ActiveX-компонентам, и объектной модели WebSphere MQ. Подробнее о модели компонентных объектов (COM – Component Object Model) и MQAX читайте в руководстве WebSphere MQ for Windows V6.0, Using the Component Object Model Interface, SC34-6594.
4.2.3. Стандартизованные API-интерфейсы для WebSphere MQ
Как было сказано в "разделе 3.2.7" "Стандартизованные API-интерфейсы", стандартизованные API для обращения к WebSphere MQ могут придать дополнительную гибкость приложениям, в которых они используются.
Доступ ко всему спектру функций инфраструктуры WebSphere MQ может требовать применения собственного API-интерфейса WebSphere MQ.
Примерами стандартизованных API-интерфейсов, которые могут использоваться для доступа к инфраструктуре очередей сообщений WebSphere MQ, являются.
- Java Message Service (JMS):
JMS – часть стандарта Java 2 Platform Enterprise Edition (J2EE), которая инкапсулирует как модель межточечного обмена, так и модель обмена сообщениями по принципу публикации-подписки. По сути, приложения, созданные на Java с JMS-интерфейсом, могут не зависеть от брокера, предоставляющего возможности публикации и подписки в WebSphere MQ. Это дает свою гибкость и позволяет обновлять брокер публикации-подписки WebSphere MQ без дорогостоящей переработки созданных приложений.
При доступе к функциям обмена сообщениями по принципу публикации-подписки от приложений, использующих JMS API, не требуется формировать и запускать команды публикации и подписки WebSphere MQ.
JMS – отраслевой стандарт обмена сообщениями в рамках спецификации J2EE. J2EE стандартизирует интерфейсы к целому ряду общих элементов функциональности, одним из которых является прием и передача сообщений по JMS.
WebSphere MQ содержит все средства и инструменты, необходимые для того, чтобы приложение для обмена сообщениями через JMS-интерфейс могло получить доступ к инфраструктуре WebSphere MQ. Таким образом, WebSphere MQ становится поставщиком (provider) JMS для данного приложения.
Примечание. Сообщения, размещенные в инфраструктуре WebSphere MQ посредством JMS API, по умолчанию содержат ряд связанных метаданных. С их помощью через JMS API сообщения могут получать удаленные приложения. Для обеспечения возможности взаимодействия с приложениями через другие API доступа к инфраструктуре WebSphere MQ метаданные могут быть заблокированы.Приложения, которые обращаются к инфраструктуре WebSphere MQ через JMS-интерфейс, могут располагаться на сервере WebSphere Application Server. Это позволяет им пользоваться полным набором функций стандарта J2EE, а также возможностями развертывания и масштабирования, присущими WebSphere Application Server.
Встроенная JMS-служба, поставляемая с WebSphere Application Server V5, основана на WebSphere MQ V5.3. WebSphere Application Server V6 содержит новый компонент-поставщик службы обмена сообщениями по технологии JMS – WebSphere Platform Messaging. Поставщиком JMS для WebSphere Application Server V6 после соответствующей настройки может стать WebSphere MQ. Инфраструктура WebSphere Platform Messaging может соединяться с инфраструктурой WebSphere MQ. Реализуя новое приложение на языке Java и выполняя межточечный обмен либо обмен по принципу публикации-подписки, продумайте возможность взаимодействия с WebSphere MQ при помощи JMS.
Язык Java, JMS, спецификации J2EE и WebSphere Application Server являются важными темами, представляющими самостоятельный интерес.
- IBM Message Service Client (XMS).
XMS – интерфейс обмена сообщениями для языков C, C++ и .NET-окружения. Подход XMS-интерфейса к приему и отправлению сообщений очень близок к подходу JMS API, а значит, и к преимуществам промышленной стандартизации, характерным для JMS.
XMS инкапсулирует как модель межточечного обмена, так и модель обмена сообщениями по принципу публикации-подписки. Приложения, разработанные на C, C++ или в окружении .NET с XMS-интерфейсом, могут не зависеть от брокера, предоставляющего возможности публикации и подписки в WebSphere MQ. Это дает свою гибкость и позволяет обновлять брокер публикации-подписки WebSphere MQ без дорогостоящей переработки созданных приложений.
При доступе к функциям обмена сообщениями по принципу публикации-подписки от приложений, использующих XMS API, не требуется формировать и запускать команды публикации и подписки WebSphere MQ.
Сообщения, размещенные в инфраструктуре WebSphere MQ приложениями, в которых используется XMS API, могут извлекаться из нее приложениями, в которых для взаимодействия с инфраструктурой WebSphere MQ используется API-интерфейс JMS.
На сегодняшний день средства для упрощения разработки приложений с применением XMS-интерфейса и обеспечения возможности отправки и получения сообщений подобными приложениями в инфраструктуре очередей сообщений WebSphere MQ находятся в пакете SupportPac IA94. Подробнее об этом см. по адресу: http://www.ibm.com/support/docview.wss?rs=171&uid=swg24007092&loc=en_US&cs=utf-8&lang=en
Примечание. В настоящее время SupportPac IA94 относится к категории 2 (Category 2), то есть его поддержка по каналам обслуживания продукции IBM недоступна. Подробности приведены на Web-сайте.Реализуя новое приложение на C, C++ или в окружении .NET и выполняя межточечный обмен либо обмен по принципу публикации-подписки, продумайте возможность взаимодействия с WebSphere MQ при помощи XMS.
4.2.4. Индивидуальные адаптеры
Если WebSphere MQ не имеет интерфейса для конкретного языка программирования или программного компонента инфраструктуры, который необходим приложению, для него может быть создан индивидуальный адаптер (custom adapter).
Индивидуальные адаптеры обеспечивают возможность взаимодействия одного из API, упомянутых ранее, например MQI, и языка программирования или программного компонента инфраструктуры, в рамках или при помощи которого разработано приложение.
Индивидуальный адаптер – пример прокси-модуля, который задействует существующий интерфейс и расширяет его в целях работы с инфраструктурой очередей сообщений WebSphere MQ.
Примером подобного адаптера является реализованная в пакете SupportPac MA89 поддержка языка Perl для MQSeries . Этот индивидуальный адаптер служит интерфейсом между WebSphere MQ и языком Perl. Подробнее о SupportPac MA89 см. по адресу: http://www.ibm.com/support/docview.wss?rs=171&uid=swg24000208&loc=en_US&cs=utf-8&lang=en