ОБ ОБЪЕДИНЕНИИ МОДУЛЕЙ НА ЯЗЫКАХ C++, DELPHI, C#, JAVA В ЕДИНУЮ ПРОГРАММУ Дипломная работа студента 6 курса Полетаева Дмитрия Геннадьевича Научный руководитель к.ф.-м.н., ассистент кафедры Алгебры и дискретной математики Клепинин Александр Владимирович Схема объединения программ Программа на С# Программа на С++ Модуль объединения для С# Модуль объединения для С++ Интеграционный сервер Модуль объединения для Delphi Программа на Delphi Модуль объединения для Java Программа на Java Схема объединения программ Программа на С# Программа на С++ Модуль объединения для С# Модуль объединения для С++ Интеграционный сервер Модуль объединения для Delphi Программа на Delphi Виртуальные каналы Модуль объединения для Java Программа на Java Удалённый вызов методов HOST1 y=calc("text"); HOST2 int calc(String S){ /*вычисления*/} Канал связи Удалённый вызов методов HOST1 y=calc("text"); Отсутствует определение метода Канал связи HOST2 int calc(String S){ /*вычисления*/} Удалённый вызов методов HOST1 y=calc("text"); HOST2 int calc(String S){ /*вычисления*/} ПРОКСИ: int calc(int x){ Делегирование вызова} Канал связи Удалённый вызов методов HOST1 y=calc("text"); С++ Java ПРОКСИ: int calc(int x){ Делегирование вызова} Маршалинг Демаршалинг Канал связи HOST2 int calc(String S){ /*вычисления*/} Удалённый вызов методов HOST1 y=calc("text"); HOST2 int calc(String S){ /*вычисления*/} ПРОКСИ: int calc(int x){ Делегирование вызова} Маршалинг Демаршалинг Диспетчер 1) Блокировка потока до получения ответа 2) Мультиплексирование запросов Канал связи Удалённый вызов методов HOST1 y=calc("text"); HOST2 int calc(String S){ /*вычисления*/} ПРОКСИ: int calc(int x){ Делегирование вызова} Маршалинг Демаршалинг С++ Диспетчер 1) Блокировка потока до получения ответа 2) Мультиплексирование запросов Канал связи Удалённый вызов методов ВЫЗЫВАЕМЫЙ МЕТОД 01 Упаковка запроса 02 Передача запроса 14 Распаковка результата МАРШАЛИНГ ПРОКСИ ДЕМАРШАЛИНГ ВЫЗЫВАЮЩИЙ МЕТОД МАРШАЛИНГ HOST2 ДЕМАРШАЛИНГ HOST1 ДИСПЕТЧЕР СЕРВИС 08 Распаковка запроса 09 Вызов метода 10 Упаковка результата ДИСПЕТЧЕР 03 Отправка запроса 04 Ожидание результата 13 Получение результата 06 Получение запроса 07 Вызов сервиса 11 Отправка результата КАНАЛ ПЕРЕДАЧИ 05 Передача запроса 12 Передача ответа Удалённый вызов методов ВЫЗЫВАЕМЫЙ МЕТОД 01 Упаковка запроса 02 Передача запроса 14 Распаковка результата МАРШАЛИНГ ПРОКСИ ДЕМАРШАЛИНГ ВЫЗЫВАЮЩИЙ МЕТОД МАРШАЛИНГ HOST2 ДЕМАРШАЛИНГ HOST1 ДИСПЕТЧЕР СЕРВИС 08 Распаковка запроса 09 Вызов метода 10 Упаковка результата ДИСПЕТЧЕР 03 Отправка запроса 04 Ожидание результата 13 Получение результата 06 Получение запроса 07 Вызов сервиса 11 Отправка результата КАНАЛ ПЕРЕДАЧИ 05 Передача запроса 12 Передача ответа Удалённый вызов методов ВЫЗЫВАЕМЫЙ МЕТОД 01 Упаковка запроса 02 Передача запроса 14 Распаковка результата МАРШАЛИНГ ПРОКСИ ДЕМАРШАЛИНГ ВЫЗЫВАЮЩИЙ МЕТОД МАРШАЛИНГ HOST2 ДЕМАРШАЛИНГ HOST1 ДИСПЕТЧЕР СЕРВИС 08 Распаковка запроса 09 Вызов метода 10 Упаковка результата ДИСПЕТЧЕР 03 Отправка запроса 04 Ожидание результата 13 Получение результата 06 Получение запроса 07 Вызов сервиса 11 Отправка результата КАНАЛ ПЕРЕДАЧИ 05 Передача запроса 12 Передача ответа Удалённый вызов методов ВЫЗЫВАЕМЫЙ МЕТОД 01 Упаковка запроса 02 Передача запроса 14 Распаковка результата МАРШАЛИНГ ПРОКСИ ДЕМАРШАЛИНГ ВЫЗЫВАЮЩИЙ МЕТОД МАРШАЛИНГ HOST2 ДЕМАРШАЛИНГ HOST1 ДИСПЕТЧЕР СЕРВИС 08 Распаковка запроса 09 Вызов метода 10 Упаковка результата ДИСПЕТЧЕР 03 Отправка запроса 04 Ожидание результата 13 Получение результата 06 Получение запроса 07 Вызов сервиса 11 Отправка результата КАНАЛ ПЕРЕДАЧИ 05 Передача запроса 12 Передача ответа Удалённый вызов методов ВЫЗЫВАЕМЫЙ МЕТОД 01 Упаковка запроса 02 Передача запроса 14 Распаковка результата МАРШАЛИНГ ПРОКСИ ДЕМАРШАЛИНГ ВЫЗЫВАЮЩИЙ МЕТОД МАРШАЛИНГ HOST2 ДЕМАРШАЛИНГ HOST1 ДИСПЕТЧЕР СЕРВИС 08 Распаковка запроса 09 Вызов метода 10 Упаковка результата ДИСПЕТЧЕР 03 Отправка запроса 04 Ожидание результата 13 Получение результата 06 Получение запроса 07 Вызов сервиса 11 Отправка результата КАНАЛ ПЕРЕДАЧИ 05 Передача запроса 12 Передача ответа Удалённый вызов методов ВЫЗЫВАЕМЫЙ МЕТОД 01 Упаковка запроса 02 Передача запроса 14 Распаковка результата МАРШАЛИНГ ПРОКСИ ДЕМАРШАЛИНГ ВЫЗЫВАЮЩИЙ МЕТОД МАРШАЛИНГ HOST2 ДЕМАРШАЛИНГ HOST1 ДИСПЕТЧЕР СЕРВИС 08 Распаковка запроса 09 Вызов метода 10 Упаковка результата ДИСПЕТЧЕР 03 Отправка запроса 04 Ожидание результата 13 Получение результата 06 Получение запроса 07 Вызов сервиса 11 Отправка результата КАНАЛ ПЕРЕДАЧИ 05 Передача запроса 12 Передача ответа Программа, использующая удалённый вызов методов Модуль объединения Обеспечение интерфейсов Прокси Сервисы Согласование типов данных Определения типов Маршалинг Демаршалинг Диспетчер Диспетчер Подсистема потоков управления Фильтр запросами пакетов Диспетчер пакетов Пакет данных Канал передачи Абстракции платформы Программа, использующая удалённый вызов методов Модуль объединения Обеспечение интерфейсов Прокси Сервисы Определения типов Вывод отладочной информации Примитивы синхронизации Согласование типов данных Настройка окружения Генераторы чисел типов Определения Маршалинг Демаршалинг Диспетчер Диспетчер Подсистема потоков управления Фильтр запросами пакетов Диспетчер пакетов Пакет данных Канал передачи Абстракции платформы Программа, использующая удалённый вызов методов Модуль объединения Обеспечение интерфейсов Прокси Сервисы Абстракция канала передачи Winsock реализация Согласование типов данных Определения типов Маршалинг Демаршалинг Диспетчер Диспетчер Подсистема потоков управления Фильтр запросами пакетов Диспетчер пакетов Пакет данных Канал передачи Абстракции платформы Программа, использующая удалённый вызов методов Модуль объединения Обеспечение интерфейсов Прокси Сервисы Согласование типов данных Определения типов Маршалинг Демаршалинг Диспетчер Диспетчер Подсистема потоков управления Фильтр запросами пакетов Диспетчер пакетов Пакет данных Канал передачи Абстракции платформы