Дипломная работа студента 545 группы




страница1/9
Дата25.08.2016
Размер0.61 Mb.
  1   2   3   4   5   6   7   8   9
Санкт-Петербургский Государственный Университет

Математико-механический факультет

Кафедра системного программирования


Разработка технологии взаимодействия гетерогенных систем с использованием метапрограммирования
Дипломная работа студента 545 группы
Константинова Александра Сергеевича

Научный руководитель

………………
/ подпись /

Соломатов К.В.

Рецензент

………………
/ подпись /

Шкредов С.Д.

“Допустить к защите”
заведующий кафедрой,

………………

/ подпись /



д.ф.-м.н., проф. Терехов А.Н.



Санкт-Петербург

2011

Saint-Petersburg State University

Mathematics and Mechanics Faculty

Software Engineering Department
Implementation of heterogenous system interoperability technology

with metaprogramming

Graduate paper by

Alexander Konstantinov
545 group


Scientific advisor

………………

K.V.Solomatov

Reviewer

………………

S.D.Shkredov

“Approved by”
Head of Department

………………

Professor A. N. Terekhov

Saint-Petersburg

2016

Оглавление


Введение 5

Постановка задачи 6

Глава 1. Обзор существующих решений 7

XML-RPC 7

SOAP 8

JSON-RPC 8



.NET Remoting 9

RMI 9


Corba 9

GWT-RPC 10

ONC-RPC 10

DCE/RPC 10

Routix-RPC 10

ZeroC 11


Burlap 12

Hessian 12

Abstract Syntax Notation One 12

Etch 13


Thrift 14

Protobuf 15

Kryo 17

Protostuff 18



Avro 18

Сравнение 18

- 19

Выводы из обзора 20



Глава 2. Алгоритм работы 21

Глава 3. Реализация 24

Выбор платформы 25

Язык асинхронных вызовов 27

Язык сообщений 28

Язык сервисов 30

Исключения 31

Генерация в Objective C 33

События 34

Тестирование 35

Глава 4. Внедрение 37

Заключение 38

Литература 40



Введение


В данный момент самой частой архитектурой приложений является трехзвенная архитектура, представляющая из себя клиент, сервер приложений, далее просто сервер, и сервер базы данных. При этом чаще всего клиенты должны быть реализованы для разных платформ и на разных языках. Самой сложной задачей становится процедура взаимодействия гетерогенных систем, поскольку сервер может быть написан на Java, а клиенты на одном из языков, которые чаще всего предоставлены для мобильных устройств: Java, Objective C, JavaScript (устройства типа iPad, android-клиенты, веб-клиенты).

Проект, в рамках которого был выполнен данный диплом, является приложением, имеющим различные клиенты: GWT, AWT, iPad, android. При этом каждый запущенный клиент постоянно делает запросы к серверу и получает от него ответы большого объёма. Поэтому реализация эффективного взаимодействия – первостепенная задача.

Существует множество решений для удаленного вызова процедур и для передачи данных, но у всех есть какие-либо недостатки: тяжеловесность, большое потребление трафика, низкая скорость кодирования, сложность использования, отсутствие поддержки какой-либо платформы, отсутствие необходимой функциональности, отсутствие возможности расширения, низкий уровень абстракции.

Если клиентское приложение запущено на мобильной платформе, то большой объём трафика является самым тонким местом, поскольку многие RPC реализованы на базе XML, который, как известно, крайне увеличивает объём передаваемой информации.

Кроме того, важной частью работы была возможность поддержки веб-клиента, поскольку он является одним из ключевых, так как у абсолютного большинства пользователей есть возможность запустить приложение из браузера. Изначально технологией для разработки был выбран фреймворк GWT, который позволяет писать код на Java, а затем транслировать его в JavaScript. В комплект поставки GWT входит GWT-RPC, но его реализация есть только для Java, а значит нужно использовать стороннее RPC. Практически никакое существующее решение не поддерживает данную технологию, так как создает код на Java, который не может быть транслирован в JavaScript.

Для достижения более высокого уровня абстракции, возможности расширения, было выбрано метапрграммирование [1], поскольку оно позволяет быстро и удобно создавать языки, создавать для них генераторы, отходить от парадигм каких-то конкретных языков программирования. Кроме того проект, для которого нужно было RPC, был реализован с помощью MPS [2], поэтому конкретной платформой для метапрграммирования был также выбран JetBrains MPS, чтобы добиться лучшего уровня и простоты интеграции.


Постановка задачи


В рамках проводимой работы было необходимо:

  • Исследовать существующие технологии взаимодействий сервера и клиентов, выявить ключевые моменты, сформировать необходимые требования к своему решению

  • Создать дизайн для языка сообщений

  • Реализовать язык для сообщений, которые будут передаваться. В эту часть входит задача создания кодирования и декодирования

  • Реализовать язык для сервисов, используя язык сообщений

  • Реализовать генераторы перечисленных выше языков для Java и Objective C. Для Java требуется как клиентская, так и серверная часть. Для Objective C требуется только клиентская часть

  • Внедрить решение в проект

  • Провести сравнение с существующими RPC

В поставленную задачу не входит реализация генераторов для большого числа языков, но требуется сделать возможность дальнейшего расширения количества поддерживаемых языков.

Реализация должна легко интегрироваться в проект, быстро кодировать и декодировать информацию, создавая при этом максимально компактные сообщения.


  1   2   3   4   5   6   7   8   9


База данных защищена авторским правом ©infoeto.ru 2016
обратиться к администрации
Как написать курсовую работу | Как написать хороший реферат
    Главная страница