Шаблоны интеграции корпоративных приложений
Проектирование, создание и развертывание решений, основанных на обмене сообщениями
Авторы:
Грегор Хоп
Бобби Вульф
Издательство: Вильямс, 2006
672 страниц
Аннотация
Содержание
Предисловие Джона Крупи
Предисловие Мартина Фаулера
Вступление
Для кого предназначена эта книга
Чему учит эта книга
Что не рассматривается в этой книге
Структура книги
Web-ресурс
Комментарий
Аннотация
В данной книге исследуются стратегии интеграции корпоративных приложений с помощью механизмов обмена сообщениями. Авторы рассматривают шаблоны проектирования и приводят практические примеры интеграции приложений, демонстрирующие преимущества обмена сообщениями и эффективность решений, создаваемых на основе этой технологии. Каждый шаблон сопровождается описанием некоторой задачи проектирования, обсуждением исходных условий и представлением элегантного, сбалансированного решения. Авторы подчеркивают как преимущества, так и недостатки обмена сообщениями, а также дают практические советы по написанию кода подключения приложения к системе обмена сообщениями, маршрутизации сообщений и мониторинга состояния системы.
Книга ориентирована на разработчиков программного обеспечения и системных интеграторов, использующих различные технологии и продукты для обмена сообщениями, такие как Java Message Service (JMS), Microsoft Message Queuing (MSMQ), IBM WebSphere MQ, Microsoft BizTalk, TIBCO, WebMethods, SeeBeyond, Vitria и др.
Содержание
Введение
Что такое обмен сообщениями?
Что такое система обмена сообщениями?
Преимущества обмена сообщениями
Недостатки асинхронного обмена сообщениями
Мыслим асинхронно
Распределенное приложение или интеграция приложений
Коммерческие системы обмена сообщениями
Форма шаблонов
Диаграммы, использованные в книге
Примеры и практикумы
Как организована эта книга
С чего начать
Поддержка
Резюме
Глава 1. Решение задач интеграции с помощью шаблонов проектирования
Необходимость интеграции
Трудности интеграции
Роль интеграционных шаблонов проектирования
Типы интеграционных задач
Слабое связывание
Пример простой интеграции
Компоненты слабосвязанного интеграционного решения
Пример: ''Приборы и устройства''
Внутренние системы
Размещение заказов
Обработка заказов
Проверка состояния заказа
Изменение адреса клиента
Обновление каталога товаров
Рассылка новостей
Тестирование и мониторинг
Резюме
Глава 2. Стили интеграции
Введение
Критерии интеграции приложений
Способы интеграции приложений
Передача файла (File Transfer)
Общая база данных (Shared Database)
Удаленный вызов процедуры (Remote Procedure Invocation)
Обмен сообщениями (Messaging)
Глава 3. Системы обмена сообщениями
Введение
Основные концепции обмена сообщениями
Об организации книги
Канал сообщений (Message Channel)
Сообщение (Message)
Каналы и фильтры (Pipes and Filters)
Конвейерная обработка
Параллельная обработка
История архитектуры каналов и фильтров
Маршрутизатор сообщений (Message Router)
Типы маршрутизаторов сообщений
Транслятор сообщений (Message Translator)
Уровни преобразования
Уровни связывания
Цепочечные преобразования
Конечная точка сообщения (Message Endpoint)
Глава 4. Каналы обмена сообщениями
Введение
Основные вопросы, связанные с применением каналов обмена сообщениями
Решения
Канал ''точка-точка'' (Point-to-Point Channel)
Канал ''публикация-подписка'' (Publish-Subscribe Channel)
Канал типа данных (Datatype Channel)
Канал недопустимых сообщений (Invalid Message Channel)
Канал недоставленных сообщений (Dead Letter Channel)
Гарантированная доставка (Guaranteed Delivery)
Адаптер канала (Channel Adapter)
Мост обмена сообщениями (Messaging Bridge)
Шина сообщений (Message Bus)
Глава 5. Построение сообщений
Введение
Сообщение с командой (Command Message)
Сообщение с данными документа (Document Message)
Сообщение о событии (Event Message)
Запрос-ответ (Request-Reply)
Обратный адрес (Return Address)
Идентификатор корреляции (Correlation Identifier)
Цепочка сообщений (Message Sequence)
Срок действия сообщения (Message Expiration)
Индикатор формата (Format Indicator)
Глава 6. Практикум: простой пример обмена сообщениями
Введение
Запрос-ответ
Публикация-подписка
Запрос-ответ (JMS)
Описание
Код
Обработка сообщения недопустимого формата
Итог
Запрос-ответ (.NET)
Описание
Код
Обработка сообщения недопустимого формата
Итог
Публикация-подписка (JMS)
Наблюдатель (Observer)
Наблюдатель (Observer) в распределенной среде
Публикация-подписка
Сравнение двух подходов
Модель с активным и пассивным источниками данных
Проектирование каналов
Итог
Глава 7. Маршрутизация сообщений
Введение
Простые маршрутизаторы
Составные маршрутизаторы
Архитектурные шаблоны
Выбор маршрутизатора сообщений
Маршрутизатор на основе содержимого (Content-Based Router)
Уменьшение зависимостей
Фильтр сообщений (Message Filter)
Фильтры с сохранением или без сохранения состояния
Функции фильтрации, встроенные в системы обмена сообщениями
Использование фильтров сообщений вместо маршрутизатора
на основе содержимого
Динамический маршрутизатор (Dynamic Router)
Список получателей (Recipient List)
Надежность
Динамический список получателей
Эффективность с точки зрения сети
Список получателей или канал ''публикация-подписка'' с фильтрами сообщений
Разветвитель (Splitter)
Итеративные разветвители
Статические разветвители
Упорядоченные или неупорядоченные дочерние сообщения
Агрегатор (Aggregator)
Детали реализации
Стратегии агрегации
Преобразователь порядка (Resequencer)
Порядковый номер
Внутреннее устройство
Борьба с переполнением буфера
Обработчик составного сообщения (Composed Message Processor)
Рассылка-сборка (Scatter-Gather)
Карта маршрутизации (Routing Slip)
Применение карты маршрутизации к унаследованным приложениям
Область применения
Реализация простого маршрутизатора с картой маршрутизации
Диспетчер процессов (Process Manager)
Управление состоянием
Экземпляры процесса
Корреляция
Сохранение состояния в сообщениях
Создание определения процесса
Сравнение диспетчера процессов с другими шаблонами
Брокер сообщений (Message Broker)
Глава 8. Преобразование сообщений
Введение
Устранение зависимостей
Управление метаданными
Преобразование данных в других схемах интеграции
Оболочка конверта (Envelope Wrapper)
Расширитель содержимого (Content Enricher)
Фильтр содержимого (Content Filter)
Квитанция (Claim Check)
Выбор ключа
Использование квитанции для сокрытия информации
Использование квитанции с диспетчером процессов
Нормализатор (Normalizer)
Определение формата сообщения
Каноническая модель данных (Canonical Data Model)
Способы преобразования
Двойное преобразование
Разработка канонической модели данных
Зависимости между форматами данных
Глава 9. Практикум: сложный обмен сообщениями
Пример: кредитный брокер
Выбор процентной ставки по кредиту
Проектирование потока сообщений
Режим выполнения операций: синхронный или асинхронный
Адресация: распределение или аукцион
Стратегии агрегации: несколько каналов или один
Управление одновременным доступом
Три реализации
Синхронная реализация с использованием Web-служб
Архитектура решения
Соображения по поводу проектирования Web-служб
Транспортный протокол
Выбор между синхронным и асинхронным обменом сообщениями
Стиль кодирования
Стиль привязки
Надежность и безопасность
Набор средств Apache Axis
Поиск расположения службы
Приложение кредитного брокера
Компоненты приложения кредитного брокера
Принятие запроса клиента
Запрос и получение данных от кредитного бюро
Реализация службы кредитного бюро
Получение значений процентной ставки
Реализация банковских операций
Клиентское приложение
Запуск решения
Анализ выходных данных
Ограничения производительности
Ограничения данного примера
Резюме
Асинхронная реализация с использованием MSMQ
Экосистема локального брокера
Закладываем основы: шлюз обмена сообщениями
Базовые классы для общей функциональности
Компонент банка
Компонент кредитного бюро
Компонент кредитного брокера
Шлюз кредитного бюро
Шлюз банка
Прием запросов кредитным брокером
Обработка сообщений
Оптимизация кода кредитного брокера
Запуск системы
Повышение производительности
Несколько слов о тестировании
Изоляция приложения от реализации обмена сообщениями
Тестирование бизнес-логики с помощью тестов модулей
Создание ''суррогатной'' реализации слоя обмена сообщениями
Ограничения данного примера
Резюме
Асинхронная реализация с использованием TIBCO ActiveEnterprise
Архитектура решения
Набор средств, используемых для реализации
TIB/RendezVous
TIB/IntegrationManager
TIBCO Repository
Интерфейсы
Реализация синхронных служб
Определение класса AE
Определение операций класса AE
Создание диаграммы процесса
Создание клиент/серверного канала для получения запросов
Настройка генератора заданий для создания экземпляра диаграммы процесса
Процесс кредитного брокера
Некоторые соображения по поводу проектирования
Реализация модели процесса
Управление параллельными аукционами
Выполнение
Резюме
Глава 10. Конечные точки обмена сообщениями
Введение
Шаблоны отправки и получения сообщений
Шаблоны потребителей сообщений
Некоторые аспекты реализации конечных точек
Шлюз обмена сообщениями (Messaging Gateway)
Соединение шлюзов в цепочки
Обработка исключений системы обмена сообщениями
Генерация кода шлюзов
Использование шлюзов в процессе тестирования
Преобразователь обмена сообщениями (Messaging Mapper)
Упрощение кодирования
Преобразователь или транслятор
Транзакционный клиент (Transactional Client)
Отправка-получение пары сообщений
Группа сообщений
Координация ''сообщение - база данных''
Координация ''сообщение - рабочий поток''
Опрашивающий потребитель (Polling Consumer)
Событийно управляемый потребитель (Event-Driven Consumer)
Конкурирующие потребители (Competing Consumers)
Диспетчер сообщений (Message Dispatcher)
Избирательный потребитель (Selective Consumer)
Постоянный подписчик (Durable Subscriber)
Идемпотентный получатель (Idempotent Receiver)
Активатор службы (Service Activator)
Глава 11. Управление системой
Введение
Мониторинг и управление
Наблюдение и анализ трафика сообщений
Тестирование и отладка
Шина управления (Control Bus)
Обходной путь (Detour)
Отвод (Wire Tap)
Журнал доставки сообщения (Message History)
Хранилище сообщений (Message Store)
Интеллектуальный заместитель (Smart Proxy)
Тестовое сообщение (Test Message)
Вентиль канала (Channel Purger)
Глава 12. Практикум: управление системой
Управление системой кредитного брокера
Оснащение кредитного брокера средствами контроля
Управляющая консоль
Качество обслуживания кредитного брокера
Проверка функциональности кредитного бюро
Перемещение при сбое кредитного бюро
Усовершенствование управляющей консоли
Ограничения примера, приведенного в этой главе
Глава 13. Шаблоны интеграции на практике
Практикум: система формирования цен на облигации
Построение системы
Архитектура с учетом шаблонов
Структура каналов
Выбор канала сообщений
Решение проблемы с помощью шаблонов
Мигающие ячейки
Сбой системы в процессе работы
Резюме
Глава 14. Кое-что в заключение
Новые стандарты и перспективы интеграции корпоративных приложений
Связь между стандартами и шаблонами проектирования
Основные организации, занимающиеся утверждением стандартов
Компоненты бизнес-процессов и внутренний
обмен сообщениями между Web-службами
ebXML и ebMS
BPEL4WS
WSCI
Стандарты компонентов бизнес-процессов для Java
Process Definition for Java (JSR-207)
Java Business Integration (JSR-208)
Спецификации WS-*
WS-Coordination и WS-Transaction
WS-Reliability и WS-ReliableMessaging
WS-Conversation
WS-Security
WS-Addressing, WS-Policy и другие спецификации WS-*
Заключение
Приложение А. Список шаблонов проектирования
Приложение Б. Шаблоны интеграции корпоративных приложений
Основные источники информации
Предметный указатель
Предисловие Джона Крупи
Как вы реагируете на появление новой технологии? Вы изучаете ее. Столкнувшись с платформой J2EE, я не нашел ничего лучшего, кроме как обратиться к ее спецификациям (книг по J2EE на то время еще не существовало). В частности, я сконцентрировал свое внимание на подмножестве J2EE технологии EJB. Тем не менее изучение технологии является лишь первым шагом к ее эффективному применению. Преимущество платформенных технологий состоит в том, что они ограничивают разработчика определенным кругом задач. К сожалению, это не исключает неверного применения самой технологии.
По моим наблюдениям, за последние 15 лет в умах разработчиков программного обеспечения прочно укоренились идеи эффективного программирования и проектирования. В настоящее время на рынке существует огромное количество книг по программированию на Java и C#, однако гораздо меньше по проектированию приложений. Написав книгу Core J2EE Patterns, мы с Дипаком Алуром (Deepak Alur) и Дэном Малксом (Dan Malks) хотели помочь J2EE-разработчикам в создании более эффективного кода. Основная идея нашей книги заключалась в использовании шаблонов проектирования. Как отметил Джеймс Бейти (James Baty), главный инженер компании Sun Microsystems, "шаблоны являются краеугольным камнем проектирования". Я полностью согласен с этим высказыванием. К счастью, так же считают и авторы настоящей книги.
Книга, которую вы держите в руках, посвящена чрезвычайно популярной в последнее время теме: интеграции приложений с помощью обмена сообщениями. На мой взгляд, идея обмена сообщениями найдет свое применение не только при интеграции приложений, но и при создании Web-служб. Как это было на заре появления технологий J2EE и .NET, вопросам проектирования Web-служб уделяется пока еще очень мало внимания. Многие считают, что Web-службы являются всего лишь новым способом решения существующих задач интеграции, и я полностью с этим согласен. Тем не менее это не отменяет необходимость проектирования самих Web-служб. Изюминка данной книги состоит в наличии большого количества шаблонов, которые можно применять при проектировании Web-служб и других интеграционных систем. Бобби и Грегор не балуют читателя конкретными примерами спецификаций Web-служб, поскольку они все еще нуждаются в доработке и утверждении. Впрочем, это вполне простительно. Подлинная ценность книги проявится после объявления соответствующих спецификаций стандартами, что позволит использовать предложенные шаблоны проектирования для разработки соответствующих этим стандартам приложений. Вполне вероятно, что создание архитектур, ориентированных на использование служб, станет основным способом интеграции приложений в ближайшем будущем.
Прочтите эту книгу от начала до конца. Она способна кардинально изменить вашу карьеру.
Джон Крупи
Бетесда, Мэриленд
Август 2003 г.
Предисловие Мартина Фаулера
В процессе написания книги Patterns of Enterprise Application Architecture мне посчастливилось получить подробную рецензию на включенный в нее материал от Кайла Брауна (Kyle Brown) и Рейчел Рейниц (Rachel Reinitz). В результате нескольких неофициальных встреч в офисе Кайла в Роли-Дарем мы пришли к выводу, что самым существенным пробелом моей книги стали системы асинхронного обмена сообщениями.
Безусловно, моя книга содержит множество пробелов и не претендует на звание исчерпывающего источника информации по шаблонам проектирования корпоративных приложений. Тем не менее отсутствие в ней описания систем асинхронного обмена сообщениями особенно болезненно ввиду того, что эти системы будут играть ключевую роль при решении задач интеграции. Приложения не могут существовать обособленно одно от другого, и нам нужны методики, позволяющие наладить связь между приложениями, изначально не предусматривавшими возможность взаимодействия.
На сегодняшний день существует множество различных технологий интеграции приложений. На мой взгляд, наиболее многообещающей из них является обмен сообщениями. Организация эффективного обмена сообщениями нетривиальная задача, сложность которой обусловливается асинхронной природой сообщений, а также различиями в подходах к асинхронному программированию.
К сожалению, мне не хватило времени, сил и, что самое главное, знаний, чтобы достойно раскрыть тему обмена сообщениями в Patterns of Enterprise Application Architecture. Тем не менее я все-таки нашел решение этой проблемы в виде Грегора и Бобби, взявшихся за написание книги, которую вы сейчас держите в руках.
Следует отметить, что авторы блестяще справились с поставленной перед ними задачей. Если вы уже работали с системами обмена сообщениями, настоящая книга поможет вам систематизировать накопленный опыт и знания. Если же вы только приступаете к изучению данной темы, книга поспособствует закладке прочного фундамента, который пригодится вам при использовании любой технологии обмена сообщениями.
Мартин Фаулер
Мелроуз, Массачусетс
Август 2003 г.
Вступление
Эта книга посвящена интеграции корпоративных приложений с помощью обмена сообщениями. В ней не рассматриваются конкретные технологии или продукты. Вместо этого она ориентирована на разработчиков и интеграторов, использующих различные технологии и продукты для обмена сообщениями, такие как:
- MOM- и EAI-решения IBM WebSphere MQ, Microsoft BizTalk, TIBCO, WebMethods, SeeBeyond, Vitria и др.;
- реализации спецификации Java Message Service (JMS), внедренные в серверы приложений J2EE, а также в отдельные продукты;
- служба Microsoft Message Queuing (MSMQ), доступная через различные API, например через классы пространства имен Microsoft .NET System.Messaging;
- новые стандарты Web-служб, поддерживающие асинхронный обмен сообщениями (например, WS-ReliableMessaging), а также соответствующие API, такие как Java API for XML Messaging (JAXM) от Sun Microsystems или Web Services Extensions (WSE) от Microsoft.
Интеграция корпоративных приложений означает нечто большее, чем создание распределенного приложения с n-уровневой архитектурой. Тогда как отдельный уровень распределенного приложения не может выполняться самостоятельно, интегрированные приложения представляют собой независимые сущности, способные к взаимной координации по принципу слабой связи. Обмен сообщениями позволяет нескольким приложениям передавать данные и команды по сети в соответствии с подходом "отправил и забыл". Последнее позволяет вызывающему приложению отправить информацию и вернуться к выполнению текущей задачи, переложив всю ответственность за доставку информации на систему обмена сообщениями. При необходимости вызывающее приложение может быть уведомлено о результате доставки информации с помощью функции обратного вызова. Несмотря на то что по сравнению с синхронным обменом сообщениями асинхронный подход способен усложнить проектирование приложения, возможность неограниченного числа повторов асинхронного вызова способна существенно повысить надежность коммуникаций. Асинхронный обмен сообщениями обладает и другими преимуществами, такими как регулирование числа запросов и балансировка нагрузки.
Для кого предназначена эта книга
Эта книга призвана помочь разработчикам приложений и системным интеграторам наладить взаимодействие между приложениями с помощью средств, ориентированных на обмен сообщениями. В первую очередь, она предназначена для следующих специалистов.
- Архитекторы и разработчики, проектирующие и создающие сложные корпоративные приложения, которые нуждаются в интеграции с другими приложениями. Мы ориентируемся на разработчиков приложений, использующих современные платформы, такие как Java 2 Enterprise Edition (J2EE) и Microsoft .NET. С помощью этой книги вы научитесь соединять приложение с уровнем обмена сообщениями для взаимодействия с другими приложениями. Следует отметить, что предметом рассмотрения этой книги является исключительно интеграция приложений, а не их создание. Шаблоны проектирования, применяющиеся при создании корпоративных приложений, рассматриваются в книге Мартина Фаулера Patterns of Enterprise Application Architecture.
- Архитекторы и разработчики, проектирующие и создающие интеграционные решения, предназначенные для налаживания взаимодействия между пользовательскими приложениями. Вероятно, большинство читателей этой книги уже сталкивались с коммерческими средствами интеграции приложений, такими как IBM WebSphere MQ, TIBCO, WebMethods, SeeBeyond, Vitria и др. Каждое из этих средств содержит реализацию многих шаблонов проектирования, представленных в книге. Помимо фундаментальных концепций, стоящих за интеграцией приложений, принимать правильные решения при проектировании вам поможет универсальный язык шаблонов, не зависящих от конкретного вендора.
- Корпоративные архитекторы, в обязанности которых входит мониторинг программных и аппаратных активов предприятия. Язык и графическое представление шаблонов проектирования помогут описать крупномасштабные решения интеграции, охватывающие множество различных технологий. Кроме того, язык шаблонов поможет наладить эффективное взаимодействие между корпоративным архитектором и архитекторами/разработчиками корпоративных приложений и решений интеграции.
Чему учит эта книга
- Основное назначение этой книги познакомить читателя с принципами проектирования успешных решений интеграции корпоративных приложений. В процессе ее чтения вы узнаете:
- преимущества и ограничения асинхронного обмена сообщениями в сравнении с другими технологиями интеграции;
- как определить каналы обмена сообщениями, в которых нуждается приложение; регламентировать процедуру получения одного и того же сообщения несколькими потребителями; обрабатывать сообщения неправильного формата;
- когда следует отправлять сообщение, какую информацию оно должно содержать и как использовать специальные свойства сообщений;
- как доставить сообщение в конечную точку его назначения (в том числе и при отсутствии информации о получателе сообщения);
- как преобразовать сообщение при несовпадении формата отправителя и получателя;
- как спроектировать код соединения приложения с системой обмена сообщениями;
- как проводить управление и мониторинг системы обмена сообщениями.
Что не рассматривается в этой книге
- На наш взгляд, все книги, в названиях которых встречается слово "корпоративный", делятся на три категории. К первой категории относятся книги, авторы которых стараются всецело охватить предмет обсуждения, однако в конечном итоге останавливаются на подробном рассмотрении конкретных решений. Книги второй категории содержат практические советы по разработке конкретных решений, ограничивая при этом диапазон рассматриваемого материала. Наконец, можно попытаться написать книгу, объединяющую в себе лучшие характеристики первых двух категорий, однако в этом случае она либо не будет закончена, либо будет опубликована настолько поздно, что потеряет свою актуальность. Настоящая книга относится ко второй категории. Мы попытались написать книгу о создании интеграционных решений, пожертвовав при этом некоторыми смежными темами. В частности, мы не рассматривали вопросы безопасности, сложного отображения данных, рабочих потоков, механизма поддержки правил, масштабируемости, устойчивости, а также распределенной обработки транзакций (продукты XA, Tuxedo и др.). Асинхронный обмен сообщениями был выбран основной темой книги по нескольким причинам. Во-первых, это одна из наиболее перспективных технологий интеграции приложений, которой свойственно множество интереснейших вопросов проектирования. Во-вторых, рассмотрение асинхронного обмена сообщениями позволяет абстрагироваться от реализации конкретных решений интеграции, предлагаемых различными вендорами.
- Эта книга не является руководством по конкретной технологии обмена сообщениями или межплатформенному решению. Чтобы подчеркнуть многообразие концепций, представленных в книге, мы включили в нее примеры использования целого ряда различных технологий, таких как JMS, MSMQ, TIBCO, BizTalk и XSL. Каждая из перечисленных технологий рассматривалась исключительно в аспекте принятия решений проектирования и возникающих при этом компромиссов. Для подробного изучения какой-либо из технологий интеграции приложений обратитесь к источникам, перечисленным в конце книге, или к ресурсам Интернета.
Структура книги
- Как следует из названия книги, большая ее часть посвящена шаблонам. Шаблоны это проверенный способ представления накопленного опыта и знаний в таких областях, как архитектура программных приложений, объектно-ориентированное проектирование и создание интеграционных решений с помощью технологий обмена сообщениями.
- Каждый шаблон состоит из описания некоторой проблемы проектирования, обсуждения исходных условий и представления элегантного, сбалансированного решения. В большинстве случаев предлагаемое решение является результатом длительного процесса поиска. Каждый шаблон "вбирает" в себя опыт, накопленный старшими разработчиками и архитекторами в попытке дать оптимальный ответ на конкретную задачу интеграции. Хотим подчеркнуть, что в этой книге нет "придуманных" нами шаблонов. Шаблон нельзя "придумать"; к нему можно прийти в результате длительных "полевых" испытаний, извлекая уроки из собственных ошибок.
- Если вы уже имеете опыт работы со средствами интеграции корпоративных приложений и с архитектурой асинхронного обмена сообщениями, то большинство из представленных в этой книге шаблонов наверняка покажутся вам до боли знакомыми. Однако даже в этом случае она может принести немалую пользу. Чтение книги поможет закрепить знания, накопленные в результате использования технологий обмена сообщениями, а также поспособствует развитию привычки документирования создаваемых решений и взаимоотношений между ними. Благодаря универсальному языку шаблонов вы сможете наладить эффективное взаимодействие со своими коллегами.
- Представленные в книге шаблоны можно реализовать с помощью различных платформ и языков программирования. Чтобы облегчить процесс встраивания шаблона в конкретную среду, в книгу были включены примеры реализации шаблонов с привлечением нескольких популярных технологий, таких как JMS, MSMQ, TIBCO, BizTalk, XSL и др. Кроме того, мы продемонстрировали примеры создания целостных решений, основанных на сочетании шаблонов проектирования.
- Интеграция корпоративных приложений с помощью архитектуры асинхронного обмена сообщениями сложная и увлекательная задача. Искренне надеемся, что наша книга поможет вам блестяще решить ее.
Web-ресурс
Enterprise Integration Patterns Web Site - сайт Грегора, на котором множество информации на тему интеграции приложений с использованием сообщений.
Комментарий
Денис Миллер, Инструктор Luxoft
Очередная книга серии "The Addison-Wesley Signature Series" раскрывает читателям секреты и опыт разработчиков в области интеграции сложных бизнес-систем. Складывается впечатление, что книги этой серии содержат некий учебный план для разработчиков, как альтернатива университетскому образованию. В университете получают научные знания, а в этой серии передаются практические навыки.
О книге. Книга создавалась параллельно с уже известной нам книгой Мартина Фаулера "Архитектура корпоративных приложений". Мартин преднамеренно упустил большую и сложную часть инженерных решений, посвященных взаимодействию в n-уровневой архитектуре. Этот пропуск восполнила книга " Enterprise Integration Patterns". В ней представлено множество решений, о которых большинство из нас, не имея общего формата знаний, интуитивно догадывается или даже использует. Авторы проделали большую работу по выделению среди множества удачных программ неких единых принципов построения связей в распределённых приложениях. И, самое главное, построили из выделенных принципов строгую систему, в которой легко ориентироваться (см. карту решений в начале главы 3).
Тем, кто сталкивался с одним из сетевых протоколов (например, TCP/IP) более детализовано, книга покажется простой, тем не менее рекомендую её просмотреть. Для тех, у кого нет опыта разработки сетевых приложений, книга будет удачным стартом, как в область системного программирования протоколов низкого уровня, так и при использовании всевозможных бизнес-надстроек (Biztalk и др.). Полезна будет и гуру Message Queue в качестве обобщения и сравнения с альтернативными решениями от различных производителей. Можно заметить, что в предлагаемых примерах крен в сторону интеграции за счет системы передачи сообщений. Действительно, в книге выделена только одна область - область "обмена сообщениями" (Messaging). Но даётся сравнительный обзор и других вариантов обмена данными. Кстати, обзор альтернативных методов сделал Мартин Фаулер. В лучших традициях описания паттернов (patterns) предлагается аргументация, почему лучше применять то или иное решение. Тем, кто полагает, что система с асинхронными сообщениями панацея, параграф в начале книги, раскроет ее недостатки ("Challenges of Asynchronous Messaging").
Остановимся на различных методах коммуникации. Обмен файлами (File Transer) - способ, когда одно приложение копирует файл в общедоступное место для других приложений. Приложение-приёмник обнаруживает новый файл, скачивает и запускает процедуру обработки. Общая база данных (Share Database) - в данном случае несколько приложений имеют доступ к единой базе данных, через таблицы которой происходит обмен. Вызов удалённых процедур (Remote Procedure Invocation) - приложения имеют ряд процедур, которые доступны внешним приложениям. Заинтересованное приложение инициирует вызов, в результате которого выполняются действия на удалённой машине и происходит обмен данных. Последний вариант - обмен сообщениями (Messaging). В таком случае каждое приложение подключено к единой системе, через которую передаются сообщения, содержащие данные и команды на выполнение.
Обобщённая схема работы системы на базе передачи сообщений такова: create - send - delivery - receive - process (см. "What Is a Messaging System?"). А структура следующая: 1) сообщение (message), 2) канал (message channel), 3) маршрутизатор (routing), 4) преобразователь (message translator), 5) потребитель (message endpoint). Понятие сообщений (глава 5) и каналов (глава 4) не должно вызывать трудностей. Маршрутизация (глава 7) отвечает за механизм построения пути передачи сообщения. Преобразователи (глава 8) в зависимости от целей системы изменяют передаваемое сообщение с целью адаптации под интерфейс принимающей системы. Последнее, на что стоит обратить внимание - это потребители (глава 10), удачное построение которых так же влияет на всю систему.
Кому полезна эта книга? Преимущественно архитекторам приложений уровня предприятия и интеграционным архитекторам. Отчасти полезна разработчикам сетевых протоколов в качестве теоретической основы и знакомства с обобщённым опытом гуру.
Выводы: очередной справочник опыта. Кажется, пора организовывать программу самостоятельной подготовки, в основе которой будет серия самых лучших книг в отрасли корпоративных приложений. Надеюсь, первый курс обойдётся 10 книгами.