Slide 1

Slide 1 text

Шаблоны интеграции: актуальные инструменты и решения Александр Бындю 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

Slide 20

Slide 20 text

Шаблоны интеграции: актуальные инструменты и решения, Александр Бындю 20 Взаимозависимость Remote Procedure Invocation Приложение 1 Приложение 3 Приложение 1 Вызов сервиса Вызов сервиса

Slide 21

Slide 21 text

Шаблоны интеграции: актуальные инструменты и решения, Александр Бындю 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

Slide 25

Slide 25 text

Шаблоны интеграции: актуальные инструменты и решения, Александр Бындю 25 Messaging Приложение 1 Приложение 2 Приложение 3 Шина сообщений Событие Событие Событие

Slide 26

Slide 26 text

Шаблоны интеграции: актуальные инструменты и решения, Александр Бындю 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]