+ All Categories
Home > Documents > УНИВЕРСАЛЬНЫЙ СЕРВИС ИНТЕГРАЦИИ...

УНИВЕРСАЛЬНЫЙ СЕРВИС ИНТЕГРАЦИИ...

Date post: 06-Jun-2020
Category:
Upload: others
View: 16 times
Download: 0 times
Share this document with a friend
14
УНИВЕРСАЛЬНЫЙ СЕРВИС ИНТЕГРАЦИИ СИСТЕМ HIGHWAY SB ГК «ИВС», 2014 г.
Transcript
Page 1: УНИВЕРСАЛЬНЫЙ СЕРВИС ИНТЕГРАЦИИ СИСТЕМивс.рф/sites/default/files/highway_sb.pdf · разным в зависимости от их собственного

УНИВЕРСАЛЬНЫЙ СЕРВИС ИНТЕГРАЦИИ СИСТЕМ

HIGHWAY SB

ГК «ИВС», 2014 г.

Page 2: УНИВЕРСАЛЬНЫЙ СЕРВИС ИНТЕГРАЦИИ СИСТЕМивс.рф/sites/default/files/highway_sb.pdf · разным в зависимости от их собственного

ГК «ИВС». Highway SB Страница 2

Оглавление Введение. Сервисная шина предприятия ................................................................................................. 3

Ситуация «как есть» ................................................................................................................................ 3

Что предлагается ..................................................................................................................................... 4

Корпоративная сервисная шина ............................................................................................................ 5

Плюсы сервис-ориентированной архитектуры .................................................................................... 6

Highway SB .................................................................................................................................................... 6

Краткое описание Highway SB ................................................................................................................ 6

Архитектура Highway SB .......................................................................................................................... 7

Клиенты ................................................................................................................................................ 8

Внутренне устройство Highway SB...................................................................................................... 8

Сообщения ............................................................................................................................................... 8

Подписка .................................................................................................................................................. 9

Доставка измененных данных ............................................................................................................. 10

Техническое описание Highway SB ...................................................................................................... 11

Сообщения ......................................................................................................................................... 12

Сообщения с группой ........................................................................................................................ 13

События .............................................................................................................................................. 13

Callback ............................................................................................................................................... 13

Логирование .......................................................................................................................................... 14

Безопасность на уровне сообщений .................................................................................................... 14

Использование сертификатов .......................................................................................................... 14

Page 3: УНИВЕРСАЛЬНЫЙ СЕРВИС ИНТЕГРАЦИИ СИСТЕМивс.рф/sites/default/files/highway_sb.pdf · разным в зависимости от их собственного

ГК «ИВС». Highway SB Страница 3

Введение. Сервисная шина предприятия Аббревиатура SOA стала известным и отчасти раскольническим акронимом. Если спросить

двух ИТ-специалистов, что же такое SOA, то с большой долей вероятности мы получим два весьма

разных, возможно противоречивых, ответа. Некоторые описывают SOA как ИТ-инфраструктуру для

деловых возможностей, тогда как другие смотрят на SOA как на средство для повышения

эффективности информационных технологий.

Во многих отношениях, это похоже на притчу о слоне и нескольких слепых людях, которые

на ощупь давали определение, что же перед ними находится, и это определение было всегда

разным в зависимости от их собственного жизненного опыта (человек, касающийся хобота

думает, что это змея, тогда как один касаясь бивня думает, что это копье). Между тем, описывать

слона значительно легче, поскольку он существует как физическая сущность. Описывать

проектные философии значительно труднее, так как они не доступны как физическое проявление,

пока не будут реализованы.

Однако все сходятся во мнении, что архитектура SOA, представляет собой новый и вполне

закономерный этап эволюции корпоративных систем, направленный в первую очередь на

обеспечение интеграции создаваемых и существующих компонентов и минимизации затрат на эту

интеграцию.

Ситуация «как есть» 1. На сегодняшний день существует множество ИТ-компонентов,

функционирующих на различных платформах: mainframe, UNIX, Windows и т.д., зачастую

присутствующих в единой корпоративной среде. Этим большим разнообразием

чрезвычайно трудно управлять и довольно сложно обслуживать.

2. В худшем случае интеграция отсутствует.

3. В лучшем случае, каким-то образом налажен обмен информацией. В

основном интеграция осуществляется по мере необходимости между конкретными

компонентами (точка-точка).

4. Многие компоненты еще не окупились.

5. Пользователи привыкли работать с конкретными инструментами.

6. Не существует аналогов «старых» систем.

7. Существует отлаженный механизм взаимодействия определенных

компонентов.

8. Боязнь начинать «все с нуля».

Page 4: УНИВЕРСАЛЬНЫЙ СЕРВИС ИНТЕГРАЦИИ СИСТЕМивс.рф/sites/default/files/highway_sb.pdf · разным в зависимости от их собственного

ГК «ИВС». Highway SB Страница 4

Что предлагается В основном, многие предлагают использовать в качестве основного интегрирующего звена

Enterprise Service Bus (ESB) – Корпоративную Сервисную Шину. Некоторые вендоры называют

данный элемент SOA по-другому, но суть от этого не меняется…

В рамках SOA приложение должно строиться как набор Web-сервисов со

стандартизированным общим интерфейсом (WSSI), асинхронно взаимодействующих друг с

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

удобные механизмы организации передачи сообщений между программными сервисами. Для

этого и служит шина ESB, которая стандартизирует и организует указанные процессы.

Page 5: УНИВЕРСАЛЬНЫЙ СЕРВИС ИНТЕГРАЦИИ СИСТЕМивс.рф/sites/default/files/highway_sb.pdf · разным в зависимости от их собственного

ГК «ИВС». Highway SB Страница 5

Корпоративная сервисная шина В основу синхронизации данных различных информационных систем и баз данных в

предлагаемом решении положена сервис-ориентированная архитектура (SOA) и ее основной

компонент – корпоративная сервисная шина (ESB). Для всех интегрируемых информационных

систем, подключаемых к системе, должны быть разработаны специализированные адаптеры. При

помощи таких адаптеров источники данных будут подключены к ESB и смогут обмениваться

необходимой информацией в реальном времени.

Page 6: УНИВЕРСАЛЬНЫЙ СЕРВИС ИНТЕГРАЦИИ СИСТЕМивс.рф/sites/default/files/highway_sb.pdf · разным в зависимости от их собственного

ГК «ИВС». Highway SB Страница 6

Плюсы сервис-ориентированной архитектуры Используя центральную шину данных, становится возможным избавиться от

огромного числа прямых соединений приложений между собой. Вместо топологии

«каждый с каждым» получается топология «хаб», где каждый элемент общей системы

соединен с другим посредством центрального хаба, роль которого играет ESB.

Сервисная шина и сервис-ориентированная архитектура, позволяют сохранить

вложенные средства в уже существующие информационные системы, а также сэкономить

средства на переобучение персонала.

Такой подход позволяет с наименьшими затратами и постепенно планируя,

производить подключение существующих и вновь создаваемых информационных систем,

позволяет подключать модули для дополнительного преобразования информации,

поступающей для обмена между системами и производить перенаправление и

совершенствование обработки и анализа информации.

Highway SB

Краткое описание Highway SB Сервисная шина Highway SB – связующее ПО, обеспечивающее централизованный и

унифицированный событийно-ориентированный обмен информационными сообщениями между

различными информационными системами на принципах сервис-ориентированной архитектуры

(SOA).

Page 7: УНИВЕРСАЛЬНЫЙ СЕРВИС ИНТЕГРАЦИИ СИСТЕМивс.рф/sites/default/files/highway_sb.pdf · разным в зависимости от их собственного

ГК «ИВС». Highway SB Страница 7

Архитектура Highway SB Сервисная шина Highway SB состоит из:

Модуля приема и обработки сообщений.

Модуля отправки сообщений.

Базы данных для хранения сообщений.

С Highway SB взаимодействуют 2 типа клиентов:

Отправитель (sender) – выполняет отправку сообщений.

Приемник (listener) – принимает сообщения в синхронном или асинхронном

режимах.

Кроме того, сама шина может выступать в качестве Отправителя или Приемника. Также

возможен вариант, когда обе функции совмещены в одном клиенте.

Page 8: УНИВЕРСАЛЬНЫЙ СЕРВИС ИНТЕГРАЦИИ СИСТЕМивс.рф/sites/default/files/highway_sb.pdf · разным в зависимости от их собственного

ГК «ИВС». Highway SB Страница 8

Клиенты Клиенты характеризуются:

Наименованием.

Уникальным идентификатором.

URL-адресом.

Подписками на сообщения

o Callback

o Дата прекращения подписки

o Тип сообщения

o Протокол передачи (WCF, Mail, Web)

Внутренне устройство Highway SB Рассмотрим подробнее внутреннее устройство шины Highway SB:

1. Модуль приема и обработки сообщений. Блок приема сообщений

выполняет асинхронный или синхронный прием сообщений от Отправителя. Синхронная

отправка сообщений в шину осуществляется с помощью метода SendMessageToESB, а

асинхронная отправка сообщений осуществляется за счет метода SendMessageToESBAsync.

Кроме того, поддерживается отправка в шину сообщений с группой (при помощи метода

SendMessageToESBWithGroup), когда каждое сообщение помечается неким строковым

идентификатором (группой). В этом случае работа происходит следующим образом: если

сообщение с такой группой не содержится в шине, то оно просто записывается в БД, иначе

он "перетирает" находившееся ранее сообщение с такой же группой. Таким образом,

поддерживается актуальность находящихся сообщений в шине.

Далее, полученные сообщения переходят в блок обработки сообщений. Здесь

выполняется маршрутизация сообщений. На данный момент маршрутизация реализована

в виде реплицирования сообщения одного типа для нескольких подписчиков. После того,

как сформированы сообщения для всех подписчиков, они записываются в БД шины.

2. Модуль отправки сообщений. Клиенты типа Приемник могут вычитывать

сообщения из шины, используя следующие методы интерфейса IServiceBusService:

GetMessageFromESB – вычитка сообщения из шины по идентификатору

клиенту и типу сообщения. Сообщение приходит на клиент и удаляется из БД шины.

GetMessageWithGroupFromESB – вычитка сообщения из шины по ClientID,

типу сообщения и названию группы. Сообщение приходит на клиент и удаляется из БД

шины.

GetMessageWithTagsFromESB – вычитка сообщений из шины по ClientID,

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

все сообщения, набор тэгов которых является надмножеством запрашиваемых

наборов тэгов.

Сообщения В сообщении передается следующая информация:

Отправитель

Получатель

Время формирования

Тело

Вложение

Имя группы

Тип сообщения

Page 9: УНИВЕРСАЛЬНЫЙ СЕРВИС ИНТЕГРАЦИИ СИСТЕМивс.рф/sites/default/files/highway_sb.pdf · разным в зависимости от их собственного

ГК «ИВС». Highway SB Страница 9

Тэги

Системная информация

Подписка Для управления сервисной шиной Highway SB существует специальный программный

модуль – «Административное приложение». Модуль служит, в первую очередь, для подключения

систем (клиентов) к сервисной шине и отключения от неё, а также для организации подписки на

события и сообщения.

При регистрации источника данных в системе автоматически генерируется уникальный

идентификатор источника. Наименование источника вводится администратором и используется в

основном для отображения вместо идентификатора. Если источник (клиент) пользуется

подпиской с обратным уведомлением, то необходимым является указание адреса, на котором он

будет публиковаться (это адрес, на который сервисная шина будет посылать сообщения и

события, адресованные данному клиенту). Если использование подписок не планируется, данный

атрибут может быть оставлен пустым.

В административном приложении реализована возможность добавления новых типов

сообщений и событий, а также их редактирование и удаление. Каждый тип, как и клиент, имеет

сгенерированный системой уникальный идентификатор. Администратор определяет

наименование типа, а также, при необходимости, заполняет атрибут «Комментарий» для

фиксирования какой-либо дополнительной информации.

Для каждого клиента автоматически генерируется его идентификатор. Наименование

клиента вводится администратором и используется в основном для отображения вместо

идентификатора. Если клиент пользуется подпиской с обратным уведомлением, то необходимым

является указание адреса, на котором он будет публиковаться (это адрес, на который сервисная

шина будет посылать сообщения и события, адресованные данному клиенту). Если использование

подписок не планируется, данное поле может быть оставлено пустым.

На списковой форме «Тип события» реализована возможность добавления новых типов

сообщений, а также их редактирование и удаление. Каждый тип, как и клиент, имеет

сгенерированный системой идентификатор и введенное администратором наименование. Для

фиксирования какой-либо дополнительной информации предусмотрено поле «Комментарий».

Page 10: УНИВЕРСАЛЬНЫЙ СЕРВИС ИНТЕГРАЦИИ СИСТЕМивс.рф/sites/default/files/highway_sb.pdf · разным в зависимости от их собственного

ГК «ИВС». Highway SB Страница 10

В списковой форме «Подписка на сообщение» отображаются все текущие подписки

клиентов, а в списке сообщений – все сообщения, которые на данный момент содержатся в базе

сервисной шины. Так как данные списки используются в основном для наблюдения состояния и

поведения сервисной шины, то в них отображается вся известная информация, как, например,

наименование клиента или наименование типа сообщения.

Подписка организована как сопоставление клиента и сообщения. Кроме этого есть

возможность определить способ доставки сообщения для клиента:

1. Опрос сервисной шины. Клиент самостоятельно опрашивает шину.

2. Асинхронные сообщения (Callback). Шина по заранее установленному

адресу, оповещает клиента.

Доставка измененных данных Внутри информационных систем данные изменяются посредством ранее созданных

приложений. При интеграции систем между собой требуется реплицировать изменения из одной

системы в другую. Предусмотрен специальный механизм репликаций измененных данных:

При изменении данных источника (Отправитель), специальный сервис репликаций,

входящий в состав источника данных, отслеживает изменения и сообщает об этом

сервисной шине. При этом ссылки на измененные данные в определенном формате также

передаются в сервисную шину.

Сервисная шина получает информацию о том, что данные изменились. На

основании подписки других источников для них автоматически формируются сообщения.

В зависимости от типа подписки (опрос шины или Callback) сообщения и ссылки на

измененные данные передаются источникам (Приемникам).

Page 11: УНИВЕРСАЛЬНЫЙ СЕРВИС ИНТЕГРАЦИИ СИСТЕМивс.рф/sites/default/files/highway_sb.pdf · разным в зависимости от их собственного

ГК «ИВС». Highway SB Страница 11

Приемник принимает информацию о том, что данные изменились и по полученной

ссылке обращается за данными к Отправителю. В зависимости от прав доступа и прочих

настроек, Отправитель передает измененную информацию Приемнику.

Для запрета формирования «обратных» репликаций (зацикливания передачи изменений

между источниками), предусмотрен механизм подписки приходящих изменений. При начале

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

присваивается определенное состояние - «внешняя». При изменении локальной базы,

проверяется состояние и если состояние «внешняя», то репликации не создаются, и никакая

информация обратно в сервисную шину не передается.

Техническое описание Highway SB Мы позиционируем Highway SB как универсальное средство интеграции систем

посредством обмена сообщениями. В основе сервисной шины лежит технология WCF (Windows

Communication Foundation).

WCF делает возможным построение безопасных, надёжных и транзакционных систем через

упрощённую унифицированную программную модель межплатформенного взаимодействия.

Комбинируя функциональность существующих технологий .NET по разработке распределённых

приложений (ASP.NET XML Web Services — ASMX, WSE 3.0, .NET Remoting, .NET Enterprise Services и

System.Messaging), WCF предоставляет единую инфраструктуру разработки, повышающую

производительность и снижающую затраты на создание безопасных, надёжных и транзакционных

Web-служб нового поколения. Заложенные в нее принципы интероперабельности позволяют

легко добиваться взаимодействия с другими платформами, для чего используются технологии

взаимодействия платформ, например, WSIT, разрабатываемые на базе открытых источников кода.

Сервис WCF – это программа, которая публикует коллекцию конечных точек (Endpoints).

Каждая конечная точка представляет собой портал для сообщения с внешним миром. Клиент –

это программа, которая обменивается сообщениями с одной или несколькими конечными

точками. Клиент также может публиковать конечную точку для приема сообщений от сервиса для

реализации шаблона дуплексного обмена сообщениями.

Контракт конечной точки определяет, что составляет предмет общения конечной точки, и по

существу представляет собой коллекцию сообщений, собранных в операции в соответствии с

базовыми шаблонами обмена сообщениями такими, как симплекс, дуплекс, запрос/ответ.

Для интеграции шина предоставляет контракт, представляющий собой интерфейс, в

котором описываются методы для взаимодействия с сервисной шиной:

public interface IServiceBusService { #region Messages [OperationContract] MessageFromESB GetMessageFromESB(string ClientID, string MessageTypeID); [OperationContract] void SendMessageToESB(MessageForESB Message); [OperationContract] int GetCurrentMessageCount(string ClientID); [OperationContract] int GetCurrentThisTypeMessageCount(string ClientID, string MessageTypeID); [OperationContract] void SubscribeClientForMessageCallback(string ClientID, string MessageTypeID);

Page 12: УНИВЕРСАЛЬНЫЙ СЕРВИС ИНТЕГРАЦИИ СИСТЕМивс.рф/sites/default/files/highway_sb.pdf · разным в зависимости от их собственного

ГК «ИВС». Highway SB Страница 12

[OperationContract] void SendMessageToESBWithUseGroup(MessageForESB Message, string groupName); [OperationContract] MessageFromESB GetMessageWithGroupFromESB(string ClientID, string MessageTypeID, string groupName); #endregion #region Events [OperationContract] void SubscribeClientForEventCallback(string ClientID, string EventTypeID); [OperationContract] void RiseEventOnESB(string ClientID, string EventTypeID); [OperationContract] bool DoesEventRisen(string ClientID, string EventTypeID); #endregion }

Сообщения В контракте сервисной шины Highway SB используются типы данных

MessageFromESB

MessageForESB

Эти типы используются как контейнеры для упаковки сообщений и пересылки между

клиентами и сервисной шиной. Кроме тела сообщения, которое передается в зашифрованном

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

посылке сообщения сервисной шине следует указать идентификатор клиента-отправителя. А при

получении в контейнере присутствует дата формирования сообщения. Их описания выглядят

следующим образом:

[DataContract] public class MessageFromESB { [hidden fields] [DataMember] public virtual string Body[…] [DataMember] public virtual System.DateTime MessageFormingTime[…] [DataMember] public virtual string MessageTypeID[…] [DataMember] public virtual string SenderName[…] [DataMember] public virtual string GroupID[…] [DataMember] public virtual byte[] Attachment[…] } [DataContract] public class MessageForESB {

Page 13: УНИВЕРСАЛЬНЫЙ СЕРВИС ИНТЕГРАЦИИ СИСТЕМивс.рф/sites/default/files/highway_sb.pdf · разным в зависимости от их собственного

ГК «ИВС». Highway SB Страница 13

[hidden fields] [DataMember] public virtual string Body[…] [DataMember] public virtual string MessageTypeID[…] [DataMember] public virtual string ClientID[…] [DataMember] public virtual byte[] Attachment[…] [DataMember] public virtual int Priority[…] }

Стоит отметить, что в одном контейнере всегда передается только одно сообщение или

событие. Если сообщений несколько, то они передаются по очереди, в соответствии с

приоритетом. Сообщения с одинаковым приоритетом передаются в соответствии с дисциплиной

FIFO. Такое ограничение на контейнер значительно упрощает написание обработчика на стороне

клиента. При этом увеличение трафика пренебрежительно мало.

Сообщения с группой При обмене сообщениями при помощи ESB при отправке можно указывать группу

сообщения (строковый идентификатор). Сервисная шина, получив сообщение с группой, заменяет

предыдущее (если такое уже есть) сообщение с такой же группой новым.

События В контракте сервисной шины также описаны методы для взаимодействия с помощью

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

информационная составляющая сообщений (тело) не важна. Событие представляет собой

обычное сообщение, но не содержащее тела. Для использования событий также есть два

сценария: с Callback’ом и без него.

Callback Каждая заинтересованная в получении сообщений система также должна предоставить

сервис с конечной точкой, в которой указывается адрес, на который будут отправляться

сообщения. Для занесения сведений об адресах используется приложение администратора.

Сервисы клиентов должны реализовывать свой контракт:

[ServiceContract] public interface ICallbackSubscriber { [OperationContract] void AcceptMessage(MessageFromESB msg); [OperationContract] void RiseEvent(string ИдТипаСобытия); string GetSourceId(); }

Реализация этих методов для каждого из клиентов уникальна, так как полученное

сообщение может быть обработано произвольным образом.

Page 14: УНИВЕРСАЛЬНЫЙ СЕРВИС ИНТЕГРАЦИИ СИСТЕМивс.рф/sites/default/files/highway_sb.pdf · разным в зависимости от их собственного

ГК «ИВС». Highway SB Страница 14

Логирование Все действия, происходящие в шине, логируются:

поступление/отправка сообщений,

ошибки разного рода (о недоступности клиента, о недоступности БД и пр.).

Дополнительные возможности:

Просмотр клиентов и сообщений, у которых есть ошибки.

Для клиента и для сообщения можно просматривать связанные ошибки в логе.

Безопасность на уровне сообщений Используется безопасность на уровне сообщений, которая дает гарантию целостности и

конфиденциальности отдельных сообщений вне зависимости от поведения сети. Инфраструктура

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

защищено даже при передаче по незащищенному транспортному каналу (например, по

протоколу HTTP). В этом режиме для обеспечения конфиденциальности каждое сообщение

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

только сторона, знающая как его расшифровать. Безопасность основывается на сертификатах

стандарта X.509. Необходимость включения безопасности на уровне сообщений задается в

конфигурационном файле Highway SB и клиентов.

Использование сертификатов Необходимо получить сертификат для шины Highway SB и клиента.

Для шины сертификат устанавливается в хранилище сертификатов локального компьютера:

Servercert.pfx в папку Personal. Это позволяет расшифровывать сообщения,

зашифрованные клиентами ее открытым ключом, а также зашифровывать закрытым

ключом.

Clientcert.cer в папку Trusted People. Это позволит шине расшифровать сообщения,

зашифрованные закрытым ключом клиента, а также зашифровать сообщения

открытым ключом клиента.

Для клиента сертификат помещается в хранилище сертификатов текущего пользователя:

Clientcert.pfx в папку Personal. Это позволяет расшифровывать сообщения,

зашифрованные открытым ключом, а также зашифровывать закрытым ключом.

Servercert.cer в папку Trusted People. Это позволит расшифровать сообщения,

зашифрованные закрытым ключом шины, а также зашифровать сообщения

открытым ключом шины.


Recommended