Современные системы состоят из множества различных сервисов, и одной из основных задач является обеспечение обмена данными между компонентами системы. Для обеспечения этой функциональности используются шины данных (Enterprise Service Bus, ESB), интегрирующие различные приложения и системы в единую информационную среду. Она выступает в роли «посредника», минимизируя прямые связи между отдельными системами и обеспечивая гибкость взаимодействия. Таким образом, основная цель внедрения ESB — оптимизировать и унифицировать взаимодействие внутри информационного ландшафта предприятия.

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

Отдельной проблемой является совместимость различных форматов сообщений. Так, если системы подключенные к шине используют несовместимые форматы данных (XML, JSON, CSV) и протоколы связи (HTTP, JMS, FTP, SOAP, REST), то ESB конвертирует данные сразу в потоке.

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

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

И еще одна важная функция это мониторинг и логирование — ESB фиксирует факт передачи и получения сообщений, что позволяет отслеживать статус интеграционных сценариев.

Таким образом, ESB используется в тех случаях, когда необходимо обеспечить взаимодействие большого количество разнородных систем — если в организации используется множество различных приложений, ESB помогает их объединить. Также шина данных упрощает внесение изменений в интеграционные процессы и обеспечивает надёжную и безопасную передачу данных.

1С:Шина

В линейке 1С имеется решение 1С:Шина — это программный продукт класса «Сервисная шина предприятия», обеспечивающий обмен данными между различными информационными системами, работающими как на платформе «1С:Предприятие», так и с системами на других платформах.

1С:Шина перенаправляет все обмены данными между различными системами через себя и предоставляя единую точку входа\выхода для всех информационных систем, а также единый инструмент управления и мониторинга.

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

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

В 1С:Шина имеется множество готовых коннекторов для различных систем, а также функционал для написания собственных коннекторов. Подробнее о способах подключения мы поговорим чуть позже.

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

Немаловажным моментом является интерфейс управления ESB. В 1С:Шина мы можем с помощью веб‑интерфейса выполнять административные задачи, такие как обновление конфигураций и изменение различных настроек. Также в этом интерфейсе можно следить за состоянием компонентов системы и осуществлять мониторинг.

Ниже представлена Панель управления шиной.

Способы подключения к шине

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

Прежде всего, мы можем взаимодействовать с шиной с помощью веб сервисов. На стороне 1С:Шины создается веб сервис, использующий SOAP, с которым могут взаимодействовать системы, подключенные к шине. Для описания сервиса используются WSDL‑схемы.

Можно создавать собственные HTTP‑сервисы для обработки входящих HTTP‑запросов от внешних информационных систем. Также можно подключаться к сторонним HTTP‑сервисам через специальный узел, отправлять запросы к внешним ресурсам и формировать исходящие сообщения на основе результатов этих запросов. Функциональность HTTP‑протокола также позволяет использовать обмен данными в соответствии с существующим REST API.

Также есть возможность интегрироваться со сторонним брокером сообщений Apache ActiveMQ Artemis, например, настраивать асинхронную интеграцию с SAP PI (SAP NetWeaver Process Integration).

1С:Шина также даёт возможность обмениваться сообщениями по протоколу AMQP версии 1.0. и кроме этого, в 1С:Шине предусмотрены инструменты для подключения к брокеру сообщений RabbitMQ. Помимо этого, мы можем обмениваться данными с популярным брокером сообщений Kafka.

При необходимости шина может осуществлять прямой обмен с внешними СУБД (например, MS SQL Server, PostgreSQL) посредством использования драйвера JDBC. Возможно добавление нужных JDBC‑драйверов в сервер «1С:Шины».

Еще одна возможность взаимодействия с системами это использование сервисов интеграции. Это встроенный в платформу «1С:Предприятие» механизм, позволяющий обмениваться сообщениями через 1С:Шину. Платформа, совместно с 1С:Шиной, обеспечивает гарантированную доставку сообщений при простоте использования.

Если вам не подходят другие способы взаимодействия, то вы всегда можете воспользоваться обменом сообщениями между шиной и системами в виде файлов. ESB предоставляет возможность обмениваться файлами, подключаясь к файловым хранилищам, каталогам, в том числе сетевым, и различным FTP‑ресурсам.

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

Создание проекта

Рассмотрим небольшой пример создания проекта в 1С:Шина на основе официальной документации с 1с.ru. Для примера будет использована информационная база («Управление торговлей»), а также информационная база («Бухгалтерия предприятия КОРП»). Для организации обмена с «1С:Шиной» будут использованы http‑сервисы.

В веб интерфейсе 1С:Шины создадим новый проект HTTP_Example и начнем заполнять его элементами, выбрав опции, представленные на рисунке.

В итоге получаем следующую схему проекта:

Из информационной базы «Управления торговлей, будет отправляться запрос в http‑сервис „1С:Шины“. В http‑сервисе „1С:Шины“ будет формироваться сообщение из полученного запроса, которое будет отправлено в узел „ПрограммныйИсточник“. Из узла „ПрограммныйИсточник“ сообщение поступит в узел „Канал1СНазначение“ для дальнейшей передачи в информационную базу „Бухгалтерии предприятия“, в которой доступны сервисы интеграции. После обработки входящего сообщения в модуле сервиса интеграции будет сформировано ответное сообщение, которое будет отправлено в „1С:Шину“, а далее передано в исходную систему через http‑запрос.

Для того чтобы опубликовать приложение, необходимо настроить узел «Http», заполнив обязательные реквизиты.

Далее необходимо создать http‑сервис «1С:Шины», который будет использоваться для взаимодействия с информационной базой. Для этого нужно выбрать подсистему «Основной», далее нажать правую кнопку мыши — откроется контекстное меню, в котором нужно выбрать «Новый», далее «Элемент проекта».

После создания http‑сервиса нужно создать шаблон URL http‑сервиса. Для этого нужно выбрать ранее созданный http‑сервис, далее нажать правую кнопку мыши — откроется контекстное меню, в котором выбрать «Новый», далее «Шаблон URL HTTP Сервиса».

Формирование сообщения будет происходить из тела входящего http‑запроса, для этого в обработчике метода «ОтправитьСообщение» напишем следующий код:

метод ОтправитьСообщение(Запрос: HttpСервисЗапрос)
    если Запрос.Заголовки.Содержит("GetExchangeRate")
        знч Сообщение = новый СообщениеИнтеграции({"GetExchangeRate":Истина}, Запрос.Тело)
        ОбменДляСтарыхВерсий.ОтправитьСообщениеВУзлы(Сообщение, ОбменДляСтарыхВерсий.Схема.Узлы.ПрограммныйИсточник) 
    ;   
;

Здесь адрес http‑сервиса будет формироваться следующим образом: {АдресПубликацииПриложения}/api/{КорневойURLСервиса}/{ПутьКРесурсу}/{ПараметрыЗапроса}.

Для того чтобы обратиться к созданному http‑сервису, необходимо использовать следующий адрес:

«http://Адрес сервера 1С:Шины:Порт сервера 1С:Шины/applications/HTTPExample‑dev/api/exchange/sendmessage».

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

После завершения настройки нам останется только выполнить публикацию проекта. В дальнейшем к данной шине можно будет добавлять информационные системы, которые будут осуществлять обмен сообщениями с помощью HTTP.

Заключение

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


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

Если вы хотите системно развить эти компетенции, рекомендуем обратить внимание на курс «Архитектор 1С». Также можно пройти вступительный тест — узнаете, достаточно ли ваших текущих знаний для поступления на курс.

Отзыв студента курса Архитектор 1С
Отзыв студента курса Архитектор 1С

А тем, кто настроен на серьезное системное обучение, рекомендуем рассмотреть Подписку — выбираете курсы под свои задачи, экономите на обучении, получаете профессиональный рост. Узнать подробнее

Комментарии (0)