Шаблоны интеграции: актуальные
инструменты и решения
Александр Бындю
www.byndyu.ru
7-я конференция .NET разработчиков
22 сентября 2013
www.dotnetconf.ru
Slide 2
Slide 2 text
Шаблоны интеграции: актуальные инструменты и решения, Александр Бындю 2
Обо мне
1. Владелец компании ByndyuSoft
http://www.byndyusoft.com
2. Консультант по вопросам разработки приложений и организации работы IT
компаний
3. Внештатный сотрудник Академии АйТи
4. Технический блог http://blog.byndyu.ru
5. Преподаю в ЮУрГУ
6. Тренер на AgileCamp
7. Организую конференции .NET-разработчиков
http://www.dotnetconf.ru
8. Веду группу по проблемам разработки приложений
https://groups.google.com/forum/?hl=ru&fromgroups#!forum/dotnetconf
Slide 3
Slide 3 text
Шаблоны интеграции: актуальные инструменты и решения, Александр Бындю 3
В какой момент жизни
приложения обычно
возникает задача
интеграции?
Slide 4
Slide 4 text
Шаблоны интеграции: актуальные инструменты и решения, Александр Бындю 4
Почему приходится интегрировать?
1. Невозможно одно приложение,
которое решит все бизнес-задачи
2. Программные пакеты от разных
поставщиков
3. Приложения созданы в разное
время
Slide 5
Slide 5 text
Шаблоны интеграции: актуальные инструменты и решения, Александр Бындю 5
Проблемы интеграции
1. Ненадежность передачи
данных
2. Низкая скорость передачи
данных
3. Различия между
приложениями
4. Неизбежность изменений
Простой интеграции не бывает
Slide 6
Slide 6 text
Шаблоны интеграции: актуальные инструменты и решения, Александр Бындю 6
Стили интеграции
File Transfer
Shared Database
Remote Procedure Invocation
Messaging
Slide 7
Slide 7 text
Шаблоны интеграции: актуальные инструменты и решения, Александр Бындю 7
File Transfer
Приложение 1 Приложение 2
Э
К
С
П
О
Р
Т
И
М
П
О
Р
Т
Slide 8
Slide 8 text
Шаблоны интеграции: актуальные инструменты и решения, Александр Бындю 8
Преимущества
1. Поддержка по всех ОС
2. Поддержка во всех языках
программирования
3. Просто передачи
File Transfer
Slide 9
Slide 9 text
Шаблоны интеграции: актуальные инструменты и решения, Александр Бындю 9
Недостатки
1. Много работы для интеграторов
2. Согласованность форматов
3. Несвоевременный обмен,
актуальность данных
4. Нет доступа к общим функциям
File Transfer
Slide 10
Slide 10 text
Шаблоны интеграции: актуальные инструменты и решения, Александр Бындю 10
Скачивание с FTP
File Transfer
Приложение 1
Приложение 2
Э
К
С
П
О
Р
Т
FTP сервер
Приложение 3
Приложение N
Slide 11
Slide 11 text
Шаблоны интеграции: актуальные инструменты и решения, Александр Бындю 11
Пересылка по почте
File Transfer
Приложение 1
Приложение 2
Э
К
С
П
О
Р
Т
Приложение 3
Приложение N
SMTP сервер
Slide 12
Slide 12 text
Шаблоны интеграции: актуальные инструменты и решения, Александр Бындю 12
Shared Database
Приложение 1 Приложение 2 Приложение 3
Slide 13
Slide 13 text
Шаблоны интеграции: актуальные инструменты и решения, Александр Бындю 13
Преимущества
1. Единый язык запросов
2. Согласованность данных для всех
приложений
3. Все преимущества СУБД
Shared Database
Slide 14
Slide 14 text
Шаблоны интеграции: актуальные инструменты и решения, Александр Бындю 14
Недостатки
1. Зависимость от схемы БД
2. Стороннее ПО со своим хранилищем
3. Узкое место в производительности
4. Географическая распределенность
5. Не инкапсулированные данные
6. Нет доступа к общим функциям
Shared Database
Slide 15
Slide 15 text
Шаблоны интеграции: актуальные инструменты и решения, Александр Бындю 15
Передача состояния обработки
Shared Database
1. Краулинг
данных
3. Расчет
аналитики
2. Обновление
данных в БД
Приложение 1 Приложение 2 Приложение 3
Slide 16
Slide 16 text
Шаблоны интеграции: актуальные инструменты и решения, Александр Бындю 16
Очередь через БД
Shared Database
Есть данные на
обработку?
Выбрать из
таблицы
Вставка данных
на обработку
в таблицу
Приложение 1
Приложение 2
Slide 17
Slide 17 text
Шаблоны интеграции: актуальные инструменты и решения, Александр Бындю 17
Remote Procedure Invocation
Приложение 1 Приложение 2
К
О
Н
Т
Р
А
К
Т
Р
Е
А
Л
И
З
А
Ц
И
Я
Вызов функции
Результат
Slide 18
Slide 18 text
Шаблоны интеграции: актуальные инструменты и решения, Александр Бындю 18
Преимущества
1. Работа в стандартном стиле вызова
функций
2. Инкапсуляция данных на уровне
интеграции
3. Существует стандартизация
Remote Procedure Invocation
Slide 19
Slide 19 text
Шаблоны интеграции: актуальные инструменты и решения, Александр Бындю 19
Недостатки
1. Сильная связанность
2. Сложность реализации асинхронной
работы
3. При поломки одной функции все
сломается
Remote Procedure Invocation
Шаблоны интеграции: актуальные инструменты и решения, Александр Бындю 21
Ошибки при сильной связанности
Remote Procedure Invocation
Приложение 1
Приложение 3
Приложение 2
Вызов сервиса
Вызов сервиса
Slide 22
Slide 22 text
Шаблоны интеграции: актуальные инструменты и решения, Александр Бындю 22
Рефакторинг
Remote Procedure Invocation
Приложение 1 Приложение 2
Веб-служба с
общими
функциями
Slide 23
Slide 23 text
Шаблоны интеграции: актуальные инструменты и решения, Александр Бындю 23
Инструменты
• .NET Remoting
• WCF, Web Services
• COM
• Любой способ, поддерживающий SOAP
Remote Procedure Invocation
Slide 24
Slide 24 text
Шаблоны интеграции: актуальные инструменты и решения, Александр Бындю 24
Обмен сообщениями
Примеры из реальной жизни:
• Телефонный разговор и автоответчик
• Почтовый ящик
Messaging
Шаблоны интеграции: актуальные инструменты и решения, Александр Бындю 26
Этапы передачи
Messaging
Отправитель Получатель
1. Создание 5. Обработка
2. Отправка
3. Доставка
4. Отправка
Канал
Slide 27
Slide 27 text
Шаблоны интеграции: актуальные инструменты и решения, Александр Бындю 27
Концепции
1. Send and forget
2. Store and forward
Messaging
Slide 28
Slide 28 text
Шаблоны интеграции: актуальные инструменты и решения, Александр Бындю 28
Сравнение с другими стилями
Messaging:
• быстрее, чем File Transfer
• лучшая инкапсуляция, чем в Shared DB
• более надежен, чем RPI
Messaging
Slide 29
Slide 29 text
Шаблоны интеграции: актуальные инструменты и решения, Александр Бындю 29
Преимущества
1. Частый и асинхронный обмен данными
2. Платформенная/языковая интеграция
(message bus)
3. Регулирование нагрузки
4. Работа без подключения к сети
5. Широковещательная рассылка,
маршрутизация
Messaging
Slide 30
Slide 30 text
Шаблоны интеграции: актуальные инструменты и решения, Александр Бындю 30
Недостатки
1. Сложная модель программирования
2. Порядок доставки
3. Ограничения по скорости ответа
4. Производительность
5. Посредник должен быть надежным
6. Инфраструктура обмена сообщениями
Messaging
Slide 31
Slide 31 text
Шаблоны интеграции: актуальные инструменты и решения, Александр Бындю 31
Репликация и опрос БД
Messaging
Есть новые
данные?
Р
Е
П
Л
И
К
А
Ц
И
Я
Удаленная БД
Шина сообщений
Приложение 1
Приложение 2
Есть новые
данные?
Slide 32
Slide 32 text
Шаблоны интеграции: актуальные инструменты и решения, Александр Бындю 32
Репликация и очередь
Messaging
Р
Е
П
Л
И
К
А
Ц
И
Я
Удаленная БД
trigger
Шина сообщений
Приложение 1 Приложение 2
Событие Событие
Slide 33
Slide 33 text
Шаблоны интеграции: актуальные инструменты и решения, Александр Бындю 33
Инструменты
• RabbitMQ (EasyNetQ)
• ActiveMQ
• NServiceBus
• Windows Azure Queue
• IronMQ (AWS)
• WebSphere MQ
Messaging
Slide 34
Slide 34 text
Шаблоны интеграции: актуальные инструменты и решения, Александр Бындю 34
RabbitMQ – отправка сообщения
using EasyNetQ;
internal static class Program
{
private static void Main()
{
IBus bus = RabbitHutch.CreateBus("...connection string...");
using (IPublishChannel channel = bus.OpenPublishChannel())
{
channel.Publish(new SomeDto {Name = "Hello, World!"});
}
}
}
Messaging
Slide 35
Slide 35 text
Шаблоны интеграции: актуальные инструменты и решения, Александр Бындю 35
RabbitMQ – подписка на очередь
using EasyNetQ;
internal static class Program
{
private static void Main()
{
IBus bus = RabbitHutch.CreateBus("...connection string...");
bus.Subscribe("MyQueueName", OnMessage);
}
private static void OnMessage(SomeDto dto)
{
// обработка сообщения
}
}
Messaging
Slide 36
Slide 36 text
Шаблоны интеграции: актуальные инструменты и решения, Александр Бындю 36
Какой способ выбрать?
1. Связывание приложений
2. Изменение приложений
3. Выбор технологии
4. Формат данных
5. Своевременность доставки сообщений
6. Общая функциональность
7. Удаленное взаимодействие
8. Надежность
Slide 37
Slide 37 text
Шаблоны интеграции: актуальные инструменты и решения, Александр Бындю 37
Спасибо за внимание!
Буду рад ответить на ваши
вопросы лично или через:
blog.byndyu.ru
alexanderbyndyu
[email protected]