Как стать автором
Поиск
Написать публикацию
Обновить

Microsoft BizTalk Server глазами новичка

Недавно по ходу работы мне пришлось познакомится с серверной технологией BizTalk от Microsot.
И мне очень не хватало внятного объяснения, что это, зачем и почему. Потратив некоторое время на разбирательство пришел к выводу, что не так страшен черт, как его малюют, и даже оказался сам способен (как мне кажется) написать подобную статейку.
Я не буду здесь приводить технических деталей или переписывать туториалы из Microsoft. Я хочу просто объяснить что это и зачем, что означают базовые понятия, что (надеюсь) поможет существенно облегчить дальнейшее ознакомление/изучение в MSDN (ну или отказаться от него, если не подходит/не нравится).

Итак, начнем с начала.

Что это?

В двух словах: BizTalk — универсальный преобразователь. Это узел, который соединит между собой любые (в том числе и legacy) внешние интерфейсы систем, возможна добавляя по ходу дела некую бизнес-логику.

Зачем?

К примеру если вы ведете бизнес с пятью внешними компаниями, каждая из которых имеет собственный внешний интерфейс, форматы данных и т.д., хотя сами данные однообразны — BizTalk Server — сравнительно простое (хотя и не дешевое) решение, которое избавит ваше приложение от знания о внешних системах вообще.

Как?

Внутри BizTalk работает только с XML. Соответственно любое сообщение преобразовывается в XML. Далее сообщение отправляется всем заинтересованым подписчикам (о них будет далее), базируясь на содержимом. Это, к примеру, позволяет писать имя получателя письма прямо внутри него же. Далее при отправке XML может преобразовыватся в формат понятный получателю. Такая система позволяет свободно использовать XSLT для преобразований внутри системы.
Общение с внешними системами осуществляется через систему «портов». Порт — некий механизм позволяющий принять информацию известным ему способом (из файла, FTP, POP3, DB, etc.), и преобразовать в XML — если порт входящий, и наоборот — если исходящий. В стандартной поставке имеется широкий ассортимент портов, на рынке есть и сторонние порты. Можно написать собственный на .Net.
С портом асоциируется конвейерная линия (в оригинале — pipeline), которая собственно отвечает за преобразование сообщения в XML. Можно выбрать из существующих, можно создать свою из строительных кирпичиков де/кодирования, де/шифрования, разбиения на элементы, как и готовых, так и самостоятельно написанных на .Net.
Так же можно прицепить к порту так называемый Map — имеется в виду преобразователь из одной схемы в другую. BizTalk использует собственный формат map'ов, который позволяет создавать их в графическом дизайнере, таская поля друг на дружку. Но, слава Богу, им хватило ума разрешить использование map'ом и обычного xslt (не вместо, а именно внутри — то-есть дли использования XSLT нужно создать map и внутри сказать — использовать вот-этот XSLT).
Исходящие порты, а так же орчестрейшины (о них опять таки, ниже), должны каким-то образом определять, в каких сообщениях они заинтересованы. BizTalk использует систему подписок — каждый желающий задает логическое выражение, которому должно соответствовать сообщение. Каждое сообщение после получения помещается в базу данных (так называемый Message Box), откуда каждому получателю, для которого это сообщение прошло фильтр оно выдается для дальнейшей обработки. Сообщения в системе неизменяемы, поэтому к конфликтам это не приводит.
Уже даже такая система довольно гибкая. Но и это еще не все. В BizTalk присутствует возможность создавать так называемые орчестрейшины (анг. Orchestration — не смог найти подходящего перевода, поэтому оставляю транслитерацию). Очестрейшн, как и исходящий порт, так же подписывается на сообщения, но в отличии от последнего, не отправляет сообщение, а каким-то образом его обрабатывает соотносительно бизнес-логики, создавая новые сообщения — причем эта обработка может быть очень сложной. Встроеный редактор позволяет фактически создавать блок-схемы обработки — находка для бизнес-аналитика (и головная боль для програмиста :) )

Надеюсь, эта статья поможет кому-то пройти тот путь, который у меня занял около недели за несколько часов.
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.