Шлюзы в InterSystems IRIS это механизм взаимодействия между ядром InterSystems IRIS и прикладным кодом на языках Java/.Net. С помощью шлюзов вы можете работать как с объектами Java/.NET из ObjectScript так и с объектами ObjectScript и глобалами из Java/.NET. Шлюзы могут быть запущены где угодно - локально, на удаленном сервере, в докере.  В этой статье я покажу, как можно легко разработать и контейнеризовать интеграционную продукцию с .Net/Java кодом. А для взаимодействия с кодом на Java/.Net будем использовать PEX, предоставляющий возможность реализовать любой элемент интеграционной продукции на Java/.Net. InterSystems IRIS позволяет эффективно решить любые задачи по интеграции приложений, автоматизации интеграционных бизнес-процессов и управлению потоками работ,  управлению API. Фреймоворк PEX в InterSystems IRIS - это механизм взаимодействия между ядром InterSystems IRIS и прикладным кодом на Java/.Net, который расширяет интеграционные возможности InterSystems IRIS, позволяя не только легко интегрироваться с любыми библиотеками на Java/.Net, но и вести разработку интеграционных компонент на Java/.Net. Для нашего примера мы разработаем интеграцию с Apache Kafka. Apache Kafka – популярный брокер сообщений. В Kafka есть тема (topic) сообщения в которую издатели (publisher) пишут сообщения и есть подписчики (consumer) на темы, которые читают эти сообщения. Сначала мы напишем Java бизнес-операцию которая будет пубиковать сообщения в Apache Kafka. Затем добавим бизнес-службу на языке C# которая будет сообщения читать, сохранять и передавать для дальнейшей обработки в InterSystems IRIS. Наше решение будеть работать в докере и выглядит следующим образом: Прежде всего, разработаем Бизнес-Операцию на Java для отправки сообщений в Apache Kafka. Код может быть написан в любой Java IDE и выглядеть так: Для разработки новой PEX бизнес-операции необходимо реализовать абстрактный класс com.intersystems.enslib.pex.BusinessOperation. Публичные свойства класса — это настройки нашего бизнес-хоста Метод OnInit используется для установления соединения с Apache Kafka и получения указателя на InterSystems IRIS OnTearDown используется для отключения от Apache Kafka (при остановке процесса). OnMessage получает сообщение dc.KafkaRequest и отправляет его в Apache Kafka. Теперь упакуем нашу бизнес-операцию в Docker контейнер. Вот наш докер-файл: Посмотрим, что здесь происходит (я предполагаю, что вы знакомы с многоступенчатыми докер сборками): JDK8 это базовый образ, в котором мы будем компилировать наше приложение.  Копируем исходный код из папки /src в /tmp/app. Копируем библиотеки Java Gateway в папку /tmp/app/jgw. Все зависимости скачаны - вызываем javac/jar для компиляции jar файла. Для реальных проектов рекомендуется использовать полноценную систему сборки maven или gradle. И, наконец, jar файлы копируются в базовый образ Java шлюза, который содержит все необходимые зависимости и обеспечивает запуск Java шлюза. Далее разработаем службу .Net, которая будет получать сообщения от Apache Kafka. Код может быть написан в любой .Net IDE и выглядеть так. Особенности: Для разработки новой PEX бизнес-службы необходимо реализовать абстрактный класс InterSystems.EnsLib.PEX.BusinessService. Публичные свойства класса — это настройки нашего бизнес-хоста Метод OnInit используется для установления соединения с Apache Kafka, подписки на темы Apache Kafka и получения указателя на InterSystems IRIS OnTearDown используется для отключения от Apache Kafka (при остановке процесса) OnMessage получает сообщения из Apache Kafka и отправляет сообщение класса Ens.StringContainer в целевые бизнес-хосты продукции Теперь упакуем нашу бизнес-операцию в Docker контейнер. Вот наш докер-файл: Посмотрим, что здесь происходит: Используем образ .Net Core 2.1 SDK для сборки нашего приложения. Копируем библиотеки .Net Gateway из официального образа InterSystems IRIS: Компилируем нашу бизнес-операцию. Копируем библиотеки в финальный контейнер. В настоящее время шлюз .Net должен загружать все зависимости при запуске, поэтому мы информируем его обо всех возможных зависимостях. Запускаем шлюз на порту 55556, слушаем все сетевые интерфейсы. Готово! Вот полная конфигурация docker-compose, для запуска демо целиком (в том числе и UI для Apache Kafka, для просмотра сообщений). Для запуска демо локально: Установите: docker docker-compose git Выполните: В интеграционных продукциях InterSystems IRIS появилась возможность создавать любые элементы продукции на Java/.Net Код на Java/.Net возможно вызывать из InterSystems ObjectScript и наоборот, код на InterSystems ObjectScript из Java/.Net Генерация прокси классов больше не требуется Возможна как классическая поставка решения, так и поставка в Docker Документация PEX Java .NET Репозиторий с демо Вебинар про PEX по материалам данной статьи