Разработка технологии взаимодействия гетерогенных систем с использованием метапрограммирования Константинов Александр, 545 группа Научный руководитель : Соломатов К. В. Рецензент : Шкредов С. Д.
Основные идеи Трехзвенная архитектура Клиенты для разных платформ Удаленный вызов процедур Сервер базы данных Сервер прило- жений Клиент
Приложение Четыре клиента : Оконное приложение GWT Android iPad Языки программирования : Java ObjectiveC Сервер : AppEngine
Постановка задачи Исследовать существующие подходы Реализовать необходимые языки Создать генераторы для них Разработать метод кодирования данных Произвести внедрение
Существующие технологии Удаленный вызов процедур XML-RPC, JSON-RPC, SOAP,.NET Remoting, RMI, Corba и другие Минусы Тяжеловесны или сложны (Corba, Soap) Нет кроссплатформенности (.NET Remoting, RMI) Ограниченность функционала (Thrift) Нерациональная сериализация (XML-RPC)
Существующие технологии - 2 Сериализация Избыточность формата Избыточность структуры Отсутствие информации о передаваемых данных
Сжатие информации Основа алгоритма – алгоритм protobuf Оптимизации Объединение запросов Жесткая структура сообщений Дополнительная информация о сообщении Использование идентификаторов узлов
service myService { AccessLevel getAccess(User u) throws UserException; } messages MyMessages { enum AccessLevel { READ, WRITE, ADMIN } message Resource { int id; AccessLevel level; array editors; }
Генерация в Objective C Разработка паттернов Перечисления Анонимные классы Асинхронные вызовы Управление памятью
Результаты Исследованы существующие RPC и технологии сжатия Реализованы языки сообщений и сервисов Реализованы генераторы в Objective C и Java Разработан метод кодирования Создана поддержка событий – не было запланировано Проведена интеграция